distribution.techdistribution.tech

MCP tool

Find creators

creators_search

Approved X creators that reach your audience: the list is the segments you pass in match, else your brand's own audience; a segment you name without match.

Overview

Approved X creators that reach your audience: the list is the segments you pass in match, else your brand's own audience; a segment you name without match replaces your audience as the filter; q, reach_band and the filters narrow it (with no brand audience on file, q, reach_band or a filter alone lists every approved creator they match; a call that names none and has no brand audience on file is refused with filter_required), best fit for your audience first, priced or not, a page at a time: limit (default 24, at most 50) and offset, with total saying how many there are and priced how many of them have something on sale now; catalog gives the whole network's counts whatever the filter (catalog.approved approved creators, catalog.priced of them bookable now, the same numbers the app shows), and is left out when the network cannot be counted. Each row has reach, followers, brands worked with, the all-in price per format (original post, quote repost, thread) and which format fits your goal; a creator with nothing on sale has price_estimate instead, an estimated range from its metrics, never a price. Rows carry no handle, link or posts: creator_get opens one creator in full, without its X handle or any x.com link (those show on a paid plan's quote). Not-reviewed, declined, paused and brand-safety blocked creators are never listed. Every creator a page shows is one of your workspace's 300 creator views a day, one pool for the app and every API key; one already seen today is free, and past 300 the list answers rate_limited, reason daily_seen.

Server
https://app.distribution.tech/api/mcp
Scope
creators:read
Changes data
No, a read
REST endpoint
GET /creators

Arguments

Arguments of creators_search
NameTypeRequiredDescription
qstringNoPart of a name or bio. A handle is not searched: creator_get opens one creator, handle included.
segmentstringNoAn audience segment, e.g. ai, developers, saas_b2b, crypto, marketing, finance.
reach_bandone of "nano", "micro", "mid", "macro", "mega"NoThe creator's size by followers, smallest to largest: nano, micro, mid, macro, mega.
goalone of "launch", "funding", "feature", "program" or one of "awareness", "signups"NoThe campaign's goal: launch, funding or feature (an announcement with a post of yours to quote) or program (steady reach). Shapes the post or quote advice.
matcharray of stringNoYour audience segments (the segment ids from resolve_audience): ranks by match score, the recommended set.
limitintegerNoPage size: default 24, at most 50.
offsetintegerNoWhere the page starts; page through every approved creator with total.
fitbooleanNotrue: only creators reaching at least one of the match segments (the 'fit your audience' set); total then counts only those.
countrystringNoThe creator's country as X reports it, exact and case-insensitive, e.g. United States.
languagestringNoThe language the creator posts in, exact and case-insensitive, e.g. English.
followers_minnumberNoAt least this many X followers.
followers_maxnumberNoAt most this many X followers.
er_minnumberNoAt least this engagement rate over the last 30 days, in percent (0 to 100, two decimals).
match_minnumberNoAt least this match score (0 to 100; over 70 strong, over 50 good). Needs match.
formatstringNoOnly creators selling this format; price and price filters then read that format's price.
price_minnumberNoThe cheapest all-in price (of the format, when one is given) is at least this many US dollars.
price_maxnumberNoThe cheapest all-in price (of the format, when one is given) is at most this many US dollars.
sortstringNoOrder: match (default, best fit first), followers, engagement, views (median views a post) or price (cheapest all-in price).
dirstringNodesc (default) or asc.
budgetnumberNoThe campaign budget in US dollars. It sizes the shortlist (three times the posts it buys at the good fits' median price, 10 to 50); without it the list is 25. It never filters.

Call with curl

The server speaks streamable HTTP, so one JSON-RPC tools/call request runs the tool. Set DISTRIBUTION_API_KEY to a key from Developers with the creators:read scope; the arguments shown are the required ones.

curl
curl -X POST "https://app.distribution.tech/api/mcp" \
  -H "Authorization: Bearer $DISTRIBUTION_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "creators_search",
    "arguments": {}
  }
}'

Result

The answer's structuredContent follows the tool's output schema (the same JSON is in its text content). It has these fields:

Result fields of creators_search
NameTypeRequiredDescription
totalintegerNoHow many creators this answer lists: the shortlist, never a count of the network.
pricedintegerNoHow many of total are bookable now by the one rule in the API description (What bookable means); the rest carry price_estimate, never a price.
catalogobjectNoThe whole network, whatever this call filtered: the same counts as the app and the site (GET /api/network/facts on the app host), refreshed at most every five minutes. Left out when the network cannot be counted right now, never guessed.
capintegerNoHow many creators the selection holds (the same as total).
limitintegerNoThis page's size: default 24, at most 50.
offsetintegerNoWhere this page starts, at most total (an offset past the end is answered as total); the next page starts at offset + limit while it is below total.
creatorsarray of objectNoSummary rows, best fits first by score and in the order asked for: no handle, link or posts. GET /creators/{id} (creator_get) opens one in full.
structuredContent, every field with its type
{
  "total": 0,
  "priced": 0,
  "catalog": {
    "approved": 0,
    "priced": 0
  },
  "cap": 0,
  "limit": 0,
  "offset": 0,
  "creators": [
    {
      "id": "<uuid>",
      "name": "<string>",
      "status": "approved",
      "status_label": "<string>",
      "status_reason": "<string>",
      "in_automatic_plans": false,
      "match_score": 0,
      "match_label": "<string>",
      "on_sale": false,
      "reach_band": "nano",
      "median_views_30d": 0,
      "median_views_30d_network": 0,
      "followers": 0,
      "verified_badge": false,
      "country": "<string>",
      "language": "<string>",
      "segments": [
        "<string>"
      ],
      "bio": "<string>",
      "positioning": "<string>",
      "avatar_url": "<string>",
      "ask_price": false,
      "price_estimate": {
        "min_usd": 0,
        "max_usd": 0,
        "label": "<string>",
        "provenance": {
          "source": "<string>",
          "method": "<string>",
          "measured_at": "<string>",
          "expires_at": "<string>",
          "label": "Verified",
          "stale": false,
          "as_of": "<string>"
        },
        "calc": {
          "calc_version": "<string>",
          "inputs": {}
        }
      },
      "engagement_rate_30d": 0,
      "posts_per_week": 0,
      "match_reasons": [
        {
          "kind": "topic",
          "text": "<string>"
        }
      ],
      "past_collabs": [
        {
          "project": "<string>",
          "title": "<string>",
          "date": "<date>",
          "role": "Launch post",
          "brand": {
            "avatar_url": "<string>",
            "site": "<string>",
            "initials": "<string>"
          }
        }
      ],
      "offerings": [
        {
          "unit_id": "<uuid>",
          "format": "post",
          "label": "<string>",
          "deliverable": "<string>",
          "price_cents": 0,
          "buyable": false,
          "price_as_of": "<date>",
          "expected_views": 0,
          "cost_per_1k_views_cents": 0,
          "provenance": {
            "source": "<string>",
            "method": "<string>",
            "measured_at": "<string>",
            "expires_at": "<string>",
            "label": "Verified",
            "stale": false,
            "as_of": "<string>"
          },
          "calc": {
            "calc_version": "<string>",
            "inputs": {}
          }
        }
      ],
      "synced_at": "<date-time>",
      "refresh_failed_at": "<date-time>",
      "advice": {
        "recommended": "post",
        "reason": "<string>"
      },
      "views_series": [
        0
      ]
    }
  ]
}

Get access

Keys are created in Developers once your brand is approved. Connect an agent to ask for access, then read the agent guide for the full flow.