Skip to main content
Glama

Server Details

Hundreds of scraping and data APIs through one gateway — one key, USD pay-per-request, normalized schemas, automatic failover.

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

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?

The description adds valuable behavioral context beyond the read-only annotations: latency metrics are nullable observations ('p99 is an observation, not a maximum'), and heavy:true entries can produce large responses requiring follow-up planning. This level of disclosure helps the agent anticipate response characteristics and downstream actions.

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 sentences with front-loaded purpose and details, followed by actionable caveats. There is no redundant phrasing, and every sentence contributes either to what the tool returns or how to use the result safely.

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 an output schema and comprehensive annotations, the description covers the essential operational nuance: heavy responses, latency interpretation, and next-step planning. An agent has enough information to call this tool correctly and act on the returned data.

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 both sku_id and context are already well documented in the schema. The description reinforces that lookup is by SKU and mentions heavy:true response entries, but it does not add substantial meaning to the tool's own parameters beyond what the schema 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 opens with a specific verb and resource: 'Get the full definition of one API by SKU,' and distinguishes this from list/search-style siblings by clearly enumerating the detailed contents (schemas, pricing, latency). An agent can immediately differentiate this from list_apis 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.

Usage Guidelines4/5

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

The description provides a concrete use case: 'Inspect latency before choosing a client or MCP tool timeout,' and gives actionable guidance for heavy:true entries. It does not explicitly name alternatives or state when not to use the tool, but the context is clear enough for correct selection.

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 declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds meaningful behavior context beyond annotations: the balance is returned in USD, and a valid Bearer token is required, which is an authentication-relevant behavioral detail.

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?

A single 22-word sentence that front-loads the core action ('Get the remaining wallet balance') and packs currency, token, and key requirement into minimal space. Every word earns its place, with no redundancy or filler.

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 simple read-only balance tool with one fully documented parameter and an output schema available, the description combined with annotations covers all necessary information: what it does, in what currency, how authentication works, and the safety profile. 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.

Parameters3/5

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

The only parameter, 'context', is fully described in the input schema with detailed instructions and an example. Schema description coverage is 100%, so the description adds no additional parameter meaning. Baseline 3 is appropriate because the structured schema does the heavy lifting.

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 exact resource ('remaining wallet balance'), specifies the currency ('in USD'), and clarifies the auth context ('AnyAPI key supplied as a Bearer token'). This clearly distinguishes it from sibling tools like get_api or list_apis, which target different resources.

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 includes a prerequisite ('Requires a valid AnyAPI key') and the purpose implies when to use the tool (checking wallet balance). However, it does not explicitly state when not to use it or mention any alternative tools, leaving some inference to the agent.

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 requireCursor true (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
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
Behavior5/5

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

Beyond the readOnlyHint and destructiveHint annotations, the description adds a critical behavioral guarantee: 'never repeats the paid provider dispatch.' It also clarifies that the tool reads AnyAPI's stored state, which helps the agent reason about side effects and safety.

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 sentences with no filler: purpose, behavioral guarantee, and polling guidance. Each sentence adds distinct value and the most important constraint 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?

With an output schema present and helpful annotations, the description supplies the missing workflow details: retryAfterSeconds polling and the no-repeat dispatch guarantee. The word 'resume' is slightly ambiguous, and the relationship to read_result is not addressed, so a small gap remains.

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% and both parameters already have clear descriptions, including the request_id provenance and the detailed context requirements. The description adds only slight reinforcement ('returned by run_api'), so the baseline 3 is appropriate.

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 specific verbs ('Inspect or resume') and a clear resource ('durable AnyAPI request returned by run_api'), and then clarifies the actual behavior as reading stored state. This distinguishes it from creation tools like run_api and makes the tool's role understandable instantly.

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 context ('returned by run_api') and a concrete polling instruction ('Poll again after retryAfterSeconds while status is queued or running'). However, it does not explicitly state when not to use it or name alternatives such as read_result, so it stops short of a 5.

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.7/5.0
Behavior5/5

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

Annotations already mark this as read-only, and the description adds rich behavioral context: results are lightweight summaries with no descriptions/schemas to keep cost low, and pricing offers expose both maxUsd and maxPer1kUsd with guidance to quote the per-1k figure. This goes well beyond the structured 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 sentences front-load the purpose, then add the key pricing nuance and sibling routing. Every sentence contributes information; there is no filler or repetition.

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 read-only annotation, 100% parameter coverage, and an existing output schema, the description covers the catalog scope, return format, pricing quirk, optional filtering, and when to use alternatives. Nothing needed 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?

Schema coverage is 100%, with context and category already documented in the input schema. The description only restates the optional category filter and does not materially add meaning beyond the schema, so it earns the baseline 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?

Description names a specific verb ('Browse available AnyAPI APIs'), a precise resource (the API catalog), and the returned summary shape (id, name, category, USD pricing). It explicitly distinguishes itself from siblings by directing ranked queries to search_apis and full schemas to get_api.

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 states optional category filtering, leaving no ambiguity about when list_apis is appropriate.

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
Behavior5/5

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

Even with readOnlyHint=true, the description adds substantial behavioral context: 'free, no key required, nothing is charged or executed', schema validation, and return-value interpretation. It also warns against scaling quoted amounts to 1,000 requests, which annotations cannot convey.

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 key purpose and safety guarantee, then adds usage details, return semantics, and a reporting caveat. Every sentence earns its place with no filler or repetition.

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 tool's moderate complexity, output schema presence, and three well-documented parameters, the description is complete. It covers what the tool does, how to call it, what it returns, and an important usage caution.

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 meaning beyond the schema by tying sku_id and input directly to run_api ('the same sku_id and input you would give run_api') and explaining that pricing resolves exactly as the run will.

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 and resource: 'Get the exact price of a run_api call BEFORE running it'. It clearly distinguishes quote_api from run_api by emphasizing that the quote does not execute or charge, and names run_api directly as the related operation.

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 clear context for when to use the tool: before run_api, with the same sku_id and input. It names run_api as the alternative but does not explicitly state when not to use it or list exclusions, so it falls just short of a perfect 5.

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 requireCursor true (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
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.7/5.0
Behavior5/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 behavior beyond them: results are cached ~15 minutes, private to the user's key, and an expired id returns result_expired. This tells an agent exactly what to expect without any surprise side effects.

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 sentences front-load the core value proposition, then name the parameters and their purpose, then cover caching and expiry behavior. Every sentence earns its place with no redundancy.

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?

With a full input schema, an output schema, and annotations covering safety, the description fills the only remaining gaps: caching duration, privacy, expiry behavior, and the workflow relationship to run_api. An agent has everything needed to call this tool correctly.

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, and the description adds meaning by explaining these parameters re-shape the full cached result, with concrete examples like reading the rest of the rows or slicing a large field with jq. This goes beyond the schema's individual parameter docs.

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?

States a specific verb and resource: dig deeper into a paid run by reading a cached result without re-running or paying. Explicitly distinguishes itself from run_api by requiring a prior result_id, so an agent can tell them apart at a glance.

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?

Gives clear context: use it after a prior run_api call when you want to re-shape data, read more rows, or slice a large field without paying again. It implies run_api is the alternative, though it does not explicitly say 'do not use run_api unless you need a new run.'

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.5/5.0
Behavior5/5

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

Beyond the annotations, the description discloses that reporting is free and never charged, that request_id reaches the stored run and upstream error body so payloads never need to be pasted, and that the agent should not stop the user's task or ask permission. This is rich, actionable behavioral context.

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 purpose, then gives concrete use cases, cost information, and operational guidance. Every sentence adds value; there is no filler or redundancy despite covering several important aspects.

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?

The tool has an output schema and fully documented parameters, so the description only needs to explain when and how to invoke it. It does that completely: what counts as a bug, which fields to pass, how to handle request_id, and what to do mid-task. An agent has everything needed to call it correctly.

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 all six parameters thoroughly. The description reinforces that summary is required and one line and that request_id is valuable, but it largely restates schema content rather than adding new parameter-level meaning, so the baseline score of 3 is appropriate.

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 'Tell AnyAPI something is broken' and then lists unmistakable bug symptoms (wrong/empty/malformed data, misleading errors, bad prices/schemas, failed retries). This gives a specific verb, resource, and scope that clearly separates reporting a bug from generic feedback or API execution.

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 trigger conditions: use when run_api returns bad data, when error messages are misleading, when a price/schema looks wrong, or when a retry that should have worked did not. It does not explicitly say when not to use it or name send_feedback as the alternative for non-bug feedback, so it stops just short of a perfect score.

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 requireCursor true (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
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.9/5.0
Behavior5/5

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

Adds rich behavioral context beyond the annotations: strict schema rejection, Bearer token requirement, 'Charges the USD wallet only on success,' the p99-is-not-a-maximum caveat, and large-result risk. These details help the agent anticipate failures and side effects, and they do not contradict the destructiveHint/readOnlyHint 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 dense but well-organized: core action first, then prerequisites, latency warning, authentication/billing, response-size guidance, and quoting. Every sentence earns its place, and there is no repetition of schema 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?

Given the complex 7-parameter tool, the description covers the critical operational concerns: fetching the correct schema, validating via quote_api, billing behavior, latency interpretation, authentication, and output trimming. The output schema handles return-structure documentation, so nothing essential 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 coverage is 100%, so the baseline is 3, but the description adds operational meaning: 'input' is normalized, fields/max_items/summary trim responses, and these options 'never change what you are charged.' This supplements the schema's structural definitions with cost and context-management semantics.

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?

States a specific verb and resource: 'Execute an API by SKU with a normalized input payload.' This clearly differentiates it from siblings like get_api (schema inspection) and quote_api (pricing), and the reference to a normalized payload signals exactly what kind of operation it performs.

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?

Explicitly instructs when to call this tool versus alternatives: 'Call get_api for this SKU first' and 'Use quote_api first with the same arguments to see the exact price and validate your input without charging.' It also provides practical guidance about inspecting latency before setting timeouts.

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.8/5.0
Behavior5/5

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

Given annotations only indicate readOnly and non-destructive behavior, the description carries the burden of explaining much more. It reveals relevance scoring, relevance floors, total-before-limit counting, ranking type, no input schema in results, heavy:true implications, and the expected first-call schema requirement. 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.

Conciseness4/5

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

The description is front-loaded and dense with useful behavioral guidance. It is somewhat long and includes a somewhat anecdotal rejection-rate warning, but nearly every sentence contributes practical information about output, relevance, heavy responses, or the required get_api follow-up.

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 no output schema details required, the description is extremely complete. It explains why results are insufficient for run_apis, what to do before first run, how to handle heavy:true entries, and how the tool relates to list_apis and get_api. Nothing essential is missing for an agent to call this tool correctly.

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% for basic fields, so the baseline is 3, but the description adds real combinatorial semantics: at least one of query/category/platform, scope-only enumeration, and how limit interacts with relevance/total. It adds substantial meaning beyond the schema, though the context parameter needs no additional explanation.

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/description, returns ranked matches with descriptions, and omits schemas. It differentiates itself from siblings like list_apis, get_api, and run_api by describing its exact role and output shape.

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?

It explicitly says when to use the tool, which parameters must be passed, how categories/platforms work as standalone scopes, and how to combine with limit. It also routes the user to get_api for schemas before run_api and to list_apis for browsing, covering when-not-to-use this tool.

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.6/5.0
Behavior4/5

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

The annotations provide no meaningful behavioral guidance, so the description carries the burden. It adds useful transparency by stating 'Free, never charged' and clarifying that this is feedback rather than a defect report. It does not disclose whether submissions create records or reach a human, but it gives agents an accurate sense of the operation's low-risk, non-defect nature.

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 sentences, each earning its place: scoping, cost behavior, and parameter-routing guidance. The most decision-relevant information is front-loaded, and there is no filler or redundant restating of the tool name.

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?

For a six-parameter tool with a fully described schema and an output schema, the description covers the essential decision: what counts as feedback and when to use report_bug instead. It does not mention that `context` is also required or that it has strict formatting rules, but those are fully specified in the schema and the description's omission does not prevent correct invocation.

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 schema already documents every parameter clearly. The description adds meaningful guidance beyond that: it highlights that `summary` is required and one line, and it explains that `details` should capture what the user was trying to accomplish. This helps the agent compose a useful submission without duplicating schema content.

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 ('Tell AnyAPI') and enumerates concrete non-defect feedback examples: missing APIs, missing fields, confusing docs, and friction points. It also explicitly contrasts with report_bug, which makes its scope unmistakable and distinguishes it from a key sibling.

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 states exactly when to use this tool—for non-defect feedback—and explicitly names the alternative: 'Use report_bug instead when something behaved incorrectly.' It also gives example triggers, leaving no ambiguity about which cases belong here versus a sibling.

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. Dates show when Glama detected each change.

  1. 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"
        +]
  2. 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
  3. 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"
        +]
  4. 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"
        +}
  5. 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
  6. 4 tool updates
    • First observedget_api
    • First observedget_balance
    • First observedlist_apis
    • First observedrun_api

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables detection and analysis of pre-public product launches through web search, content extraction, AI-powered scoring, and automated alerting. Provides comprehensive tools for surfacing stealth startup signals before they trend publicly.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI chat clients to perform market research and competitive intelligence by gathering company overviews, competitor lists, product portfolios, pricing snapshots, and recent news via live Tavily search.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.5/5.0
Disambiguation5/5

Each tool has a clearly distinct role: discovery (list_apis, search_apis, get_api), pricing (quote_api), execution (run_api), request/result inspection (get_request, read_result), account status (get_balance), and feedback (report_bug, send_feedback). Even the two feedback tools are cleanly separated by defect vs. non-defect.

Naming Consistency5/5

Names consistently follow a snake_case verb_noun pattern: get_api, get_balance, get_request, list_apis, quote_api, read_result, report_bug, run_api, search_apis, send_feedback. There is no mixing of conventions or vague single-word verbs.

Tool Count5/5

Ten tools is well-scoped for an API gateway/aggregator. Each tool covers a necessary phase of the workflow—discovery, schema/pricing inspection, execution, result retrieval, account balance, and user feedback—without redundancy or bloat.

Completeness4/5

The lifecycle from discovering APIs through quoting, executing, checking request status, and reading cached results is well covered. Minor gaps such as no explicit way to cancel a queued/running request or list past requests are workable but not fully closed.

Resources