Docs

MCP server

Starlecta MCP Server — Influencer discovery and competitive intelligence

Starlecta's public influencer tools, open to an AI agent over the Model Context Protocol: look up an influencer, compare two accounts on the same method, search by filters or one sentence, and read the weekly Trend Cloud. The data covers the Turkey market on Instagram.

01

What it is

This is Starlecta's hosted MCP server. An agent (Claude, Cursor, VS Code or your own client) connects to this address, lists the 5 tools and calls them. The tools run the same path as the free tools on the website, so the answers are the same.

An account comes back as "open" (public follower count and a dated, measured engagement rate), "tracked" (name, tier, category; no metric) or "not_listed". Every other field is a locked placeholder. The Starlecta Quality Score is not part of these tools for named accounts.

02

Endpoint and transport

03

Authentication and key

For the tools that need a key, the agent registers itself once: POST a JSON body to https://starlecta.com/api/agent/keys with "label" (up to 80 characters), "email" and "use" (up to 200 characters). The answer shows a key that starts with "slk_" once; Starlecta keeps only a hash. Send "Authorization: Bearer slk_..." on every request.

Keys per address and per day are limited: get one key and reuse it. Do not put it in a public page, a repository or a prompt others can read. To revoke it: support@starlecta.com. Details: https://starlecta.com/auth.md

curl
curl -X POST https://starlecta.com/api/agent/keys \
  -H "Content-Type: application/json" \
  -d '{"label":"my-agent","email":"you@example.com","use":"Shortlist beauty creators for a campaign brief"}'
04

Tools

Tool names, titles, descriptions and input schemas come from the server as written here; this list is generated from the same source.

lookup_influencer

Look up an influencer. Public card of one Instagram influencer Starlecta tracks: tier, category, rounded followers and the measured engagement rate with its date. Status is open, tracked or not_listed.

Inputs

FieldTypeRequiredNote
handlestringyesInstagram handle, with or without @
Example call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "lookup_influencer",
    "arguments": {
      "handle": "example_handle"
    }
  }
}
Example output shape (illustrative values, fields shortened)
{
  "schema": "px11-lookup-v2",
  "status": "open",
  "profile": {
    "handle": "example_handle",
    "display_name": "Example Name",
    "platform": "instagram",
    "profile_url": "https://www.instagram.com/example_handle/",
    "category": "beauty",
    "tier": "macro",
    "followers": {
      "rounded": 250000,
      "unit": 10000,
      "as_of": "2026-10-20",
      "missing_reason": null
    }
  },
  "engagement": {
    "state": "measured",
    "rate": 2.4,
    "unit": "percent",
    "window_days": 90,
    "items_90d": 31,
    "as_of": "2026-10-20",
    "missing_reason": null
  },
  "quality_score": {
    "locked": true
  },
  "method_url": "https://starlecta.com/en/methods/engagement"
}

compare_influencers

Compare two influencers. Two influencers side by side on the same method and dates: followers, engagement rate and an engagement band.

Inputs

FieldTypeRequiredNote
astringyesInstagram handle, with or without @
bstringyesInstagram handle, with or without @
Example call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "compare_influencers",
    "arguments": {
      "a": "example_handle",
      "b": "other_handle"
    }
  }
}
Example output shape (illustrative values, fields shortened)
{
  "schema": "px11-compare-v2",
  "a": {
    "status": "open",
    "profile": {
      "handle": "example_handle",
      "tier": "macro",
      "followers": {
        "rounded": 250000
      }
    },
    "engagement": {
      "state": "measured",
      "rate": 2.4
    }
  },
  "b": {
    "status": "open",
    "profile": {
      "handle": "other_handle",
      "tier": "macro",
      "followers": {
        "rounded": 100000
      }
    },
    "engagement": {
      "state": "measured",
      "rate": 1.9
    }
  },
  "comparable": {
    "both_open": true,
    "same_tier": true,
    "er_both_measured": true,
    "er_dates_gap_days": 0,
    "er_dates_within_limit": true
  },
  "bands": {
    "engagement": {
      "band": "higher",
      "reason": null
    }
  },
  "notes": []
}

search_influencers

Search influencers by filters. Count of matching influencers and up to two open cards. Filters: category code, tier (nano, micro, macro, mega), follower bounds, measured engagement only.

Inputs

FieldTypeRequiredNote
categorystringnoCategory code, e.g. beauty, fashion_style, tech_business_education
tiernano | micro | macro | megano
followers_minintegerno
followers_maxintegerno
er_measuredbooleanno
Example call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "search_influencers",
    "arguments": {
      "category": "beauty",
      "tier": "micro",
      "er_measured": true
    }
  }
}
Example output shape (illustrative values, fields shortened)
{
  "schema": "px11-search-v1",
  "status": "ok",
  "filters": {
    "category": "beauty",
    "tier": "micro",
    "followers_min": null,
    "followers_max": null,
    "er_measured": true
  },
  "count": 128,
  "count_label": null,
  "open_cards": [
    {
      "status": "open",
      "profile": {
        "handle": "example_handle",
        "tier": "macro",
        "followers": {
          "rounded": 250000
        }
      },
      "engagement": {
        "state": "measured",
        "rate": 2.4
      }
    }
  ],
  "locked_count": 126
}

ai_search_influencers

AI search for influencers. One sentence in Turkish or English (2 to 200 characters), read as filters and niche words. Returns the count, up to two open cards with a match share and the niches that matched.

Inputs

FieldTypeRequiredNote
sentencestringyes2-200 characters
Example call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ai_search_influencers",
    "arguments": {
      "sentence": "micro beauty creators in Turkey with measured engagement"
    }
  }
}
Example output shape (illustrative values, fields shortened)
{
  "schema": "px11-ai-search-v1",
  "status": "ok",
  "parsed_filters": {
    "category": "beauty",
    "tier": "micro",
    "followers_min": null,
    "followers_max": null,
    "er_measured": true
  },
  "parsed_niches": [
    "skincare"
  ],
  "degraded": false,
  "count": 41,
  "count_label": null,
  "open_cards": [
    {
      "status": "open",
      "profile": {
        "handle": "example_handle",
        "tier": "macro",
        "followers": {
          "rounded": 250000
        }
      },
      "engagement": {
        "state": "measured",
        "rate": 2.4
      }
    }
  ],
  "open_matches": [
    {
      "match": 82,
      "niches": [
        "skincare"
      ]
    }
  ],
  "locked_count": 40
}

trend_cloud

Trend Cloud. What influencers share in the last 7 days: rising hashtags with post counts, and the most shared products, platforms and brands with share counts. Aggregate counts only; no key needed.

Example call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "trend_cloud",
    "arguments": {}
  }
}
Example output shape (illustrative values, fields shortened)
{
  "period": "last_7_days",
  "computed_at": "2026-10-30T03:00:00Z",
  "hashtags": [
    {
      "tag": "example",
      "posts": 120
    }
  ],
  "products": [
    {
      "name": "Example product",
      "brand": "Example brand",
      "shares": 45
    }
  ],
  "platforms": [
    {
      "name": "Example platform",
      "shares": 300
    }
  ],
  "brands": [
    {
      "name": "Example brand",
      "shares": 210
    }
  ],
  "source": "https://starlecta.com/en/tools/trend-cloud"
}
05

Limits and error behaviour

  • Per key, per day: lookup 30, compare 15, search 30, AI search 10. 6 requests per minute, all tools together. These are launch values; the answer that issues your key lists yours.
  • A shared daily total across all keys also applies (its size is not published), separate from the visitor limits. trend_cloud does not count against the key or tool limits.
  • At the MCP entry: 60 requests per minute per IP address; the body is at most 16 KiB.
  • 429: a limit was reached. Wait the number of seconds in Retry-After. A 429 from inside a tool comes back as a result flagged "isError" with the text "Retry after N seconds".
  • A keyed tool called with no key or a wrong key returns a result flagged "isError" that says how to get a key (a JSON-RPC result inside HTTP 200). 401 with {"error":"invalid_key"} appears on the plain HTTP endpoints. A revoked key is refused the same way.
  • Browser calls (with an Origin header) are accepted only from the Starlecta site; server and command-line clients send no Origin.
  • Do not copy the catalogue, build lists in bulk or get around the limits with several keys; a key may be revoked without notice. Terms of use: https://starlecta.com/en/terms
06

Data freshness

  • Every figure carries its date: the engagement rate comes with "as_of" and a 90-day window ("window_days": 90), and its state is "measured", "stale" or "not_measured". Quote a figure together with its date.
  • When you compare two accounts, "er_dates_gap_days" and "er_dates_within_limit" show how far apart the two measurements are; if they are too far apart the band is "not_comparable".
  • Data is collected daily and scores are refreshed daily. The 7-day window of Trend Cloud refreshes nightly and the answer carries "computed_at".
  • Method: https://starlecta.com/en/methods/engagement
07

Client setup

Keep the key in an environment variable (STARLECTA_KEY) rather than in a file. The formats below were checked against each client's official documentation: Cursor takes url and headers in mcp.json and resolves ${env:NAME}; VS Code uses the top-level "servers" key, type "http" and "inputs" for secrets; Claude Code takes "--transport http" and "--header".

Claude Desktop's custom connectors (Settings > Connectors) take a URL and leave authentication to the server's own flow, usually OAuth. This server has no OAuth, so a connector reaches trend_cloud only. For the keyed tools use "mcp-remote" in the config file. On Windows, write the header without a space after the colon and put "Bearer ..." in an environment variable, as the example does.

Custom connectors in ChatGPT developer mode work with OAuth or with no authentication. We could not confirm that a key can be sent as a header there, so in ChatGPT only trend_cloud works. For the keyed tools use the REST endpoints (https://starlecta.com/auth.md) or one of the clients above.

Cursor: .cursor/mcp.json
{
  "mcpServers": {
    "starlecta": {
      "url": "https://starlecta.com/mcp",
      "headers": {
        "Authorization": "Bearer ${env:STARLECTA_KEY}"
      }
    }
  }
}
VS Code: .vscode/mcp.json
{
  "inputs": [
    {
      "type": "promptString",
      "id": "starlecta-key",
      "description": "Starlecta agent key",
      "password": true
    }
  ],
  "servers": {
    "starlecta": {
      "type": "http",
      "url": "https://starlecta.com/mcp",
      "headers": {
        "Authorization": "Bearer ${input:starlecta-key}"
      }
    }
  }
}
Claude Code
claude mcp add --transport http starlecta https://starlecta.com/mcp \
  --header "Authorization: Bearer $STARLECTA_KEY"
Claude Code: .mcp.json
{
  "mcpServers": {
    "starlecta": {
      "type": "http",
      "url": "https://starlecta.com/mcp",
      "headers": {
        "Authorization": "Bearer ${STARLECTA_KEY}"
      }
    }
  }
}
Claude Desktop: claude_desktop_config.json
{
  "mcpServers": {
    "starlecta": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://starlecta.com/mcp",
        "--transport",
        "http-only",
        "--header",
        "Authorization:${STARLECTA_AUTH}"
      ],
      "env": {
        "STARLECTA_AUTH": "Bearer slk_..."
      }
    }
  }
}
08

Find, compare, shortlist

For a campaign brief the usual flow is four calls. They have the same shape as the examples above.

  • Find: send one sentence to ai_search_influencers ("micro beauty creators in Turkey with measured engagement") or give search_influencers a category, tier and er_measured. The answer holds the count and up to two open cards; locked identities are never listed.
  • Look: open one of the returned open cards with lookup_influencer and read "engagement.state", "rate" and "as_of".
  • Compare: put two candidates through compare_influencers, on the same method and dates, and read "comparable" and "bands.engagement.band".
  • Shortlist: keep the candidates with a measured rate, the same size group and close measurement dates. Present every figure with its date; ask for a demo for the detailed panel.

Definitions as of 30 October 2026