Creator Sponsor MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Creator Sponsor MCPanalyze @mkbhd and estimate sponsored post pricing"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Creator Sponsor MCP
A sponsorship marketplace for X creators, run by your agent. It analyses a creator's public X profile and recent posts to work out their niche, audience, content style and engagement. It estimates a price per sponsored post with a transparent formula, ranks creators against a brand's product brief, and runs the deal: offer, accept, verify the post (author, content, link and #ad disclosure), then record the payout.
Every state change is previewed and needs your confirmation.
It never posts to X and never moves money.
Its only network access is read-only GETs to
api.x.com, and only when you set a token.
How it works
creator: analyze_creator -> save_creator_profile (niche, audience, engagement, $ range)
brand: match_creators -> create_offer (explainable ranking, requirement + disclosure)
creator: respond_to_offer (accept) -> posts on X with #ad
anyone: verify_deal_post (fetch post, run checks) -> verified
brand: pays in X Money / bank -> record_payout (ref) -> paidThe server returns structured data plus a narrative_prompt. Your agent writes the prose, so there are no LLM keys inside the server.
Related MCP server: @aryaminus/socials-mcp
Tools
Read-only (readOnlyHint: true)
Tool | Purpose |
| Active X source ( |
| Profile + metrics + price estimate + |
| Saved creator profiles |
| Ranks saved creators for a brief, with niche, audience and budget components, reasons and a suggested offer |
| Deals, status counts, history, verification checks, payout |
| Providers ( |
Writes: two-step preview then confirm (readOnlyHint: false)
Tool |
| Purpose |
| true (replaces the previous snapshot) | Analyse and save or refresh a creator; optional |
| true | Refused while the creator has open deals; past deals and payouts are kept |
| false | Brand offer: amount, product, required phrases or link, disclosure markers, |
| false |
|
| true |
|
| false | Fetches the post and checks author, phrases, link, disclosure, and that it was posted after acceptance. Can only be confirmed if every check passes. |
| false |
|
Lifecycle: offered → accepted → verified → paid, or declined / cancelled.
Pricing formula
price = (expected_impressions / 1000) × CPM × engagement_multiplier
expected_impressions = median impressions of recent posts × 0.8 (or followers × 5% × 0.8 if no impression data)
engagement_multiplier = sqrt(engagement_rate / 1%), clamped to [0.5, 2.0]
engagement_rate = interactions / impressions (or avg interactions per post / followers)CPM bands are per-niche planning assumptions in USD, from $4–10 for General and News up to $15–30 for Finance. They are not market quotes. Every estimate returns its inputs and assumptions, so a brand can see exactly why it got that number. See src/analysis.ts.
Matching score
score = 0.5 × niche_fit + 0.2 × audience_fit + 0.3 × budget_fit
Niche fit is the overlap between the brief's detected or chosen niches and the creator's niche shares.
Audience fit is reduced when the creator is below the minimum followers or posts in the wrong language.
Budget fit compares the creator's estimated range with the budget.
Every result lists its reasons.
Payouts
The payout step uses a pluggable PayoutProvider interface (src/payout.ts):
manual(default) is a ledger entry. You pay the creator yourself, for example in X Money, and record the transaction reference.x_moneyis a stub, pending a public X Money payouts API. It always refuses and tells you to pay in X Money and record the payment withmanual. When X publishes a payouts API, this adapter is where it would plug in, still behind preview and confirm.
Install
Requires Node.js 20+. Add the plugin, or put this in .mcp.json:
{
"mcpServers": {
"creator-sponsor": {
"command": "npx",
"args": ["-y", "https://github.com/ppiotis/creator-sponsor-mcp/archive/refs/tags/v1.0.0.tar.gz"],
"env": {
"X_BEARER_TOKEN": "<optional: X API v2 app-only bearer token>",
"CREATOR_SPONSOR_PATH": "/absolute/path/to/creator-sponsor.json"
}
}
}
}Env var | Default | Purpose |
| unset | Optional. An X API v2 app-only bearer token (read-only: user lookup, user posts, post lookup). If unset, the server makes no network calls and you use |
| unset | Optional. A local JSON file of demo users and posts, used instead of the API when there's no token. |
|
| Data file. Must end in |
| unset | HTTP only: require |
|
| HTTP bind |
X API access: create a project and app at developer.x.com and copy the app's bearer token. The token can only read public data. You need an API tier that includes post lookup and user timelines.
From source: git clone https://github.com/ppiotis/creator-sponsor-mcp && cd creator-sponsor-mcp && npm ci && npm run build && node dist/stdio.js
Remote (Streamable HTTP)
node dist/serve-http.js serves stateless Streamable HTTP at /mcp, with a health check at GET /health. The marketplace data is a local file, so run it on a machine you control, with an auth token:
CREATOR_SPONSOR_PATH=/data/cs.json MCP_AUTH_TOKEN=change-me X_BEARER_TOKEN=... HOST=0.0.0.0 PORT=3000 node dist/serve-http.js
docker build -t creator-sponsor-mcp . && docker run -p 3000:3000 -v "$HOME/.creator-sponsor:/data" -e CREATOR_SPONSOR_PATH=/data/cs.json -e MCP_AUTH_TOKEN=change-me creator-sponsor-mcpClient: {"url":"https://your-host/mcp","headers":{"Authorization":"Bearer change-me"}}. Put TLS in front. Do not expose it without MCP_AUTH_TOKEN.
Security & privacy
One outbound host, read-only. The only network code is
src/xsource.ts. It makesGETrequests tohttps://api.x.com/2, with a hard-coded host check,redirect: "error"and a 15 s timeout, and only whenX_BEARER_TOKENis set. Unit tests assert the host, the method, and that no fetch happens without a token.The token is never logged or returned. Errors surface only the HTTP status and X's public error title. Tests assert the token never appears in any output, including
data_source_status. An unexpanded${X_BEARER_TOKEN}placeholder is treated as unset.No posting, no DMs, no money movement. The server can't write to X.
record_payoutonly records a payment you made elsewhere (money_moved: false). The X Money adapter is a refusing stub.Human-in-the-loop writes. Every write is a preview followed by a confirm. The confirm token is HMAC-SHA256, bound to the tool, the exact arguments and the store revision, expires after 10 minutes and is single-use. Tests cover wrong arguments, reuse, a stale revision and a malformed token. Verification can only be confirmed if every check still passes when it's re-run at confirm time.
Accurate annotations.
readOnlyHint,destructiveHintandidempotentHintare set on every tool, andopenWorldHint: trueonly on the three tools that can call X.Validated input. Every tool uses zod schemas. Post URLs must be on
x.comortwitter.com, usernames must match X's format, and ids, amounts, ISO currencies and dates are all checked.Data safety. Writes are atomic (temp file, then rename) and serialised. The data file is private (
0600, folder0700). A corrupt file is reported and never overwritten.Honest verification.
manual_attestation(for when there's no API) is stored as such, along with who attested it. The X API doesn't expose the paid-partnership label, so the skills tell creators to turn it on and the server checks only for a text disclosure.Runtime dependencies are the MCP SDK and
zod. There's no telemetry.
Skills
Skill | Teaches the agent |
| Choosing a source, analysing, explaining the price formula and caveats, saving with approval |
| Collecting a brief, presenting explainable rankings, making a compliant offer |
| Verification checks, handling failures, manual attestation, recording a payout without ever moving money |
| FTC Endorsement Guides and X paid-partnership policy, good vs weak disclosures, how the plugin enforces them |
Reviewer test plan
Setup: no X account or token is needed. Add the plugin with
CREATOR_SPONSOR_FIXTURES=<repo>/fixtures/demo.json and CREATOR_SPONSOR_PATH=/tmp/cs-review.json.
The fixture contains three demo creators (devdana: AI/tech, fitfelix: fitness, moneymaya: finance) and three demo posts.
Creator profile and price. Ask: "Analyse @devdana as a sponsorship creator." → Expect niche AI & tech, avg likes 158.5, engagement rate 1.77% (interactions / impressions), and a price of $136–$283 per post. The formula should show 8,524 expected impressions, a $12–25 CPM and a ×1.33 multiplier. Nothing is saved, and
/tmp/cs-review.jsondoesn't exist yet.Preview gate. Ask: "Save devdana, fitfelix and moneymaya to the marketplace." → Expect three previews and a request to confirm. Say yes →
list_creatorsshows 3.Brand matching. Ask: "I sell AgentLens, an AI coding agent tracer for developers. Budget $100–300 per post. Who should I sponsor?" → Expect devdana ranked #1 with score 1.0 and the reasons "niche overlap: ai_tech" and "fits budget". Then ask: "Offer devdana $200, must link https://agentlens.dev/try." → Expect a preview with the default disclosure markers (#ad, …) → confirm → a deal in status
offered, plus a creator brief that mentions #ad.Verification with disclosure. Ask: "devdana accepted. Verify post 1950000000000000002." → Expect accept preview → confirm, then verification fails on
disclosure(no #ad) and nothing changes. Ask: "Try https://x.com/devdana/status/1950000000000000001." → all 5 checks pass → preview → confirm →verified. Post1950000000000000003fails the author check.Payout never moves money. Ask: "Pay devdana via X Money." → Expect a refusal explaining there's no public X Money payouts API, and advice to pay in X Money and record the reference. Ask: "I paid, reference XM-12345." → Expect a
record_payoutpreview saying no money is moved → confirm → dealpaid, and the ledger total is USD 200.
Development
npm ci
npm test # build + unit tests (logic, mocked X API, tools) + e2e over stdio and Streamable HTTP
npm audit --omit=devLicense
MIT © Paris Piotis
Available Tools
16 toolsanalyze_creatorAnalyse an X creatorARead-onlyIdempotent
Builds a structured sponsor profile for an X creator: niches, audience, content style, engagement metrics (avg likes/reposts/replies, engagement rate) and an estimated price-per-post range with the exact formula and assumptions. Source: X API (needs X_BEARER_TOKEN) or manual profile+posts. Also returns narrative_prompt for you to write a human summary. Saves nothing (use save_creator_profile).
| Name | Required | Description | Default |
|---|---|---|---|
| manual | No | Manual mode: profile and recent posts supplied by the user (e.g. copied from their X analytics). No network. | |
| username | No | X handle, with or without @ | |
| max_posts | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely non-derivable context — the env-var auth requirement for API mode, that manual mode performs no network calls, and that the price range comes with 'the exact formula and assumptions'. However it doesn't disclose error behavior (invalid handle, insufficient posts) or the response shape beyond a field list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense paragraph that front-loads the deliverable and then the modes, saving, and return-value note. Every clause carries information, though the mid-sentence accumulation of output fields and the formula/assumptions aside make it slightly heavy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the important work of naming what is returned (profile fields, engagement metrics, price range with formula, plus a `narrative_prompt` the agent is expected to use) and clarifies that nothing is persisted. Given zero required parameters and nested objects, the main missing piece is the mutual exclusivity of username vs manual.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, so username and the manual sub-object are already documented in the schema; the description only restates that manual takes 'profile+posts'. `max_posts` is undocumented in both schema and description, and the fact that the top-level inputs are effectively either/or (username XOR manual) is implied but never stated as a constraint. Baseline 3 is appropriate given the schema does most of the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Builds a structured sponsor profile for an X creator') and enumerates exactly what the profile contains (niches, audience, content style, engagement metrics, price-per-post range). It also names the sibling it is not — 'Saves nothing (use save_creator_profile)' — so an agent can distinguish it without opening another schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly presents the two operating modes: X API source (requires X_BEARER_TOKEN) or `manual` profile+posts with 'No network'. It also routes the persist step to save_creator_profile. It stops short of stating when to prefer manual over the API (e.g. rate limits, handle not found), so it is clear context without full exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_dealCancel dealADestructive
Cancels an offered or accepted deal. Cannot be undone. TWO-STEP: the first call (no confirm_token) only returns a preview and a confirm_token; nothing is written. Show the preview to the user, and only after they approve call again with the same arguments plus confirm_token.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | ||
| deal_id | Yes | ||
| confirm_token | No | Omit on the first call to get a preview. Pass the token from the preview (with identical arguments) to apply the change. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (destructiveHint=true, idempotentHint=false) by disclosing that the action is irreversible and, crucially, that the first call writes nothing and only returns a preview plus confirm_token. The instruction to show the preview and re-call with identical arguments is exactly the behavioral detail an agent needs for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: purpose, irreversibility, then the two-step protocol front-loaded with the critical constraint. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no output schema, the description covers the essentials: state constraints, irreversibility, and the full preview/confirm lifecycle including what the first call returns. An agent can invoke it correctly without further inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, with `deal_id` and `reason` undocumented in both schema and description. The description does explain the confirm_token two-step semantics, but that meaning is largely already present in the schema's confirm_token description, so it adds only marginal value and leaves the other two params unaddressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (cancels) plus resource (deal) and narrows the applicable state to `offered` or `accepted` deals. This clearly distinguishes it from siblings like respond_to_offer or delete_creator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear condition for use (only offered/accepted deals) and an explicit invocation protocol for the two-step flow. It does not name an alternative tool, but no obvious sibling performs the same job, so context is otherwise sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_offerCreate sponsorship offerA
Brand creates an offer to a saved creator: amount, product, post requirements (phrases, link) and required disclosure markers. Starts in status offered. TWO-STEP: the first call (no confirm_token) only returns a preview and a confirm_token; nothing is written. Show the preview to the user, and only after they approve call again with the same arguments plus confirm_token.
| Name | Required | Description | Default |
|---|---|---|---|
| brand | Yes | ||
| notes | No | ||
| amount | Yes | ||
| creator | Yes | X handle, with or without @ | |
| post_by | No | ||
| product | Yes | ||
| currency | No | USD | |
| disclosure | No | Accepted disclosure markers; at least one must appear in the post. Default: #ad, #sponsored, #paidpartnership, paid partnership | |
| confirm_token | No | Omit on the first call to get a preview. Pass the token from the preview (with identical arguments) to apply the change. | |
| must_include_link | No | ||
| must_include_phrases | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the generic write profile (readOnlyHint=false, idempotentHint=false, destructiveHint=false). The description adds behavior annotations cannot express: the two-step preview/confirm protocol, the guarantee that nothing is written on the first call, the user-approval requirement, and the initial status value. This is exactly the kind of non-obvious side-effect disclosure the description should carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads what the tool does and the resulting state, then spends its remaining sentences on the one thing an agent will get wrong: the two-call confirm flow. No filler, no restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex write tool with 11 parameters and no output schema, the description covers the critical behavioral protocol, the payload fields and the resulting status. It does not describe what the preview actually returns or note that the creator must already be saved and valid, leaving a small gap for a mutation of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 27% across 11 parameters, so the description must compensate. It does add meaning for confirm_token, disclosure, must_include_phrases, must_include_link, amount and product, but leaves brand, currency, notes and post_by entirely undocumented in both the schema and the prose, and gives no formats (e.g., date pattern, currency code, handle syntax).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Brand creates an offer to a saved creator') and enumerates the payload it carries: amount, product, post requirements, disclosure markers. It also pins the resulting state (`offered`). It does not explicitly contrast itself with the creator-side sibling `respond_to_offer`, so sibling differentiation is only implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete operating instructions: the first call without confirm_token returns only a preview, the preview must be shown to the user, and the second call must reuse identical arguments plus the token. It does not say when this tool is preferable to sibling alternatives (e.g., respond_to_offer or cancel_deal), so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
data_source_statusShow X data source and storageARead-onlyIdempotent
Which X data source is active (x_api when X_BEARER_TOKEN is set, fixture, or none = manual input only), the data file path, and pricing assumptions. Never reveals the token.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, closed-world, and non-destructive behavior, so the safety profile is covered structurally. The description adds genuinely new context beyond the annotations: it discloses the conditional logic behind the returned value (x_api when X_BEARER_TOKEN is set) and a security guarantee — 'Never reveals the token' — that no annotation conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with what is returned, followed by the conditional value mapping and the security caveat. Every clause earns its place and nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must carry the return contract, and it does outline the three returned facts and the possible data-source values. It stops short of describing the shape or format of the response (e.g., ordering, how the path/pricing fields are presented), which is a minor remaining gap for a no-argument diagnostic tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4 and there is nothing for the description to disambiguate. No misuse risk exists from parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource — the active X data source, data file path, and pricing assumptions — and enumerates the possible data-source values (x_api, fixture, none), so an agent knows exactly what introspection this returns. It is clearly distinct from the sibling tools, which all deal with creators, deals, and payouts rather than system configuration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: an agent can infer it should call this to discover which backing store is active before fetching data, but there is no explicit when-to-use or when-not-to-use guidance, nor any named alternative for introspecting configuration.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_creatorDelete creatorADestructive
Permanently removes a saved creator. Refused while they have open deals (offered, accepted or verified-but-unpaid). TWO-STEP: the first call (no confirm_token) only returns a preview and a confirm_token; nothing is written. Show the preview to the user, and only after they approve call again with the same arguments plus confirm_token.
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | X handle, with or without @ | |
| confirm_token | No | Omit on the first call to get a preview. Pass the token from the preview (with identical arguments) to apply the change. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, but the description adds substantial context beyond them: the permanence of removal, the precondition that blocks deletion, and the fact that the first call writes nothing. It also discloses that the first call returns a preview object plus a confirm_token, which is core non-obvious behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the action and its blocker, then the two-step protocol. Every sentence carries information needed to call the tool correctly; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description explains what the first call returns (a preview and a confirm_token) and what the second call does, so an agent knows the full interaction lifecycle. Nothing material is missing for a destructive two-step tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the schema already documents confirm_token. The description still earns above baseline by clarifying the token contract (obtain from preview, pass with identical arguments) and implying the two-call protocol the parameter participates in.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (permanently removes) and resource (a saved creator), and the scope word 'permanently' distinguishes it from softer mutations. An agent can immediately tell this apart from read-oriented siblings like get_creator or list_creators.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit preconditions for refusal (open deals that are offered, accepted, or verified-but-unpaid) and prescribes the exact invocation sequence: preview first, user approval, then re-call with identical arguments plus confirm_token. Nothing about when/when-not is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_creatorGet saved creatorBRead-onlyIdempotent
Full saved creator profile and analysis, plus their deals.
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | X handle, with or without @ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is fully covered. The description adds the content scope (profile + analysis + deals), but says nothing about behavior on a missing username, pagination of the embedded deals, or freshness of the analysis.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that names the resource and its contents with zero filler. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing return content, and it does list profile, analysis, and deals. That is adequate but thin: it does not indicate the shape, depth, or volume of the embedded deals list, nor error behavior for invalid handles.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single 'username' parameter is well documented in the schema (X handle, with or without @). The description adds no parameter-level detail beyond that, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('Get saved creator') and enumerates the payload ('profile and analysis, plus their deals'), which separates it from list_creators. However it does not clearly differentiate itself from the sibling analyze_creator, whose name also implies producing analysis, so the agent cannot fully disambiguate on purpose alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as list_creators or analyze_creator or get_deal. The agent must infer the retrieval context purely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dealGet dealBRead-onlyIdempotent
Full deal: requirement, status history, verification checks and payout record.
| Name | Required | Description | Default |
|---|---|---|---|
| deal_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds that the response aggregates requirement, status history, verification checks and payout record, which is useful context about the shape of the read. It says nothing about authorization needs, missing-deal behavior, or payload size.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that lists the returned components with no filler. It is a noun fragment rather than a sentence, but no words are wasted and the most important content leads.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of describing the return value, and it does list the four payload sections. However, it omits identifier usage, error behavior when a deal is not found, and any relationship to sibling write tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description never mentions deal_id or its required 'deal_xxxxxxxxxx' format. With one parameter and no schema-level documentation, the description is the only place this could be clarified and it does not, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (a full deal) and enumerates what the payload contains: requirement, status history, verification checks and payout record. That is a specific verb+resource statement an agent can act on. It does not, however, distinguish itself from the sibling list_deals, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus list_deals, or versus the sibling tools verify_deal_post, record_payout and cancel_deal. The agent must infer that 'Full deal' means the single-deal counterpart to list_deals, and no prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_creatorsList saved creatorsCRead-onlyIdempotent
Saved creator profiles with niches, followers, engagement rate and price range. Optional niche filter.
| Name | Required | Description | Default |
|---|---|---|---|
| niche | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and closed-world behavior, so the safety profile is covered. The description adds the returned-field set (niches, followers, engagement rate, price range) and confirms filtering is optional, but says nothing about pagination, ordering, or result limits for a list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the resource returned, with zero redundant filler. Slightly terse, but nothing wastes space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A one-parameter read-only tool with no output schema is a low-complexity case, and the description covers the essentials. However, it omits any indication of result volume, pagination, or default ordering, which an agent listing saved creators would plausibly need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. Saying 'optional niche filter' usefully conveys that the niche parameter is optional and narrows results, but it adds no syntax or behavioral detail beyond the schema's enum, which is self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource (saved creator profiles) and its attributes, but offers no verb and no differentiation from siblings like get_creator, match_creators, or analyze_creator, which all operate on creators. An agent can guess it lists, but nothing in the text distinguishes it from other creator-reading tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Optional niche filter' is the only usage hint and only describes one parameter, not when to reach for this tool versus get_creator or match_creators. There are no exclusions, prerequisites, or selection criteria for alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dealsList dealsCRead-onlyIdempotent
Deals with status, filterable by status or creator.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | ||
| creator | No | X handle, with or without @ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds the filtering behavior over an unfiltered list, but says nothing about ordering, pagination, or result limits for a read-only collection endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with no padding, and the resource is front-loaded. It loses a point only because the fragment "Deals with status" is grammatically ambiguous and reads as a fragment rather than a self-contained statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists here, so the description should carry more of the return-shape burden; it does not say what an unfiltered call returns, how results are ordered, or whether they are paginated. Annotations plus the schema cover safety and the two params, leaving the definition minimally viable rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both params are optional filters and the description confirms that, which adds some meaning. But schema coverage is 50% (status has an enum with no description), and the description does not explain the enum values, the @-handle handling, or what is returned when no filter is supplied – so it only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (deals) and the two filter axes, but the verb is only carried by the name/title ("list_deals" / "List deals") – the fragment "Deals with status" never states that it returns a collection. It also gives no differentiation from the sibling get_deal, so an agent must infer the list-vs-get distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus get_deal, list_payouts, or other siblings, and no exclusions or prerequisites. The only usage signal is the implicit "filterable by status or creator."
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_payout_providersList payout providersBRead-onlyIdempotent
Payout providers and whether they are available. This server never moves money.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered structurally. The description adds one meaningful behavioral fact beyond the annotations: 'This server never moves money,' which reassures the agent in a context full of money-moving siblings. It adds nothing about result ordering, pagination, or refresh behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero padding, and the resource is front-loaded. The second sentence is a capability disclaimer rather than a continuation of the tool's own behavior, which makes it slightly less tight than an ideal single-purpose sentence, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, no nested objects, and annotations carrying the safety profile, the description covers what the agent needs to invoke it. The lack of an output schema means the return shape (provider list plus availability flag) is only implied, but for a no-arg read tool this is close to sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing to document and the baseline is 4. The description correctly avoids inventing parameter talk.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (payout providers) and the attribute returned (availability), so the agent knows this is a discovery/enumeration tool. It is a noun phrase rather than an explicit verb+resource statement, and it does not contrast itself with siblings like list_payouts or record_payout, but the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus alternatives, nor any prerequisites. The agent must infer that this is the discovery step preceding record_payout/list_payouts. 'whether they are available' hints at the filtering purpose but does not constitute usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_payoutsPayout ledgerBRead-onlyIdempotent
All recorded payouts with totals per currency.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds only a return-content hint ('totals per currency') and says nothing about scope, ordering, or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, front-loading the resource before the return detail. It is terse rather than padded, though it errs toward under-specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description is the only source for what comes back, yet it only mentions per-currency totals and omits record shape, ordering, and whether the list is scoped or complete. Annotations carry the safety profile, so the remaining gap is modest but real.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (payouts) and hints at the return content ('totals per currency'), but has no explicit verb and no scope qualifier such as date range or account. It does not distinguish itself from the sibling record_payout or from list_deals/list_creators beyond the noun.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites, and no reference to any sibling tool as an alternative. The agent must infer that this is the read counterpart to record_payout.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
match_creatorsMatch creators to a brand briefARead-onlyIdempotent
Ranks saved creators for a product brief by niche fit, audience fit and budget fit, with per-component scores, reasons and a suggested offer. Deterministic and explainable. Saves nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| product | Yes | ||
| languages | No | Post language codes, e.g. en | |
| description | No | ||
| min_followers | No | ||
| target_niches | No | Override niche detection from the brief text | |
| budget_per_post | Yes | USD per post |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description still adds real value beyond them: it states the operation is deterministic and explainable, and that it 'saves nothing', which confirms the non-persistent behavior. It does not mention prerequisites or limits on how many saved creators are considered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with zero filler, front-loaded with the core ranking action and followed by the scoring components, the explainability guarantee, and the no-side-effects note. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully sketches the return shape (per-component scores, reasons, suggested offer), which is the strongest part of the definition. However, for a 7-parameter tool with a nested budget object, it leaves most input semantics and the ordering/limit behavior unexplained, so an agent knows the intent but not the full calling contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 43% across 7 parameters, so the description carries a compensation burden it does not meet. It never mentions limit, languages, min_followers, description, or the target_niches override; 'product brief' and 'budget fit' only loosely gesture at product and budget_per_post without adding format or constraint meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (ranks), a specific resource (saved creators) and the ranking method (niche fit, audience fit, budget fit) against a product brief. This is clearly distinguishable from list_creators (enumeration), get_creator/analyze_creator (single-creator views) and create_offer (mutation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the phrase 'saved creators' hints that the creator library must already be populated and that a brief is the input, but there is no explicit when-to-use, when-not-to-use, or named alternative among the many sibling tools. An agent can infer the context but is given no routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_payoutRecord payoutA
Records that a verified deal was paid, via a payout provider. Default provider manual is a ledger entry with your transaction reference; it does NOT move money. Provider x_money is a stub pending a public X Money payouts API and always refuses. Marks the deal paid. TWO-STEP: the first call (no confirm_token) only returns a preview and a confirm_token; nothing is written. Show the preview to the user, and only after they approve call again with the same arguments plus confirm_token.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| amount | No | Defaults to the deal amount | |
| deal_id | Yes | ||
| provider | No | manual | |
| reference | No | Transaction id of the payment you made elsewhere (required for manual) | |
| confirm_token | No | Omit on the first call to get a preview. Pass the token from the preview (with identical arguments) to apply the change. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only give generic hints (readOnlyHint=false, destructiveHint=false, idempotentHint=false), while the description supplies the real behavioral payload: no money moves on the default path, x_money is a stub that always refuses, the deal is marked paid, and the first call writes nothing. This is exactly the context annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, each carrying distinct load: what the tool does and its provider modes, the side effect on the deal, and the two-step protocol. The two-step rule is front-loaded as a labeled block so it is not missed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and no annotations covering the workflow, the description covers the critical path well (side effects, preview semantics, confirmation). It stops short of stating permission/authorization requirements or what happens on duplicate payouts for the same deal, which would matter for a financial write.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%, and the description fills the biggest gap by explaining the provider parameter's two modes and the confirm_token contract (omit first, pass with identical args second). It also ties 'reference' to the payout flow, though 'amount' and 'note' semantics beyond the schema are not addressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Records that a verified deal was paid, via a payout provider') and immediately scopes it against siblings by detailing provider behavior, so an agent can distinguish it from list_payouts/list_payout_providers without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states exactly when each provider applies ('manual' is a ledger entry only and does NOT move money; 'x_money' always refuses), and gives explicit operating instructions for the two-step preview/approval flow including 'only after they approve call again with the same arguments plus confirm_token.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
respond_to_offerAccept or decline offerA
Records the creator's decision on an offered deal: accept -> accepted, decline -> declined. TWO-STEP: the first call (no confirm_token) only returns a preview and a confirm_token; nothing is written. Show the preview to the user, and only after they approve call again with the same arguments plus confirm_token.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| deal_id | Yes | ||
| decision | Yes | ||
| confirm_token | No | Omit on the first call to get a preview. Pass the token from the preview (with identical arguments) to apply the change. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the mutation/safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false); the description adds the crucial behavior that the first call writes nothing and only returns a preview plus a confirm_token. This non-obvious, two-phase write semantics is exactly the kind of context annotations cannot express, and it does not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly packed sentences with no filler; the state transitions come first and the mandatory two-step protocol is front-loaded as 'TWO-STEP'. Every clause carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description usefully explains what the first call returns (a preview and a confirm_token). It leaves minor gaps—what happens if the deal is not in `offered` state, and no mention of the optional `note` field—but covers everything needed to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 25% schema description coverage, the description must compensate, and it does for the critical parameter: it explains that confirm_token is omitted on the first call and must be supplied with identical arguments on the second. The `note` parameter and the deal_id format remain undocumented in both places, which keeps this below a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('records the creator's decision') on a specific resource ('an `offered` deal') and spells out both outcome transitions (accept -> `accepted`, decline -> `declined`). An agent can distinguish this from siblings like cancel_deal or create_offer because the precondition state (`offered`) and the resulting states are named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use guidance for the two-step flow: call without confirm_token for a preview, show it to the user, and only re-call after their approval. It does not, however, name alternative tools (e.g. cancel_deal) or state when this tool should not be used, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_creator_profileSave / refresh creator profileADestructiveIdempotent
Analyses a creator (X API or manual) and saves or refreshes their profile in the marketplace. Overwrites the previous analysis for that handle. With X data, metrics are re-fetched on confirm. TWO-STEP: the first call (no confirm_token) only returns a preview and a confirm_token; nothing is written. Show the preview to the user, and only after they approve call again with the same arguments plus confirm_token.
| Name | Required | Description | Default |
|---|---|---|---|
| manual | No | Manual mode: profile and recent posts supplied by the user (e.g. copied from their X analytics). No network. | |
| username | No | X handle, with or without @ | |
| max_posts | No | ||
| confirm_token | No | Omit on the first call to get a preview. Pass the token from the preview (with identical arguments) to apply the change. | |
| payout_handle | No | Where the creator wants to be paid, e.g. their X Money handle. Informational only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial value beyond the annotations: it discloses that the write overwrites prior analysis, that metrics are re-fetched on confirm, and critically that the first call writes nothing and only returns a preview + token. This makes the destructiveHint/idempotentHint profile actionable rather than abstract.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads what it does, then the overwrite consequence, then the two-step mechanics. Four dense sentences with no filler; the preview/confirm warning is placed where the agent needs it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even without an output schema, the description describes what the first call returns (a preview and confirm_token), which is the key behavioral contract for a two-step mutation. Nothing essential to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 80% schema coverage the schema already documents most params, but the description adds real meaning for confirm_token (omit to preview, pass identical args to apply) and the manual-vs-X selection. max_posts and payout_handle remain unexplained in text, keeping it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs (analyses, saves/refreshes) and the exact resource (creator profile in the marketplace), and distinguishes the X API path from the `manual` path. An agent can differentiate it from siblings like analyze_creator or get_creator purely from the text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear when-to-use context via the explicit TWO-STEP flow and the 'show preview, then confirm' instruction, plus the X-vs-manual branch. It stops short of naming alternatives (e.g., analyze_creator for analysis-only), so it is clear context without explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_deal_postVerify sponsored postA
Fetches the creator's post (URL or id) from X and checks author, required phrases/link, disclosure, and that it was posted after acceptance. The preview shows every check; it can only be confirmed if all pass, which marks the deal verified. Without an X token, pass manual_attestation (recorded as such). TWO-STEP: the first call (no confirm_token) only returns a preview and a confirm_token; nothing is written. Show the preview to the user, and only after they approve call again with the same arguments plus confirm_token.
| Name | Required | Description | Default |
|---|---|---|---|
| post | Yes | Post id or https://x.com/<user>/status/<id> URL | |
| deal_id | Yes | ||
| confirm_token | No | Omit on the first call to get a preview. Pass the token from the preview (with identical arguments) to apply the change. | |
| manual_attestation | No | Only when the X API is unavailable: the post as seen by a human. Marked manual_attestation in the record. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare mutation (readOnlyHint=false) but the description carries the real behavioral load: the first call writes nothing, only a preview and confirm_token are returned, confirmation requires all checks to pass, and it marks the deal `verified`. It also discloses the token-absent fallback is recorded as manual attestation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose, fallback, and the two-step flow are front-loaded and ordered logically; the final 'TWO-STEP' block is clearly delineated. It is dense with several distinct concepts, but each sentence (token fallback, preview semantics, confirm requirement) earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description explains the returned preview/confirm_token and the condition under which the write applies, which is exactly what an agent needs to drive a two-call workflow. The manual-attestation path is also covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% and the description still adds meaning: `post` accepts a URL or id, `confirm_token` must be omitted on the first call and reused with identical arguments, and `manual_attestation` is conditioned on X API unavailability. Minor gap: it does not restate the `deal_id` format, but that is covered in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Fetches the creator's post ... from X and checks author, required phrases/link, disclosure, and that it was posted after acceptance') and names the concrete outcome ('marks the deal `verified`'). No sibling tool performs post verification, so the agent can select it unambiguously.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit conditions and alternatives: use `manual_attestation` when there is no X token, and use the two-step confirm flow otherwise. It also specifies the sequencing requirement (first call → show preview → approval → second call with confirm_token), leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
16 tool updates
v1.0.0- First observed
analyze_creator - First observed
cancel_deal - First observed
create_offer - First observed
data_source_status - First observed
delete_creator - First observed
get_creator - First observed
get_deal - First observed
list_creators - First observed
list_deals - First observed
list_payout_providers - First observed
list_payouts - First observed
match_creators - First observed
record_payout - First observed
respond_to_offer - First observed
save_creator_profile - First observed
verify_deal_post
TDQS
Scored across 16 tools
Most tools target clearly distinct resources and actions (creators, deals, payouts). The one overlap is analyze_creator vs save_creator_profile, which both analyze a creator; the descriptions explicitly clarify that analyze saves nothing and directs users to save_creator_profile, which mitigates the risk.
Almost every tool follows a clean verb_noun snake_case pattern (list_creators, create_offer, verify_deal_post, record_payout). The only deviation is data_source_status, a noun-phrase status tool, which is a minor inconsistency rather than a broken convention.
16 tools is at the upper edge of comfortable scope but justified by the domain, which spans creators, deals, verification, and payouts. Each tool earns its place with a distinct lifecycle role, though it leans slightly heavy.
The surface covers the full lifecycle: creator discovery/analysis/saving/deletion, offer creation and response, verification, cancellation, and payout recording/listing. Minor gaps like a generic deal-update or edit-offer operation exist but core workflows have no dead ends.
Maintenance
Related MCP Connectors
Guarded agent surface for X & LinkedIn: discover, score, and draft in your voice. No key can post.
Free creator rate benchmarks and brand-offer checks, with sources. No login, no API key.
Your agent posts, schedules, queues and threads posts on X, with a human approval queue.
Post, schedule, and track social posts on X, Bluesky, LinkedIn, Instagram and more from AI agents.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to fully automate X/Twitter interactions including searching, posting, engaging, and managing multiple accounts without paid API keys.MIT
- AlicenseNot gradedqualityAmaintenanceEnables social media creators to pull TikTok, Instagram, Facebook, and YouTube analytics into a persistent vault, receive weekly digests, review scripts, build media kits, and draft brand outreach using official APIs only.MIT
- FlicenseNot gradedqualityBmaintenanceEnables autonomous matching of UGC creators to brand briefs via a deterministic programmatic auction and video matchmaking workflow. It integrates as an MCP server so AI agents can run creator brief auctions and produce structured results with execution telemetry.9-
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to create, schedule, and analyze LinkedIn and X content, manage ideas, media, and a creator knowledge vault, and run approval-gated outreach campaigns through a hosted MCP endpoint.MIT