FAQ

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 6 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

No key is needed: calls without a key are tied to your network and get the per-key daily limits. To keep your usage under your own key, send "Authorization: Bearer slk_...". For your own 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 every day: 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; the best candidates are then scored for relevance (detailed mode, 10 to 20 seconds). Returns the count and up to two strong matches as open cards, each with a relevance score from 0 to 100, the niches that matched, and an overall score (0 to 100, fixed scale, shown beside relevance; cards are ordered by relevance, ties by overall); sometimes one or none. The ranking field tells how they were chosen. An optional safety object (flagged true, reason filtered or sensitive_condition) says details were withheld for privacy or safety; it never repeats the words.

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": null,
      "niches": [
        "skincare"
      ],
      "relevance": 82
    }
  ],
  "ranking": "relevance",
  "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"
}

audit_influencer

Global Account Check. Reads one public Instagram account live and returns dated, counted metrics: followers, engagement rate over the latest items with n, average likes and comments, median Reel plays, posting frequency, Stories seen now, last post. Public accounts with 10,000+ followers. Not a score. Limited daily. Accounts Starlecta tracks every day show more in lookup_influencer.

Inputs

FieldTypeRequiredNote
handlestringyesInstagram handle, with or without @
Example call
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "audit_influencer",
    "arguments": {
      "handle": "example_handle"
    }
  }
}
Example output shape (illustrative values, fields shortened)
{
  "schema": "px11-audit-v1",
  "status": "ok",
  "handle": "example_handle",
  "display_name": "Example Name",
  "profile_url": "https://www.instagram.com/example_handle/",
  "fetched_at": "2026-10-30T20:41:07Z",
  "cache": {
    "hit": false,
    "expires_at": "2026-10-31T20:41:07Z"
  },
  "followers": {
    "rounded": 250000,
    "unit": 10000
  },
  "posts_total": 812,
  "engagement": {
    "state": "measured",
    "median_pct": 2.31,
    "mean_pct": 2.64,
    "items_used": 12,
    "items_fetched": 12,
    "hidden_likes_items": 0,
    "window_from": "2026-10-04",
    "window_to": "2026-10-29"
  },
  "averages": {
    "likes": 5120.5,
    "comments": 74.2,
    "items_used": 12
  },
  "reels": {
    "state": "measured",
    "median_plays": 48210,
    "reels_used": 9
  },
  "posting": {
    "last_30d": 12,
    "truncated": true,
    "per_week": null,
    "items_used": 12
  },
  "stories": {
    "state": "seen",
    "seen_now": 3
  },
  "last_post_on": "2026-10-29",
  "notes": [
    "stories_absence_not_proof"
  ],
  "methodology": "audit-v1"
}
05

Limits and error behaviour

  • Per key, per day: lookup 30, compare 15, search 30, AI search 10, Global Account Check 5. 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 call without a key runs on an automatic key. If the automatic key cannot be issued right now, or a wrong key is sent, the tool returns a result flagged "isError" (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 and needs no key, so a connector reaches every tool without one. To use your own key 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 every tool works without a key. To use your own key 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 strong matches as open cards, each with a relevance score from 0 to 100 (sometimes one or none; the call takes 10 to 20 seconds); 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 31 October 2026