anyapi
Server Details
Hundreds of scraping & data APIs through one key. USD pay-per-request, normalized schemas, failover.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- getanyapi-com/skills
- GitHub Stars
- 0
Available Tools
10 toolsget_apiGet API detailsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sku_id | Yes | the API SKU slug to describe | |
| context | Yes | 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." |
Output Schema
| Name | Required | Description |
|---|---|---|
| scraper | Yes | the API definition with input/output schemas |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only and non-destructive, but the description adds valuable behavioral context beyond that: p99 is an observation rather than a maximum, latency data is nullable and trailing-30-day, heavy:true responses can be large, and the returned payload includes sample counts. This gives an agent accurate expectations about what the call returns and how to handle it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place: the first states exactly what is returned, the second gives concrete usage guidance, and the third warns about heavy responses and points to run_api parameters. It is front-loaded and contains no filler or repetition of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with an output schema, the description need not re-explain return values; here it goes beyond that by covering pricing units, latency caveats, sample counts, large-response behavior, and next-step guidance for run_api. An agent has what it needs to decide when to call this tool and what to do with the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully explains sku_id and context. The description reinforces that sku_id is a SKU slug and hints at heavy-response handling, but it does not add significant parameter-level meaning beyond the schema. Baseline 3 is appropriate here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get'), a precise resource ('full definition of one API by SKU'), and enumerates exactly what is included: normalized JSON schemas, lane-level pricing, and latency percentiles with sample counts. This clearly differentiates it from sibling tools like list_apis or search_apis, which would not return all these details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear use case: inspect latency before choosing a client or MCP timeout, and plan around heavy:true entries by using fields/max_items/summary when calling run_api. It does not explicitly state when not to use this tool or how it compares to list_apis/search_apis, so it falls short of a 5 but is much stronger than a vague generic statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_balanceCheck wallet balanceARead-onlyInspect
Get the remaining wallet balance (in USD) for the AnyAPI key supplied as a Bearer token. Requires a valid AnyAPI key.
| Name | Required | Description | Default |
|---|---|---|---|
| context | Yes | 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." |
Output Schema
| Name | Required | Description |
|---|---|---|
| balanceUsd | Yes | remaining wallet balance for this API key, in USD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set readOnlyHint=true and destructiveHint=false, and the description does not contradict them. It adds useful behavioral detail: the result is denominated in USD and a valid key must be presented as a Bearer token. It does not cover error responses or rate limits, but for a simple read-only balance check the added context is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, with the core function front-loaded and the authentication requirement as a concise second clause. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only tool with an output schema, the description supplies the essential facts: what is checked, the currency, and the required authentication. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, context, is fully described in the schema (100% coverage), so the description does not need to document it. The Bearer-token mention clarifies that the API key is not a separate parameter but an auth header. This matches the baseline of 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource ('remaining wallet balance'), a unit ('in USD'), and an authentication context ('AnyAPI key supplied as a Bearer token'). It clearly distinguishes get_balance from siblings like get_api or run_api, none of which concern wallet balances.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes that the tool is for checking the balance tied to the current API key, which implies using it before or instead of making billable API calls. It does not name alternatives, but the context is unambiguous given the sibling list contains no other balance-related tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_requestCheck a requestARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| context | Yes | 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." | |
| request_id | Yes | durable request identifier returned by run_api |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | 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 |
| error | No | safe AnyAPI failure code when durable work failed |
| items | Yes | number 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 |
| output | Yes | normalized output payload |
| status | No | durable request status: queued, running, succeeded, failed, or expired |
| costUsd | Yes | amount charged to the wallet in USD |
| jqError | No | present only when a jq expression failed; output then holds the full unshaped result and this explains why the reshape did not apply |
| provider | Yes | the provider serving the request (AnyAPI) |
| replayed | Yes | 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 |
| resultId | No | 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 |
| requestId | No | durable request identifier; pass it to get_request to resume without repeating the paid POST |
| nextAction | No | machine-actionable resume instruction present while durable work is pending |
| serviceOutcome | No | end-to-end AnyAPI service outcome when known |
| settlementState | No | payment settlement state when known; independent of durable request status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as readOnly. The description adds valuable behavioral context: it reads AnyAPI stored state, never repeats the paid dispatch, and supports polling after retryAfterSeconds. This goes beyond the annotation baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences deliver purpose, behavioral guarantee, and polling guidance with no filler. The most important and differentiating information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With full parameter documentation and an output schema present, the description covers the essential usage cycle: inspect state, avoid duplicate dispatch, poll while queued/running. The term 'resume' is slightly unexplained, but the overall call guidance is complete enough for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema documents both parameters well. The description adds minor context by indicating request_id comes from run_api, but the schema already carries the primary semantic weight.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description names specific verbs 'Inspect or resume' and a clear resource: durable AnyAPI requests returned by run_api. It also explicitly states that this reads stored state and never repeats the paid provider dispatch, which differentiates it from run_api and other sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly frames when to use the tool: after run_api, and while polling 'queued' or 'running' requests via retryAfterSeconds. It does not explicitly name alternatives or exclusion conditions, but the polling guidance is concrete and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_apisBrowse APIsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| context | Yes | 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." | |
| category | No | optional category slug to filter by |
Output Schema
| Name | Required | Description |
|---|---|---|
| scrapers | Yes | matching APIs (lightweight summaries: no description or schemas) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses meaningful behavior: the output is intentionally lightweight and cheap, excludes descriptions/schemas, and each pricing offer includes maxUsd and maxPer1kUsd with guidance to quote the per-1k figure. This adds real context for an agent deciding whether this tool fits the task.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the core purpose, and each sentence carries distinct value: output content, cost/behavior, pricing-field semantics, and sibling routing. There is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only listing tool with a rich output schema and explicit sibling guidance, the description covers the essential decision factors: scope, filtering, cost behavior, field semantics, and when to use alternatives. Nothing needed for correct invocation or selection is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage for both parameters, so the baseline is 3. The description adds only that category is an optional filter, which is helpful but not a major semantic extension beyond the schema's own description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Browse available AnyAPI APIs as lightweight summaries', and clearly scopes the result set to id, name, category, and USD pricing. It also distinguishes itself from siblings by explicitly saying it lacks descriptions/schemas, which separates it from get_api and search_apis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit routing guidance: 'Use search_apis for every ranked query, or get_api for one API's full schemas.' It also notes the optional category filter, so an agent knows when list_apis is the lightweight browsing choice and when an alternative is better.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quote_apiQuote a priceARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | the exact input payload you plan to pass to run_api; the quote resolves pricing the same way the run will | |
| sku_id | Yes | the API SKU slug to price | |
| context | Yes | 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." |
Output Schema
| Name | Required | Description |
|---|---|---|
| exact | Yes | true when the price is exact (minCostUsd == maxCostUsd): a flat SKU or a sealed page |
| baseUsd | Yes | fixed cost per call in USD, charged regardless of count |
| pricing | Yes | a one-line human explanation of how this call is priced |
| maxCostUsd | Yes | the most this call can charge - the reserve held before running |
| minCostUsd | Yes | the likely charge - the cheapest route serves first |
| perItemUsd | Yes | marginal cost in USD per billable unit (see perItemUnit); 0 for a flat SKU |
| perItemUnit | No | the unit perItemUsd is charged per: 'result' (default) or an input unit like 'username' for input-priced SKUs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and destructiveHint annotations, it discloses free access, no key required, no charge/execution, input-schema validation, and the meaning of min/max cost. These behavioral details help the agent set expectations and distinguish a quote from an actual run.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with purpose and timing; every clause adds operational or safety-relevant information, with no filler. The length is appropriate for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers selection, invocation, output semantics, and post-processing constraints. With an output schema present and sibling context given, no critical decision information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all three parameters with high coverage; the description contributes the crucial relationship that input and sku_id must exactly match what would be passed to run_api, and explains validation behavior. It does not need to duplicate the context-parameter instructions already present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the precise action ('Get the exact price of a run_api call') with explicit timing ('BEFORE running it'), a distinct resource ('run_api'), and clear scope ('nothing is charged or executed'). This clearly separates it from siblings such as run_api, get_api, and list_apis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use direction: call it before run_api with the same sku_id and input, and use it as a free validation/quote step. It also adds a usage boundary ('report them as-is and never scale them to 1,000 requests'), though it does not enumerate alternatives beyond run_api.
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 resultARead-onlyInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| jq | No | optional: a jq expression to reshape the result; its output replaces 'output'. Example: '.data | {title, description, md: .markdown[:3500]}'. Sandboxed 250ms/2MB budget | |
| fields | No | optional: keep only these keys on each result item (dotted paths like 'author.name' descend into nested objects) | |
| context | Yes | 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." | |
| summary | No | optional: return only a structural outline (top-level keys, item counts, per-field byte sizes) instead of the full data | |
| max_items | No | optional: cap the number of result items returned; a _truncated note reports how many were withheld | |
| result_id | Yes | the resultId returned by a prior run_api call (cached ~15 min) |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | 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 |
| error | No | safe AnyAPI failure code when durable work failed |
| items | Yes | number 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 |
| output | Yes | normalized output payload |
| status | No | durable request status: queued, running, succeeded, failed, or expired |
| costUsd | Yes | amount charged to the wallet in USD |
| jqError | No | present only when a jq expression failed; output then holds the full unshaped result and this explains why the reshape did not apply |
| provider | Yes | the provider serving the request (AnyAPI) |
| replayed | Yes | 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 |
| resultId | No | 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 |
| requestId | No | durable request identifier; pass it to get_request to resume without repeating the paid POST |
| nextAction | No | machine-actionable resume instruction present while durable work is pending |
| serviceOutcome | No | end-to-end AnyAPI service outcome when known |
| settlementState | No | payment settlement state when known; independent of durable request status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint=true annotation, the description discloses caching (~15 min), privacy (private to your key), and expiration behavior (result_expired). It also explains that fields/max_items/summary/jq reshape the cached result, adding transparency about how the tool modifies output. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the key benefit ('Dig deeper into a paid run WITHOUT re-running or paying again'), and packs essential usage and behavioral info without fluff. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 params) and the presence of an output schema, the description covers the main use cases, caching, expiration, privacy, and reshaping capabilities. It doesn't miss critical information an agent needs to call it correctly, and the output schema covers return details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all parameters (100% coverage), but the description adds value by explaining how the parameters collectively reshape the result and gives a concrete jq example ('.data | {title, description, md: .markdown[:3500]}'). This goes beyond the schema's individual descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'read' and the resource 'cached result' from a prior run_api call, explicitly distinguishing it from running a new API call. It says 'WITHOUT re-running or paying again' and gives concrete examples like 'read the rest of the rows' or 'slice a large field with jq', making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly frames when to use this tool: to avoid re-running or paying for a paid run. It references the alternative run_api ('from a prior run_api call') and provides usage examples (read more rows, slice large field). It also warns about the expiration case ('an expired id returns result_expired (re-run to refresh)'), telling the agent when to re-run instead.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sku | No | optional: the sku_id this is about, e.g. 'instagram.reels_search' | |
| contact | No | optional: an email address to reply to. Supply one if you are on a trial key, since a trial has no account we can reach | |
| context | Yes | 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." | |
| details | No | optional: what you expected, what you got, and anything you already tried | |
| summary | Yes | one line saying what went wrong or what you want to tell us | |
| request_id | No | optional: 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
| Name | Required | Description |
|---|---|---|
| id | Yes | the stored report id; quote it if you contact support about this |
| received | Yes | true when the report is stored |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the all-false annotations: it states the action is free and never charged, explains that request_id reaches the stored run and upstream error body, and instructs the agent to file and continue without asking permission. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences with no filler: purpose, trigger conditions, cost implication, parameter guidance, and behavioral directive are each addressed in order. Every sentence earns its place and the most important usage rule is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a bug-reporting tool with a rich schema and output schema present, the description covers purpose, when to trigger, key parameter guidance, cost, and expected agent behavior. No critical information is missing for selecting and invoking the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Even though schema coverage is 100%, the description adds real value beyond it: it emphasizes that summary is required and one line, positions request_id as the single most useful field, and explains why pasting the payload is unnecessary. This helps the agent prioritize parameters effectively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Tell AnyAPI something is broken') and then enumerates concrete failure scenarios that make the tool's scope unmistakable. It clearly distinguishes bug reporting from the sibling tools, e.g., run_api and send_feedback.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this when' and gives a detailed list of triggering conditions: wrong/empty/malformed data, misleading errors, suspicious prices/schemas, and failed retries. It also tells the agent not to pause the user's task and to proceed with the best alternative, which is strong operational guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_apiRun an APIADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| jq | No | 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 | |
| input | Yes | normalized input payload matching the API input schema | |
| fields | No | optional: keep only these keys on each result item (dotted paths like 'author.name' descend into nested objects). Shrinks the response without changing cost | |
| sku_id | Yes | the API SKU slug to execute | |
| context | Yes | 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." | |
| summary | No | 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 | |
| max_items | No | optional: cap the number of result items returned; a _truncated note reports how many were withheld. Does not change cost |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | 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 |
| error | No | safe AnyAPI failure code when durable work failed |
| items | Yes | number 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 |
| output | Yes | normalized output payload |
| status | No | durable request status: queued, running, succeeded, failed, or expired |
| costUsd | Yes | amount charged to the wallet in USD |
| jqError | No | present only when a jq expression failed; output then holds the full unshaped result and this explains why the reshape did not apply |
| provider | Yes | the provider serving the request (AnyAPI) |
| replayed | Yes | 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 |
| resultId | No | 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 |
| requestId | No | durable request identifier; pass it to get_request to resume without repeating the paid POST |
| nextAction | No | machine-actionable resume instruction present while durable work is pending |
| serviceOutcome | No | end-to-end AnyAPI service outcome when known |
| settlementState | No | payment settlement state when known; independent of durable request status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses important behaviors beyond the annotations: strict unknown-field rejection, Bearer-token authentication, charging only on success, latency p50/p95/p99 caveats, and response-size controls that do not affect cost. It adds substantial operational context without contradicting the readOnly/destructive hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-structured, leading with the core purpose and then layering prerequisites, auth, cost, and response-shaping guidance. Every sentence carries operational value; there is no filler or redundant repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and rich schema, the description covers preconditions, authentication, cost model, timeout considerations, and how to avoid context overflow. With an output schema present, no essential calling information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents all seven parameters, so the baseline is 3. The description adds cross-cutting semantic value by explaining that schemas are strict, that input must be normalized, and that fields, max_items, and summary uniformly reduce response size without changing cost—information not obvious from individual parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: "Execute an API by SKU with a normalized input payload." It also differentiates itself from the siblings by explicitly naming get_api and quote_api as separate prerequisite tools, so an agent can tell run_api apart without opening their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: call get_api first unless the schema was already read, use quote_api first to validate input and see pricing, and consult get_api before setting timeouts. It directly names alternatives and the conditions that select them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_apisSearch APIsARead-onlyInspect
Search APIs by meaning and keyword across name, slug, and description, returning matches WITH their descriptions (schemas omitted), ranked most relevant first. Pass query (required), optionally category or platform to narrow, and 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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | optional cap on matches returned (default 25, maximum 50) | |
| query | Yes | free-text search over API name, slug, and description | |
| context | Yes | 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." | |
| category | No | optional category slug to narrow the search | |
| platform | No | optional API slug prefix to narrow the search |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | |
| ranking | Yes | |
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint/destructiveHint annotations, the description discloses rich behavior: relevance scores in (0,1], a relevance floor, ranking modes, heavy:true response implications, and the absence of input schemas in results. It also quantifies failure rates for callers who skip schema lookup, giving agents a strong behavioral expectation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than the minimum but every section earns its place: search semantics, parameter usage, return behavior, and the critical get_api prerequisite. The only mild redundancy is repeating the schema's default/max for limit and the cautionary sentence, which slightly extends length but retains instructional value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value documentation is not strictly required, yet the description still covers relevance, ranking, total, and heavy-response behavior. It also closes the operational loop by telling the agent to call get_api before run_api, making the tool safely callable in its intended workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds value by clarifying that query is required, category/platform are narrowing filters, limit caps matches with defaults, and how relevance/ranking semantics interact with search. This goes beyond the schema's field-level text without being overly verbose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific action and object: 'Search APIs by meaning and keyword across name, slug, and description.' It clearly distinguishes itself from siblings by noting returns include descriptions but omit schemas, ranked by relevance, and later points to list_apis for browsing and get_api for schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly instructs when to switch to alternatives: 'Use list_apis to browse everything' and 'before your FIRST run_api on any API, call get_api for it.' It explains that search results alone cannot support a run_api call, which prevents misuse and gives clear decision guidance.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sku | No | optional: the sku_id this is about, e.g. 'instagram.reels_search' | |
| contact | No | optional: an email address to reply to. Supply one if you are on a trial key, since a trial has no account we can reach | |
| context | Yes | 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." | |
| details | No | optional: what you expected, what you got, and anything you already tried | |
| summary | Yes | one line saying what went wrong or what you want to tell us | |
| request_id | No | optional: 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
| Name | Required | Description |
|---|---|---|
| id | Yes | the stored report id; quote it if you contact support about this |
| received | Yes | true when the report is stored |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide only neutral hints, so the description carries much of the behavioral burden. It adds the useful 'Free, never charged' cost signal and clarifies the feedback is not a defect report, but it does not describe side effects, delivery behavior, or what happens after submission. This is acceptable but not deeply transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core purpose, followed by the cost note, parameter guidance, and the sibling-tool handoff. It is a bit longer than strictly necessary, but every sentence earns its place and no information is repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich schema, output schema, and sibling context, the definition is close to complete: it covers what the tool is for, what it is not for, and which alternative to use. The main residual gap is that the description does not mention the required 'context' parameter behavior, although the schema explains it in detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds a small amount of parameter nuance ('summary' should be one line; 'details' should describe what the user was trying to accomplish), but it does not discuss the required 'context' parameter or the optional fields. The schema handles those adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific action ('Tell AnyAPI something that is not a defect') and enumerates concrete cases: a missing API, a missing field, confusing docs, or something that would have made a task easier. It also explicitly differentiates from report_bug, so an agent can immediately recognize this is for non-defect feedback.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states exactly when to use this tool and names the alternative: 'Use report_bug instead when something behaved incorrectly.' It also gives multiple valid use examples, making the selection boundary clear even without inspecting other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user or an account that owns the GitHub organization, then choose Claim with GitHub.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
One API for public web data across social, directories and real estate, as clean JSON.
Crawl, scrape, search the web, and automate browsers at scale with anti-bot bypass.
20+ pay-per-use APIs: image gen, crypto data, email verify, SSL check, web scraping, and more.
One MCP server for 180+ live web-data APIs returning clean JSON from sites that block scrapers.
Related MCP Servers
AlicenseBqualityCmaintenanceSearch API for AI, SEO & automation. Browser-rendered Google, Bing, Yandex, Baidu, DuckDuckGo and Ecosia results with URL extraction (+image search and engine metadata tools)9872MIT
Crawlora MCPofficial
AlicenseBqualityAmaintenanceHosted MCP server for structured public web data — 319 tools across search, maps, commerce, social & finance, returning clean JSON.85005351MIT- AlicenseAqualityAmaintenanceEnables web scraping, structured data extraction, and screenshot capture with automatic anti-bot bypass, supporting JavaScript rendering, proxy rotation, and tiered pricing.252181MIT
- AlicenseAqualityNot gradedmaintenanceUnified API for Government Data and Web Scraping100
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Every tool has a clearly distinct purpose: browsing, searching, retrieving full schemas, quoting, executing, reading cached results, and checking balance. No two tools overlap.
All tool names follow a consistent verb_noun pattern using snake_case (e.g., list_apis, get_balance, run_api), making the set predictable and easy to navigate.
With 7 tools, the set is well-scoped for the domain of an API marketplace. Each tool handles a distinct step in the workflow without unnecessary bloat or missing essentials.
The tool surface covers the full lifecycle of discovering, quoting, executing, and retrieving results from APIs. Minor gaps include no tool for managing API keys or viewing past runs, but these are not critical for core functionality.