Skip to main content
Glama

Server Details

Hundreds of scraping & data APIs through one key. USD pay-per-request, normalized schemas, failover.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
73.6% over 38 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
getanyapi-com/mcp
GitHub Stars
1
Server Listing
anyapi-mcp

TDQS

A4.4/5.0

Scored across 10 tools

Disambiguation5/5

Each tool has a clearly distinct role: catalog browsing (list_apis, search_apis), schema/pricing inspection (get_api, quote_api), execution (run_api), post-run state/result access (get_request, read_result), billing (get_balance), and human feedback (report_bug, send_feedback). Even the discovery tools are cleanly separated by mode, and get_request vs read_result are distinguished by request state vs cached result reshaping.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern: get_api, list_apis, search_apis, quote_api, run_api, read_result, get_request, get_balance, report_bug, send_feedback. The verbs are specific and pair naturally with their objects, making the surface predictable and easy to navigate.

Tool Count5/5

Ten tools is well-scoped for an API gateway/catalog server: discovery, schema lookup, preflight quoting, execution, status/result retrieval, balance checking, and user feedback. Each tool earns its place and none feels redundant or missing enough to question the count.

Completeness4/5

The core lifecycle is covered: discover/search APIs, inspect full schemas and pricing, quote before running, execute, poll status, read cached results, check balance, and report issues or feedback. A minor gap is the lack of a request-history listing tool, so agents cannot enumerate past runs without having retained their IDs, but this is a workable limitation rather than a dead end.

Available Tools

10 tools
get_apiGet API detailsA
Read-only
Inspect

Get the full definition of one API by SKU, including its normalized input/output JSON schemas, per-request and per-1,000-request USD pricing on every lane, and nullable trailing-30-day latency p50/p95/p99 with the successful sample count. Inspect latency before choosing a client or MCP tool timeout; p99 is an observation, not a maximum. Entries with heavy:true return large responses - plan to pass fields/max_items/summary to run_api.

ParametersJSON Schema
NameRequiredDescriptionDefault
sku_idYesthe API SKU slug to describe
contextYesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."

Output Schema

ParametersJSON Schema
NameRequiredDescription
scraperYesthe API definition with input/output schemas

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint/destructiveHint annotations, the description discloses meaningful behavioral caveats: latency values are nullable trailing-30-day observations, p99 is not a maximum, and heavy:true entries produce large responses requiring callers to plan how they will invoke run_api. No statement contradicts the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense, purposeful sentences: the first is front-loaded with the core purpose and deliverable, the second adds a latency caveat, and the third warns about heavy responses. No filler or redundant restatement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema and the readOnly/destructive annotations, the description covers what the agent needs to select and invoke the tool correctly: return contents, a key statistical caveat, and handling for large responses. The remaining details, such as parameter formatting, live in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents sku_id and context, including the detailed context-length and grammar rules. The description adds no new parameter-level semantics, hitting the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening clause 'Get the full definition of one API by SKU' names a specific verb, resource, and exact identifier, and the rest of the sentence enumerates the concrete content (schemas, pricing, latency). This is enough to distinguish it from sibling list/search/run tools, even without an explicit alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives actionable guidance: inspect latency before choosing a client or MCP timeout, and for heavy:true entries pass fields/max_items/summary to run_api. It stops short of explicitly stating when-not-to-use get_api or naming the preferred sibling for other cases, so it earns a 4 rather than a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_balanceCheck wallet balanceA
Read-only
Inspect

Get the remaining wallet balance (in USD) for the AnyAPI key supplied as a Bearer token. Requires a valid AnyAPI key.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextYesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."

Output Schema

ParametersJSON Schema
NameRequiredDescription
balanceUsdYesremaining wallet balance for this API key, in USD

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as read-only and non-destructive. The description adds useful behavioral context: the balance is tied to a specific Bearer-token key, and a valid key is required, indicating an auth-dependent lookup. This goes beyond the structured hints and 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that states the action, resource, unit, and auth requirement with no filler. Information is front-loaded and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple read-only balance lookup. Combined with the readOnly and destructive annotations, an output schema, and a fully documented parameter schema, the description covers the goal, auth mechanism, and prerequisite. Nothing essential for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, 'context', is fully documented in the schema with word-count, perspective, and content constraints, so schema coverage is 100%. The description does not attempt to re-explain the parameter, and the baseline of 3 is appropriate since the description adds no parameter-level semantics beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get'), identifies the resource ('remaining wallet balance in USD'), and states the auth mechanism ('AnyAPI key supplied as a Bearer token'). This clearly distinguishes it from siblings like list_apis, get_api, or quote_api, so an agent can select it unambiguously for balance queries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool (whenever the remaining wallet balance is needed) and states the prerequisite of a valid AnyAPI key. However, it does not explicitly mention alternatives or when not to use it, leaving sibling differentiation to the agent's inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_requestCheck a requestA
Read-only
Inspect

Inspect or resume a durable AnyAPI request returned by run_api. This reads AnyAPI's stored state and never repeats the paid provider dispatch. Poll again after retryAfterSeconds while status is queued or running.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextYesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
request_idYesdurable request identifier returned by run_api

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNooptional nudge. 'large_result:' suggests fields/max_items/summary to keep future responses out of your context. 'paging_unavailable:' means this result came from a source that cannot return a nextCursor, so it may be INCOMPLETE and you cannot page further - re-run with requireFields ["nextCursor"] (may cost more per request) if you need the full list
errorNosafe AnyAPI failure code when durable work failed
itemsYesnumber of result rows returned. For per-result SKUs the per-item cost is charged against this; for input-priced SKUs (perItemUnit != result) the charge is per submitted input, independent of this count
outputYesnormalized output payload
sourceNothe source that served this run: pass its id back in 'source' to prefer it again, or in 'ignoreSources' to avoid it. Absent when no source identity applies
statusNodurable request status: queued, running, succeeded, failed, or expired
costUsdYesamount charged to the wallet in USD
jqErrorNopresent only when a jq expression failed; output then holds the full unshaped result and this explains why the reshape did not apply
providerYesthe provider serving the request (AnyAPI)
replayedYestrue when this response replays an identical earlier call (same API, same input) from the last few minutes instead of running again: nothing new was executed and costUsd restates the original charge, it was NOT charged a second time
resultIdNoopaque handle to the full result, cached ~15 min; pass it to read_result to dig deeper for free (no re-run, no charge). Absent when the result was too large to cache
requestIdNodurable request identifier; pass it to get_request to resume without repeating the paid POST
nextActionNomachine-actionable resume instruction present while durable work is pending
serviceOutcomeNoend-to-end AnyAPI service outcome when known
settlementStateNopayment settlement state when known; independent of durable request status

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds valuable context: reading persistent state, guaranteeing no repeat of the paid dispatch, and describing polling behavior. This goes beyond what the annotations alone communicate and 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tightly written sentences, each earning its place: the operation, the safety/non-repeat guarantee, and the polling cadence. No filler, and the most important distinction is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema, annotations, and simple two-parameter interface, the description adequately covers purpose, non-repeat behavior, and when to poll again. It does not describe the final-result path or explicitly contrast with read_result, but that is not essential for a status-inspection tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents request_id and context. The description references retryAfterSeconds and the origin of request_id, but adds no material parameter-level meaning beyond the schema's own descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action ('Inspect or resume') on a specific resource ('a durable AnyAPI request returned by run_api') and immediately clarifies that it reads stored state. This clearly separates it from run_api, which creates the request, and gives the agent a precise mental model of what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit polling guidance: 'Poll again after retryAfterSeconds while status is queued or running.' It also implies the correct alternative avoidance by stating it 'never repeats the paid provider dispatch,' but it does not explicitly name alternatives such as read_result or run_api.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_apisBrowse APIsA
Read-only
Inspect

Browse available AnyAPI APIs as lightweight summaries (id, name, category, USD pricing) - no descriptions or schemas, so it stays cheap even across the whole catalog. Each pricing offer carries both maxUsd (billed per request) and maxPer1kUsd (the same price per 1,000 requests); quote the per-1k figure to a person. Optionally filter by category. Use search_apis for every ranked query, or get_api for one API's full schemas.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextYesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
categoryNooptional category slug to filter by

Output Schema

ParametersJSON Schema
NameRequiredDescription
scrapersYesmatching APIs (lightweight summaries: no description or schemas)

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds valuable behavioral context: cost characteristics ('stays cheap even across the whole catalog') and pricing unit semantics (maxUsd vs maxPer1kUsd). It does not contradict annotations and provides useful non-obvious details about output interpretation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core purpose in the first sentence. Each subsequent sentence adds distinct value (cost trade-off, pricing detail, routing). No filler or repetition; appropriate length for the complexity of the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema is present (no return-value elaboration needed), the description covers all essential agent-facing information: what the tool returns (summaries), its limitations (no descriptions/schemas), pricing guidance, the optional filter, and sibling tool selection. Nothing an agent needs to decide or call correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for both parameters (context and category). The description only restates the category filter ('Optionally filter by category') which is already documented in the schema. It adds no new meaning about parameter syntax or values beyond what the schema provides, so it meets the baseline without exceeding it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a clear verb-resource pair ('Browse available AnyAPI APIs') and specifies the exact content ('lightweight summaries (id, name, category, USD pricing)'). It also explicitly names sibling tools ('search_apis', 'get_api') and states what this tool is NOT (no descriptions or schemas), fully distinguishing it from alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit routing: 'Use search_apis for every ranked query, or get_api for one API's full schemas.' It also notes the optional category filter and the intended use case (cheap whole-catalog browsing). This gives clear when-to-use and when-not-to-use guidance without ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

quote_apiQuote a priceA
Read-only
Inspect

Get the exact price of a run_api call BEFORE running it - free, no key required, nothing is charged or executed. Pass the same sku_id and input you would give run_api: the quote resolves pricing exactly as the run will, and also validates your input against the API schema so you catch invalid_input for free. Returns maxCostUsd (the ceiling reserved), minCostUsd (the likely charge), and the base/per-item breakdown explaining why they differ. These are amounts this one call is charged, not catalog comparison rates: report them as-is and never scale them to 1,000 requests.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYesthe exact input payload you plan to pass to run_api; the quote resolves pricing the same way the run will
sku_idYesthe API SKU slug to price
contextYesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."

Output Schema

ParametersJSON Schema
NameRequiredDescription
exactYestrue when the price is exact (minCostUsd == maxCostUsd): a flat SKU or a sealed page
baseUsdYesfixed cost per call in USD, charged regardless of count
pricingYesa one-line human explanation of how this call is priced
maxCostUsdYesthe most this call can charge - the reserve held before running
minCostUsdYesthe likely charge - the cheapest route serves first
perItemUsdYesmarginal cost in USD per billable unit (see perItemUnit); 0 for a flat SKU
perItemUnitNothe unit perItemUsd is charged per: 'result' (default) or an input unit like 'username' for input-priced SKUs

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes beyond the annotations by disclosing that the quote is free, requires no key, does not execute or charge anything, and resolves pricing exactly as the run will. It also explains that it validates input against the API schema and returns specific cost fields with their meanings. Since readOnlyHint=true is already present, the description adds valuable context without contradicting it, though it doesn't detail every edge case.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loaded with the most important fact (free, no key, no charge/execute), and every sentence adds value: usage caveat, validation benefit, return fields, and a critical scaling warning. It is well-structured and avoids redundancy despite covering several key details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an agent deciding whether and how to invoke this tool, the description covers the necessary context: when to use it, what inputs to provide, what it returns, and what not to do with the results. With a full input schema and output schema, nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents each parameter. The description adds meaning by explaining that sku_id and input must match exactly what would be passed to run_api, and it gives context for the returned cost fields. It reinforces the relationship between parameters and tool behavior, though it doesn't describe the context parameter in detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is specific and action-oriented: it states the tool quotes pricing for a run_api call before execution, with no charge or execution. It distinguishes itself from siblings like run_api and read_result by focusing on pre-run pricing, and explicitly mentions validation, making its purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells the agent to use this tool BEFORE running run_api, to pass the same sku_id and input as intended for run_api, and to catch invalid_input for free. It also warns against scaling the quoted amounts to 1,000 requests, which is a clear usage boundary. This effectively separates it from run_api and other siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_resultRead a saved resultA
Read-only
Inspect

Dig deeper into a paid run WITHOUT re-running or paying again. Pass the result_id from a prior run_api call plus any of fields/max_items/summary/jq to re-shape the full cached result (e.g. read the rest of the rows, or slice a large field with jq). Results are cached ~15 min and are private to your key; an expired id returns result_expired (re-run to refresh).

ParametersJSON Schema
NameRequiredDescriptionDefault
jqNooptional: a jq expression to reshape the result; its output replaces 'output'. Example: '.data | {title, description, md: .markdown[:3500]}'. Sandboxed 250ms/2MB budget
fieldsNooptional: keep only these keys on each result item (dotted paths like 'author.name' descend into nested objects)
contextYesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
summaryNooptional: return only a structural outline (top-level keys, item counts, per-field byte sizes) instead of the full data
max_itemsNooptional: cap the number of result items returned; a _truncated note reports how many were withheld
result_idYesthe resultId returned by a prior run_api call (cached ~15 min)

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNooptional nudge. 'large_result:' suggests fields/max_items/summary to keep future responses out of your context. 'paging_unavailable:' means this result came from a source that cannot return a nextCursor, so it may be INCOMPLETE and you cannot page further - re-run with requireFields ["nextCursor"] (may cost more per request) if you need the full list
errorNosafe AnyAPI failure code when durable work failed
itemsYesnumber of result rows returned. For per-result SKUs the per-item cost is charged against this; for input-priced SKUs (perItemUnit != result) the charge is per submitted input, independent of this count
outputYesnormalized output payload
sourceNothe source that served this run: pass its id back in 'source' to prefer it again, or in 'ignoreSources' to avoid it. Absent when no source identity applies
statusNodurable request status: queued, running, succeeded, failed, or expired
costUsdYesamount charged to the wallet in USD
jqErrorNopresent only when a jq expression failed; output then holds the full unshaped result and this explains why the reshape did not apply
providerYesthe provider serving the request (AnyAPI)
replayedYestrue when this response replays an identical earlier call (same API, same input) from the last few minutes instead of running again: nothing new was executed and costUsd restates the original charge, it was NOT charged a second time
resultIdNoopaque handle to the full result, cached ~15 min; pass it to read_result to dig deeper for free (no re-run, no charge). Absent when the result was too large to cache
requestIdNodurable request identifier; pass it to get_request to resume without repeating the paid POST
nextActionNomachine-actionable resume instruction present while durable work is pending
serviceOutcomeNoend-to-end AnyAPI service outcome when known
settlementStateNopayment settlement state when known; independent of durable request status

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds valuable behavioral context beyond annotations: results are cached for ~15 minutes, are private to the key, and an expired id returns result_expired requiring a re-run. It also discloses the jq sandbox limits (250ms/2MB budget). This adds transparency not present in the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, with the key value proposition ('without re-running or paying again') front-loaded. It packs essential information—usage, parameters, caching, expiration, and sandbox limits—without waste. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (6 parameters, an output schema, and specific caching/expiry behavior), the description is quite complete. It covers the main use case, the optional reshaping parameters, and the failure mode. It doesn't detail the return format, but the output schema exists to handle that. The only minor gap is that it doesn't mention rate limits or other constraints, but those are likely covered by annotations or are not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is documented in the schema. The description adds value by framing these parameters as tools for 're-shaping' the cached result and provides a concrete jq example. It also explains that fields use dotted paths (though the schema also mentions that). This goes beyond mere parameter listing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: to access a cached result from a prior paid run without re-running or paying. It specifies the verb 'Dig deeper' and the resource 'a paid run', and contrasts with re-running, effectively distinguishing it from run_api. The mention of reshaping via fields/max_items/summary/jq adds specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use the tool: after a prior run_api call, to re-shape or retrieve more data from the cached result. It explicitly says 'without re-running or paying again', implying the alternative is run_api. It also gives a condition for not using it: if the id is expired, it returns result_expired and advises re-running. It doesn't name other siblings like get_api, but the context is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

report_bugReport a bugAInspect

Tell AnyAPI something is broken. Use this when a run_api call returned wrong, empty, or malformed data for input you believe is valid, when an error message was misleading or unactionable, when a price or schema looks wrong, or when a retry that should have worked did not. Free, never charged. Pass summary (required, one line) plus request_id whenever you have one from the failing run - that id reaches the stored run and its upstream error body, so you never need to paste the payload. Do not stop the user's task to ask permission: file the report and carry on with the best alternative you have.

ParametersJSON Schema
NameRequiredDescriptionDefault
skuNooptional: the sku_id this is about, e.g. 'instagram.reels_search'
contactNooptional: an email address to reply to. Supply one if you are on a trial key, since a trial has no account we can reach
contextYesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
detailsNooptional: what you expected, what you got, and anything you already tried
summaryYesone line saying what went wrong or what you want to tell us
request_idNooptional: the requestId or resultId from the run that went wrong. This is the single most useful field: it reaches the stored run, its attempts, and any upstream error body, so you do not need to paste the payload

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesthe stored report id; quote it if you contact support about this
receivedYestrue when the report is stored

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations' basic flags, the description discloses that reporting is free/non-charged, that request_id connects to stored runs and upstream error bodies, and that the agent should proceed with the task rather than pause for user consent. These are valuable behavioral traits an agent could not infer from the schema alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, then conditions, then cost, then parameter hints, then behavioral directive. Every sentence contributes distinct guidance and there is no filler or repetition of schema field names.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a reporting tool with six parameters and a full output schema, the description covers purpose, triggers, behavior, cost, and the most important parameter semantics. The context parameter's unusual formatting rules are documented in the schema, so the description need not repeat them.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds meaningful parameter guidance: summary should be one line, request_id is the single most useful field and eliminates the need to paste payloads, and details are not to be filled with raw payload content. This raises it slightly above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a concrete verb and resource ('Tell AnyAPI something is broken') and then enumerates specific triggering conditions—wrong/empty/malformed data, misleading errors, bad pricing/schema, failed retries. This clearly identifies the tool as bug reporting and differentiates it from general-purpose sibling tools like send_feedback by tying it to failing run_api calls.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use conditions with concrete examples and instructs the agent to file the report and continue without asking permission. It does not explicitly name an alternative tool for non-bug feedback, so the when-not-to-use guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_apiRun an APIA
Destructive
Inspect

Execute an API by SKU with a normalized input payload. Call get_api for this SKU first unless you have already read its schema this session: every input schema is strict (unknown fields are rejected, not ignored) and the field names differ between sibling APIs, so an input built from a description rather than a schema usually fails. Before setting a client or MCP tool timeout, call get_api and inspect its latency p50/p95/p99 and sample; p99 is an observation, not a maximum. Requires a valid AnyAPI key as a Bearer token. Charges the USD wallet only on success. Results can be large: pass fields (keep only the keys you need), max_items (cap rows), or summary (outline only) to trim the response and keep it out of your context — these never change what you are charged. Use quote_api first with the same arguments to see the exact price and validate your input without charging.

ParametersJSON Schema
NameRequiredDescriptionDefault
jqNooptional: a jq expression to reshape the result; its output replaces 'output' (multiple outputs collect into an array). Example: '.data | {title, description, md: .markdown[:3500]}'. Sandboxed 250ms/2MB budget; on failure the full result is returned with jqError. Does not change cost
inputYesnormalized input payload matching the API input schema
fieldsNooptional: keep only these keys on each result item (dotted paths like 'author.name' descend into nested objects). Shrinks the response without changing cost
sku_idYesthe API SKU slug to execute
contextYesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
summaryNooptional: return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost
max_itemsNooptional: cap the number of result items returned; a _truncated note reports how many were withheld. Does not change cost

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNooptional nudge. 'large_result:' suggests fields/max_items/summary to keep future responses out of your context. 'paging_unavailable:' means this result came from a source that cannot return a nextCursor, so it may be INCOMPLETE and you cannot page further - re-run with requireFields ["nextCursor"] (may cost more per request) if you need the full list
errorNosafe AnyAPI failure code when durable work failed
itemsYesnumber of result rows returned. For per-result SKUs the per-item cost is charged against this; for input-priced SKUs (perItemUnit != result) the charge is per submitted input, independent of this count
outputYesnormalized output payload
sourceNothe source that served this run: pass its id back in 'source' to prefer it again, or in 'ignoreSources' to avoid it. Absent when no source identity applies
statusNodurable request status: queued, running, succeeded, failed, or expired
costUsdYesamount charged to the wallet in USD
jqErrorNopresent only when a jq expression failed; output then holds the full unshaped result and this explains why the reshape did not apply
providerYesthe provider serving the request (AnyAPI)
replayedYestrue when this response replays an identical earlier call (same API, same input) from the last few minutes instead of running again: nothing new was executed and costUsd restates the original charge, it was NOT charged a second time
resultIdNoopaque handle to the full result, cached ~15 min; pass it to read_result to dig deeper for free (no re-run, no charge). Absent when the result was too large to cache
requestIdNodurable request identifier; pass it to get_request to resume without repeating the paid POST
nextActionNomachine-actionable resume instruction present while durable work is pending
serviceOutcomeNoend-to-end AnyAPI service outcome when known
settlementStateNopayment settlement state when known; independent of durable request status

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (which already mark it as non-read-only and potentially destructive), the description discloses strict schema rejection, charging only on success, response-size context risks, and the semantic of p99 as an observation rather than a maximum. These are meaningful behavioral traits not present in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long (six sentences) but every sentence carries operational information: prerequisite schema lookup, strictness warning, timeout guidance, auth, billing, and response trimming. It is front-loaded with the core purpose, though slightly dense; a small amount could be trimmed without losing value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter tool with a rich output schema, the description covers prerequisites, schema strictness, authentication, cost implications, timeout considerations, and response-size mitigation. The presence of an output schema means return-value details are not the description's job; nothing an agent needs to invoke correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes all 7 parameters at 100% coverage, so the baseline is 3. The description adds important semantics: inputs must be built from the schema because strict validation rejects unknown fields, and the response-trimming parameters (fields, max_items, summary) never affect cost. This exceeds the baseline but is somewhat redundant with the schema's per-parameter cost notes.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Execute an API by SKU with a normalized input payload.' This clearly distinguishes run_api from siblings like get_api (schema retrieval), quote_api (pricing), and list_apis (discovery), leaving no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance: call get_api first unless the schema is already read, and use quote_api first to see price and validate input without charging. It also directs the agent to inspect latency via get_api before setting timeouts. No rival tool context is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_apisSearch APIsA
Read-only
Inspect

Search APIs by meaning and keyword across name, slug, and description, returning matches WITH their descriptions (schemas omitted), ranked most relevant first. Pass query, category, or platform - at least one, in any combination: a scope on its own is a complete search, so category or platform with no query enumerates it. Add limit to cap matches (default 25, maximum 50). Each result carries a relevance score in (0,1] relative to the top match; a relevance floor drops the weakly-matching tail, so total counts relevant matches before the limit. ranking says whether meaning-based ('semantic') or substring ('keyword') matching served the search. Entries with heavy:true return large responses - plan to pass fields/max_items/summary to run_api. Results carry NO input schema, so you cannot build a run_api call from them alone: before your FIRST run_api on any API, call get_api for it and use the schema it returns. Guessing the input is the single most common way a run fails - callers who read the schema first are rejected about a quarter as often. Use list_apis to browse everything.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNooptional cap on matches returned (default 25, maximum 50)
queryNofree-text search over API name, slug, and description; optional when category or platform is given
contextYesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
categoryNooptional category slug to narrow the search
platformNooptional API slug prefix to narrow the search

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalYes
rankingYes
resultsYes

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as read-only and non-destructive, so the description adds substantial behavioral context beyond that: it discloses ranking behavior, relevance scores, total counts, ranking type, heavy:true large responses, and the lack of input schemas. It also warns about the common failure mode of guessing inputs, which is valuable behavioral insight.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured, front-loaded with the core purpose and then logically expanding to parameters, output, and critical usage warnings. Every sentence adds value; the length is justified by the tool's complexity, though it could be slightly tightened without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with annotations covering read-only safety, the description covers all necessary aspects: when to use, how to combine parameters, output shape, and the critical caveat about missing schemas and the need to call get_api before run_api. It also mentions heavy:true entries and the alternative list_apis, making it complete for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema coverage is 100%, the description adds critical semantic details: it explains the combinatorial requirement (at least one of query/category/platform), that category/platform alone enumerate, and the limit's default and max. It also clarifies the meaning of the relevance and total fields in the output, enriching the parameter understanding beyond the schema's minimal descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches APIs by meaning and keyword across name, slug, and description, and returns matches with descriptions (schemas omitted). It explicitly differentiates from siblings by noting the lack of schemas and pointing to get_api for schema retrieval and list_apis for browsing, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance: it explains that at least one of query, category, or platform must be provided, and that category/platform alone enumerate. It also distinguishes from get_api (for schemas) and list_apis (for browsing), and warns against guessing inputs for run_api, giving clear usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_feedbackSend feedbackAInspect

Tell AnyAPI something that is not a defect: an API you wanted and could not find in the catalog, a field missing from a result you needed, a confusing part of the docs or tool descriptions, or what would have made a task easier. Free, never charged. Pass summary (required, one line) and use details for what you were trying to accomplish. Use report_bug instead when something behaved incorrectly.

ParametersJSON Schema
NameRequiredDescriptionDefault
skuNooptional: the sku_id this is about, e.g. 'instagram.reels_search'
contactNooptional: an email address to reply to. Supply one if you are on a trial key, since a trial has no account we can reach
contextYesExplain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization."
detailsNooptional: what you expected, what you got, and anything you already tried
summaryYesone line saying what went wrong or what you want to tell us
request_idNooptional: the requestId or resultId from the run that went wrong. This is the single most useful field: it reaches the stored run, its attempts, and any upstream error body, so you do not need to paste the payload

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesthe stored report id; quote it if you contact support about this
receivedYestrue when the report is stored

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate no readOnly, no idempotent, no destructive hints, so the description carries the burden of explaining side effects. It adds useful behavioral context ('Free, never charged', 'pass summary', 'use details'), but does not explicitly state that this creates a support ticket or feedback record, nor what the response contains. With an output schema present, the response shape is covered, so a 3 is fair.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: it defines the tool's purpose in the first sentence, gives concrete examples of appropriate feedback, and ends with the sibling routing rule. It is slightly dense but every sentence earns its place. Minor structural improvement would be separating the parameter guidance from the purpose statement, but it is not bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's non-destructive, feedback-collection nature and a full output schema, the description covers the core context well: what kind of feedback is welcome, that it is free, how to structure the content, and when to use report_bug instead. It could mention whether the feedback is anonymous by default or what happens after submission, but those are minor gaps for a low-risk tool with a clear output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds meaningful value by explaining the intended split between summary and details, emphasizing that summary is one line, and by describing what fields like sku and request_id are useful for. Some parameter-specific nuance, such as the request_id guidance, lives in the schema already, but the description's guidance on using details versus summary strengthens the agent's ability to fill the fields correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Tell') and resource (AnyAPI feedback), and explicitly distinguishes its scope: non-defect feedback about missing APIs, fields, docs, or task friction. It clearly differentiates from the sibling report_bug, so an agent can tell them apart without inspecting either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use context ('an API you wanted and could not find', 'a field missing', 'confusing docs') and an explicit alternative ('Use report_bug instead when something behaved incorrectly'). This is exactly the kind of routing guidance that lets an agent choose correctly between siblings.

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.

  1. 3 tool updates
    • Changedget_request1 field changed
      • addedOutput schema / properties / source
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "the source that served this run: pass its id back in 'source' to prefer it again, or in 'ignoreSources' to avoid it. Absent when no source identity applies",
        +  "properties": {
        +    "artworkKey": {
        +      "type": "string"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "kind": {
        +      "type": "string"
        +    },
        +    "name": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "name",
        +    "kind",
        +    "artworkKey"
        +  ],
        +  "type": [
        +    "null",
        +    "object"
        +  ]
        +}
    • Changedread_result1 field changed
      • addedOutput schema / properties / source
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "the source that served this run: pass its id back in 'source' to prefer it again, or in 'ignoreSources' to avoid it. Absent when no source identity applies",
        +  "properties": {
        +    "artworkKey": {
        +      "type": "string"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "kind": {
        +      "type": "string"
        +    },
        +    "name": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "name",
        +    "kind",
        +    "artworkKey"
        +  ],
        +  "type": [
        +    "null",
        +    "object"
        +  ]
        +}
    • Changedrun_api1 field changed
      • addedOutput schema / properties / source
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "the source that served this run: pass its id back in 'source' to prefer it again, or in 'ignoreSources' to avoid it. Absent when no source identity applies",
        +  "properties": {
        +    "artworkKey": {
        +      "type": "string"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "kind": {
        +      "type": "string"
        +    },
        +    "name": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "name",
        +    "kind",
        +    "artworkKey"
        +  ],
        +  "type": [
        +    "null",
        +    "object"
        +  ]
        +}
  2. 1 tool update
    • Changedget_api1 field changed
      • addedOutput schema / properties / scraper / properties / lanes / items / properties / fields
        Added value: +{
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": [
        +    "null",
        +    "array"
        +  ]
        +}
  3. 3 tool updates
    • Changedget_api2 fields changed
      • addedOutput schema / properties / scraper / properties / lanes / items / properties / pricing / properties / addons
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "field": {
        +        "type": "string"
        +      },
        +      "id": {
        +        "type": "string"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "usd": {
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "label",
        +      "field",
        +      "usd"
        +    ],
        +    "type": "object"
        +  },
        +  "type": [
        +    "null",
        +    "array"
        +  ]
        +}
      • addedOutput schema / properties / scraper / properties / pricing / properties / from / properties / addons
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "field": {
        +        "type": "string"
        +      },
        +      "id": {
        +        "type": "string"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "usd": {
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "label",
        +      "field",
        +      "usd"
        +    ],
        +    "type": "object"
        +  },
        +  "type": [
        +    "null",
        +    "array"
        +  ]
        +}
    • Changedlist_apis1 field changed
      • addedOutput schema / properties / scrapers / items / properties / pricing / properties / from / properties / addons
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "field": {
        +        "type": "string"
        +      },
        +      "id": {
        +        "type": "string"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "usd": {
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "label",
        +      "field",
        +      "usd"
        +    ],
        +    "type": "object"
        +  },
        +  "type": [
        +    "null",
        +    "array"
        +  ]
        +}
    • Changedsearch_apis1 field changed
      • addedOutput schema / properties / results / items / properties / pricing / properties / from / properties / addons
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "field": {
        +        "type": "string"
        +      },
        +      "id": {
        +        "type": "string"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "usd": {
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "label",
        +      "field",
        +      "usd"
        +    ],
        +    "type": "object"
        +  },
        +  "type": [
        +    "null",
        +    "array"
        +  ]
        +}
  4. 3 tool updates
    • Changedget_request1 field changed
      • changedOutput schema / properties / hint / description
        Previous value: -"optional nudge. 'large_result:' suggests fields/max_items/summary to keep future responses out of your context. 'paging_unavailable:' means this result came from a source that cannot return a nextCursor, so it may be INCOMPLETE and you cannot page further - re-run with requireCursor true (may cost more per request) if you need the full list"New value: +"optional nudge. 'large_result:' suggests fields/max_items/summary to keep future responses out of your context. 'paging_unavailable:' means this result came from a source that cannot return a nextCursor, so it may be INCOMPLETE and you cannot page further - re-run with requireFields [\"nextCursor\"] (may cost more per request) if you need the full list"
    • Changedread_result1 field changed
      • changedOutput schema / properties / hint / description
        Previous value: -"optional nudge. 'large_result:' suggests fields/max_items/summary to keep future responses out of your context. 'paging_unavailable:' means this result came from a source that cannot return a nextCursor, so it may be INCOMPLETE and you cannot page further - re-run with requireCursor true (may cost more per request) if you need the full list"New value: +"optional nudge. 'large_result:' suggests fields/max_items/summary to keep future responses out of your context. 'paging_unavailable:' means this result came from a source that cannot return a nextCursor, so it may be INCOMPLETE and you cannot page further - re-run with requireFields [\"nextCursor\"] (may cost more per request) if you need the full list"
    • Changedrun_api1 field changed
      • changedOutput schema / properties / hint / description
        Previous value: -"optional nudge. 'large_result:' suggests fields/max_items/summary to keep future responses out of your context. 'paging_unavailable:' means this result came from a source that cannot return a nextCursor, so it may be INCOMPLETE and you cannot page further - re-run with requireCursor true (may cost more per request) if you need the full list"New value: +"optional nudge. 'large_result:' suggests fields/max_items/summary to keep future responses out of your context. 'paging_unavailable:' means this result came from a source that cannot return a nextCursor, so it may be INCOMPLETE and you cannot page further - re-run with requireFields [\"nextCursor\"] (may cost more per request) if you need the full list"
  5. 1 tool update
    • Changedsearch_apis2 fields changed
      • changedInput schema / properties / query / description
        Previous value: -"free-text search over API name, slug, and description"New value: +"free-text search over API name, slug, and description; optional when category or platform is given"
      • changedInput schema / required
        Previous value: -[
        -  "query",
        -  "context"
        -]New value: +[
        +  "context"
        +]
  6. 10 tool updates
    • Changedget_api22 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "sku_id"
        -]New value: +[
        +  "sku_id",
        +  "context"
        +]
      • removedOutput schema / properties / scraper / properties / baseUsd
        Removed value: -{
        -  "description": "fixed cost per request in USD, charged regardless of count",
        -  "type": "number"
        -}
      • addedOutput schema / properties / scraper / properties / excludesCallerDelay
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / scraper / properties / execution
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "mode": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "mode"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / scraper / properties / failover
        Added value: +{
        +  "type": "boolean"
        +}
      • removedOutput schema / properties / scraper / properties / heavy / description
        Removed value: -"true when this API's responses are typically large; pass fields, max_items, or summary to run_api (and a small limit in the input) to keep the result out of your context"
      • changedOutput schema / properties / scraper / properties / inputSchema
        Previous value: -{
        -  "description": "normalized input JSON Schema"
        -}New value: +true
      • addedOutput schema / properties / scraper / properties / lanes
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "health": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "latencyP50Ms": {
        +            "type": "integer"
        +          },
        +          "latencySample": {
        +            "type": "integer"
        +          },
        +          "requests": {
        +            "type": "integer"
        +          },
        +          "servedRequests": {
        +            "type": "integer"
        +          },
        +          "uptimePct": {
        +            "type": "number"
        +          },
        +          "uptimeSample": {
        +            "type": "integer"
        +          },
        +          "window": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "window",
        +          "uptimePct",
        +          "latencyP50Ms",
        +          "uptimeSample",
        +          "latencySample",
        +          "requests",
        +          "servedRequests"
        +        ],
        +        "type": [
        +          "null",
        +          "object"
        +        ]
        +      },
        +      "pricing": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "baseUsd": {
        +            "type": [
        +              "null",
        +              "number"
        +            ]
        +          },
        +          "maxPer1kUsd": {
        +            "type": "number"
        +          },
        +          "maxUsd": {
        +            "type": "number"
        +          },
        +          "model": {
        +            "type": "string"
        +          },
        +          "perUnitUsd": {
        +            "type": [
        +              "null",
        +              "number"
        +            ]
        +          },
        +          "unit": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "model",
        +          "unit",
        +          "maxUsd",
        +          "maxPer1kUsd"
        +        ],
        +        "type": "object"
        +      },
        +      "source": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "artworkKey": {
        +            "type": "string"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "kind": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "name",
        +          "kind",
        +          "artworkKey"
        +        ],
        +        "type": "object"
        +      }
        +    },
        +    "required": [
        +      "pricing",
        +      "source"
        +    ],
        +    "type": "object"
        +  },
        +  "type": [
        +    "null",
        +    "array"
        +  ]
        +}
      • addedOutput schema / properties / scraper / properties / latency
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "basis": {
        +      "type": "string"
        +    },
        +    "p50Ms": {
        +      "type": "integer"
        +    },
        +    "p95Ms": {
        +      "type": "integer"
        +    },
        +    "p99Ms": {
        +      "type": "integer"
        +    },
        +    "sample": {
        +      "type": "integer"
        +    },
        +    "window": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "window",
        +    "p50Ms",
        +    "p95Ms",
        +    "p99Ms",
        +    "sample",
        +    "basis"
        +  ],
        +  "type": [
        +    "null",
        +    "object"
        +  ]
        +}
      • addedOutput schema / properties / scraper / properties / method
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / properties / scraper / properties / outputSchema
        Previous value: -{
        -  "description": "normalized output JSON Schema"
        -}New value: +true
      • addedOutput schema / properties / scraper / properties / path
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / scraper / properties / perItemUnit
        Removed value: -{
        -  "description": "the unit perItemUsd is charged per: 'result' (default) or an input unit like 'username' for input-priced SKUs",
        -  "type": "string"
        -}
      • removedOutput schema / properties / scraper / properties / perItemUsd
        Removed value: -{
        -  "description": "marginal cost in USD per billable unit (see perItemUnit); total = baseUsd + perItemUsd × unitCount, capped at priceUsd",
        -  "type": "number"
        -}
      • removedOutput schema / properties / scraper / properties / priceUsd
        Removed value: -{
        -  "description": "maximum price per request in USD (the reserved ceiling at the default limit)",
        -  "type": "number"
        -}
      • addedOutput schema / properties / scraper / properties / pricing
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "failoverMaxPer1kUsd": {
        +      "type": "number"
        +    },
        +    "failoverMaxUsd": {
        +      "type": "number"
        +    },
        +    "from": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "baseUsd": {
        +          "type": [
        +            "null",
        +            "number"
        +          ]
        +        },
        +        "maxPer1kUsd": {
        +          "type": "number"
        +        },
        +        "maxUsd": {
        +          "type": "number"
        +        },
        +        "model": {
        +          "type": "string"
        +        },
        +        "perUnitUsd": {
        +          "type": [
        +            "null",
        +            "number"
        +          ]
        +        },
        +        "unit": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "model",
        +        "unit",
        +        "maxUsd",
        +        "maxPer1kUsd"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "from",
        +    "failoverMaxUsd",
        +    "failoverMaxPer1kUsd"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / scraper / properties / provider
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / scraper / properties / tryEligible
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / scraper / properties / tryMaxItems
        Added value: +{
        +  "type": [
        +    "null",
        +    "integer"
        +  ]
        +}
      • changedOutput schema / properties / scraper / required
        Previous value: -[
        -  "id",
        -  "slug",
        -  "category",
        -  "name",
        -  "description",
        -  "priceUsd",
        -  "baseUsd",
        -  "perItemUsd"
        -]New value: +[
        +  "id",
        +  "slug",
        +  "category",
        +  "name",
        +  "method",
        +  "path",
        +  "provider",
        +  "execution",
        +  "pricing",
        +  "failover",
        +  "description",
        +  "lanes",
        +  "latency",
        +  "tryEligible"
        +]
    • Changedget_balance3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties
        Added value: +{
        +  "context": {
        +    "description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
        +    "type": "string"
        +  }
        +}
      • addedInput schema / required
        Added value: +[
        +  "context"
        +]
    • Addedget_request
    • Changedlist_apis17 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
        +  "type": "string"
        +}
      • removedInput schema / properties / query
        Removed value: -{
        -  "description": "optional free-text filter over API name and description",
        -  "type": "string"
        -}
      • addedInput schema / required
        Added value: +[
        +  "context"
        +]
      • removedOutput schema / properties / scrapers / items / properties / baseUsd
        Removed value: -{
        -  "description": "fixed cost per request in USD, charged regardless of count",
        -  "type": "number"
        -}
      • addedOutput schema / properties / scrapers / items / properties / excludesCallerDelay
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / scrapers / items / properties / execution
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "mode": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "mode"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / scrapers / items / properties / failover
        Added value: +{
        +  "type": "boolean"
        +}
      • removedOutput schema / properties / scrapers / items / properties / heavy / description
        Removed value: -"true when this API's responses are typically large; pass fields, max_items, or summary to run_api (and a small limit in the input) to keep the result out of your context"
      • addedOutput schema / properties / scrapers / items / properties / method
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / scrapers / items / properties / path
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / scrapers / items / properties / perItemUnit
        Removed value: -{
        -  "description": "the unit perItemUsd is charged per: 'result' (default) or an input unit like 'username' for input-priced SKUs",
        -  "type": "string"
        -}
      • removedOutput schema / properties / scrapers / items / properties / perItemUsd
        Removed value: -{
        -  "description": "marginal cost in USD per billable unit (see perItemUnit); total = baseUsd + perItemUsd × unitCount, capped at priceUsd",
        -  "type": "number"
        -}
      • removedOutput schema / properties / scrapers / items / properties / priceUsd
        Removed value: -{
        -  "description": "maximum price per request in USD (the reserved ceiling at the default limit)",
        -  "type": "number"
        -}
      • addedOutput schema / properties / scrapers / items / properties / pricing
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "failoverMaxPer1kUsd": {
        +      "type": "number"
        +    },
        +    "failoverMaxUsd": {
        +      "type": "number"
        +    },
        +    "from": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "baseUsd": {
        +          "type": [
        +            "null",
        +            "number"
        +          ]
        +        },
        +        "maxPer1kUsd": {
        +          "type": "number"
        +        },
        +        "maxUsd": {
        +          "type": "number"
        +        },
        +        "model": {
        +          "type": "string"
        +        },
        +        "perUnitUsd": {
        +          "type": [
        +            "null",
        +            "number"
        +          ]
        +        },
        +        "unit": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "model",
        +        "unit",
        +        "maxUsd",
        +        "maxPer1kUsd"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "from",
        +    "failoverMaxUsd",
        +    "failoverMaxPer1kUsd"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / scrapers / items / properties / provider
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / properties / scrapers / items / required
        Previous value: -[
        -  "id",
        -  "slug",
        -  "category",
        -  "name",
        -  "priceUsd",
        -  "baseUsd",
        -  "perItemUsd"
        -]New value: +[
        +  "id",
        +  "slug",
        +  "category",
        +  "name",
        +  "method",
        +  "path",
        +  "provider",
        +  "execution",
        +  "pricing",
        +  "failover"
        +]
    • Changedquote_api3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "sku_id",
        -  "input"
        -]New value: +[
        +  "sku_id",
        +  "input",
        +  "context"
        +]
    • Changedread_result12 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "result_id"
        -]New value: +[
        +  "result_id",
        +  "context"
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "safe AnyAPI failure code when durable work failed",
        +  "properties": {
        +    "code": {
        +      "description": "safe AnyAPI error code",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code"
        +  ],
        +  "type": [
        +    "null",
        +    "object"
        +  ]
        +}
      • changedOutput schema / properties / hint / description
        Previous value: -"optional nudge, present only on large untrimmed results, suggesting fields/max_items/summary to keep future responses out of your context"New value: +"optional nudge. 'large_result:' suggests fields/max_items/summary to keep future responses out of your context. 'paging_unavailable:' means this result came from a source that cannot return a nextCursor, so it may be INCOMPLETE and you cannot page further - re-run with requireCursor true (may cost more per request) if you need the full list"
      • addedOutput schema / properties / nextAction
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "machine-actionable resume instruction present while durable work is pending",
        +  "properties": {
        +    "requestId": {
        +      "description": "request_id argument for the next tool call",
        +      "type": "string"
        +    },
        +    "retryAfterSeconds": {
        +      "description": "minimum delay before polling again",
        +      "type": "integer"
        +    },
        +    "tool": {
        +      "description": "MCP tool to call next",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "tool",
        +    "requestId",
        +    "retryAfterSeconds"
        +  ],
        +  "type": [
        +    "null",
        +    "object"
        +  ]
        +}
      • addedOutput schema / properties / replayed
        Added value: +{
        +  "description": "true when this response replays an identical earlier call (same API, same input) from the last few minutes instead of running again: nothing new was executed and costUsd restates the original charge, it was NOT charged a second time",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "description": "durable request identifier; pass it to get_request to resume without repeating the paid POST",
        +  "type": "string"
        +}
      • addedOutput schema / properties / serviceOutcome
        Added value: +{
        +  "description": "end-to-end AnyAPI service outcome when known",
        +  "type": "string"
        +}
      • addedOutput schema / properties / settlementState
        Added value: +{
        +  "description": "payment settlement state when known; independent of durable request status",
        +  "type": "string"
        +}
      • addedOutput schema / properties / status
        Added value: +{
        +  "description": "durable request status: queued, running, succeeded, failed, or expired",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "output",
        -  "provider",
        -  "costUsd",
        -  "items"
        -]New value: +[
        +  "output",
        +  "provider",
        +  "costUsd",
        +  "items",
        +  "replayed"
        +]
    • Addedreport_bug
    • Changedrun_api12 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "sku_id",
        -  "input"
        -]New value: +[
        +  "sku_id",
        +  "input",
        +  "context"
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "safe AnyAPI failure code when durable work failed",
        +  "properties": {
        +    "code": {
        +      "description": "safe AnyAPI error code",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code"
        +  ],
        +  "type": [
        +    "null",
        +    "object"
        +  ]
        +}
      • changedOutput schema / properties / hint / description
        Previous value: -"optional nudge, present only on large untrimmed results, suggesting fields/max_items/summary to keep future responses out of your context"New value: +"optional nudge. 'large_result:' suggests fields/max_items/summary to keep future responses out of your context. 'paging_unavailable:' means this result came from a source that cannot return a nextCursor, so it may be INCOMPLETE and you cannot page further - re-run with requireCursor true (may cost more per request) if you need the full list"
      • addedOutput schema / properties / nextAction
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "machine-actionable resume instruction present while durable work is pending",
        +  "properties": {
        +    "requestId": {
        +      "description": "request_id argument for the next tool call",
        +      "type": "string"
        +    },
        +    "retryAfterSeconds": {
        +      "description": "minimum delay before polling again",
        +      "type": "integer"
        +    },
        +    "tool": {
        +      "description": "MCP tool to call next",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "tool",
        +    "requestId",
        +    "retryAfterSeconds"
        +  ],
        +  "type": [
        +    "null",
        +    "object"
        +  ]
        +}
      • addedOutput schema / properties / replayed
        Added value: +{
        +  "description": "true when this response replays an identical earlier call (same API, same input) from the last few minutes instead of running again: nothing new was executed and costUsd restates the original charge, it was NOT charged a second time",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "description": "durable request identifier; pass it to get_request to resume without repeating the paid POST",
        +  "type": "string"
        +}
      • addedOutput schema / properties / serviceOutcome
        Added value: +{
        +  "description": "end-to-end AnyAPI service outcome when known",
        +  "type": "string"
        +}
      • addedOutput schema / properties / settlementState
        Added value: +{
        +  "description": "payment settlement state when known; independent of durable request status",
        +  "type": "string"
        +}
      • addedOutput schema / properties / status
        Added value: +{
        +  "description": "durable request status: queued, running, succeeded, failed, or expired",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "output",
        -  "provider",
        -  "costUsd",
        -  "items"
        -]New value: +[
        +  "output",
        +  "provider",
        +  "costUsd",
        +  "items",
        +  "replayed"
        +]
    • Changedsearch_apis24 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): \"Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization.\"",
        +  "type": "string"
        +}
      • changedInput schema / properties / limit / description
        Previous value: -"optional cap on matches returned (default 25); 'total' reports how many relevant matches there were before the cap"New value: +"optional cap on matches returned (default 25, maximum 50)"
      • addedInput schema / properties / platform
        Added value: +{
        +  "description": "optional API slug prefix to narrow the search",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "context"
        +]
      • removedOutput schema / properties / ranking / description
        Removed value: -"'semantic' when meaning-based ranking served this search, 'keyword' when it fell back to substring matching (relevance is coarser)"
      • removedOutput schema / properties / results / description
        Removed value: -"matching APIs with descriptions (schemas omitted), most relevant first"
      • removedOutput schema / properties / results / items / properties / baseUsd
        Removed value: -{
        -  "description": "fixed cost per request in USD, charged regardless of count",
        -  "type": "number"
        -}
      • addedOutput schema / properties / results / items / properties / excludesCallerDelay
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / results / items / properties / execution
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "mode": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "mode"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / results / items / properties / failover
        Added value: +{
        +  "type": "boolean"
        +}
      • removedOutput schema / properties / results / items / properties / heavy / description
        Removed value: -"true when this API's responses are typically large; pass fields, max_items, or summary to run_api (and a small limit in the input) to keep the result out of your context"
      • removedOutput schema / properties / results / items / properties / inputSchema
        Removed value: -{
        -  "description": "normalized input JSON Schema"
        -}
      • addedOutput schema / properties / results / items / properties / method
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / results / items / properties / outputSchema
        Removed value: -{
        -  "description": "normalized output JSON Schema"
        -}
      • addedOutput schema / properties / results / items / properties / path
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / results / items / properties / perItemUnit
        Removed value: -{
        -  "description": "the unit perItemUsd is charged per: 'result' (default) or an input unit like 'username' for input-priced SKUs",
        -  "type": "string"
        -}
      • removedOutput schema / properties / results / items / properties / perItemUsd
        Removed value: -{
        -  "description": "marginal cost in USD per billable unit (see perItemUnit); total = baseUsd + perItemUsd × unitCount, capped at priceUsd",
        -  "type": "number"
        -}
      • removedOutput schema / properties / results / items / properties / priceUsd
        Removed value: -{
        -  "description": "maximum price per request in USD (the reserved ceiling at the default limit)",
        -  "type": "number"
        -}
      • addedOutput schema / properties / results / items / properties / pricing
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "failoverMaxPer1kUsd": {
        +      "type": "number"
        +    },
        +    "failoverMaxUsd": {
        +      "type": "number"
        +    },
        +    "from": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "baseUsd": {
        +          "type": [
        +            "null",
        +            "number"
        +          ]
        +        },
        +        "maxPer1kUsd": {
        +          "type": "number"
        +        },
        +        "maxUsd": {
        +          "type": "number"
        +        },
        +        "model": {
        +          "type": "string"
        +        },
        +        "perUnitUsd": {
        +          "type": [
        +            "null",
        +            "number"
        +          ]
        +        },
        +        "unit": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "model",
        +        "unit",
        +        "maxUsd",
        +        "maxPer1kUsd"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "from",
        +    "failoverMaxUsd",
        +    "failoverMaxPer1kUsd"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / results / items / properties / provider
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / properties / results / items / properties / relevance / description
        Previous value: -"relative relevance in (0,1], 1.0 = the best match in this response; comparable only within this response"New value: +"relative relevance in (0,1], 1.0 = the best match"
      • changedOutput schema / properties / results / items / required
        Previous value: -[
        -  "id",
        -  "slug",
        -  "category",
        -  "name",
        -  "description",
        -  "priceUsd",
        -  "baseUsd",
        -  "perItemUsd",
        -  "relevance"
        -]New value: +[
        +  "id",
        +  "slug",
        +  "category",
        +  "name",
        +  "description",
        +  "method",
        +  "path",
        +  "provider",
        +  "execution",
        +  "pricing",
        +  "failover",
        +  "relevance"
        +]
      • removedOutput schema / properties / total / description
        Removed value: -"number of relevant matches (after the relevance floor), before the limit cap - if this is large, narrow your query"
    • Addedsend_feedback
  7. 4 tool updates
    • Changedget_api1 field changed
      • addedOutput schema / properties / scraper / properties / heavy
        Added value: +{
        +  "description": "true when this API's responses are typically large; pass fields, max_items, or summary to run_api (and a small limit in the input) to keep the result out of your context",
        +  "type": "boolean"
        +}
    • Changedlist_apis1 field changed
      • addedOutput schema / properties / scrapers / items / properties / heavy
        Added value: +{
        +  "description": "true when this API's responses are typically large; pass fields, max_items, or summary to run_api (and a small limit in the input) to keep the result out of your context",
        +  "type": "boolean"
        +}
    • Addedquote_api
    • Changedsearch_apis8 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"optional cap on matches returned (default 25); 'total' reports how many matched before the cap"New value: +"optional cap on matches returned (default 25); 'total' reports how many relevant matches there were before the cap"
      • addedOutput schema / properties / ranking
        Added value: +{
        +  "description": "'semantic' when meaning-based ranking served this search, 'keyword' when it fell back to substring matching (relevance is coarser)",
        +  "type": "string"
        +}
      • changedOutput schema / properties / results / description
        Previous value: -"matching APIs with descriptions (schemas omitted)"New value: +"matching APIs with descriptions (schemas omitted), most relevant first"
      • addedOutput schema / properties / results / items / properties / heavy
        Added value: +{
        +  "description": "true when this API's responses are typically large; pass fields, max_items, or summary to run_api (and a small limit in the input) to keep the result out of your context",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / results / items / properties / relevance
        Added value: +{
        +  "description": "relative relevance in (0,1], 1.0 = the best match in this response; comparable only within this response",
        +  "type": "number"
        +}
      • changedOutput schema / properties / results / items / required
        Previous value: -[
        -  "id",
        -  "slug",
        -  "category",
        -  "name",
        -  "description",
        -  "priceUsd",
        -  "baseUsd",
        -  "perItemUsd"
        -]New value: +[
        +  "id",
        +  "slug",
        +  "category",
        +  "name",
        +  "description",
        +  "priceUsd",
        +  "baseUsd",
        +  "perItemUsd",
        +  "relevance"
        +]
      • changedOutput schema / properties / total / description
        Previous value: -"number of APIs that matched before the limit was applied"New value: +"number of relevant matches (after the relevance floor), before the limit cap - if this is large, narrow your query"
      • changedOutput schema / required
        Previous value: -[
        -  "results",
        -  "total"
        -]New value: +[
        +  "results",
        +  "total",
        +  "ranking"
        +]
  8. 2 tool updates
    • Addedread_result
    • Changedrun_api4 fields changed
      • addedInput schema / properties / jq
        Added value: +{
        +  "description": "optional: a jq expression to reshape the result; its output replaces 'output' (multiple outputs collect into an array). Example: '.data | {title, description, md: .markdown[:3500]}'. Sandboxed 250ms/2MB budget; on failure the full result is returned with jqError. Does not change cost",
        +  "type": "string"
        +}
      • changedInput schema / properties / summary / description
        Previous value: -"optional: return only a structural outline (top-level keys and item counts) instead of the full data. Does not change cost"New value: +"optional: return only a structural outline (top-level keys, item counts, and per-field byte sizes) instead of the full data. Does not change cost"
      • addedOutput schema / properties / jqError
        Added value: +{
        +  "description": "present only when a jq expression failed; output then holds the full unshaped result and this explains why the reshape did not apply",
        +  "type": "string"
        +}
      • addedOutput schema / properties / resultId
        Added value: +{
        +  "description": "opaque handle to the full result, cached ~15 min; pass it to read_result to dig deeper for free (no re-run, no charge). Absent when the result was too large to cache",
        +  "type": "string"
        +}
  9. 2 tool updates
    • Changedlist_apis5 fields changed
      • changedOutput schema / properties / scrapers / description
        Previous value: -"matching APIs"New value: +"matching APIs (lightweight summaries: no description or schemas)"
      • removedOutput schema / properties / scrapers / items / properties / description
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / scrapers / items / properties / inputSchema
        Removed value: -{
        -  "description": "normalized input JSON Schema"
        -}
      • removedOutput schema / properties / scrapers / items / properties / outputSchema
        Removed value: -{
        -  "description": "normalized output JSON Schema"
        -}
      • changedOutput schema / properties / scrapers / items / required
        Previous value: -[
        -  "id",
        -  "slug",
        -  "category",
        -  "name",
        -  "description",
        -  "priceUsd",
        -  "baseUsd",
        -  "perItemUsd"
        -]New value: +[
        +  "id",
        +  "slug",
        +  "category",
        +  "name",
        +  "priceUsd",
        +  "baseUsd",
        +  "perItemUsd"
        +]
    • Addedsearch_apis
  10. 4 tool updates
    • First observedget_api
    • First observedget_balance
    • First observedlist_apis
    • First observedrun_api

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.