Agentic Endpoints
Server Details
Pay-per-call tools for autonomous agents, settled in USDC on Base via x402.
- Status
- Healthy
- Uptime
- 100.0% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- olie-kiss/agentic-endpoints
- GitHub Stars
- 0
TDQS
Scored across 20 tools
Each tool targets a distinct resource and action within its domain (e.g., meetings_search vs meetings_summarize, vault_retrieve vs vault_list, once_key_claim vs complete vs release). The descriptions are detailed enough that an agent can easily pick the correct tool without ambiguity. There is no real overlap; even compress, pdf_parse, and scrape are clearly separated by input type.
Most tools follow a clear domain prefix + verb pattern (meetings_get, vault_store, once_key_claim, credits_balance). A few tools deviate (compress, scrape, x402_verify) but they are still intuitive and not chaotic. The convention is consistent enough that an agent can predict tool names.
At 20 tools, the server is slightly on the heavy side but appropriate given it spans multiple domains (text processing, meetings, vault, idempotency, payments). Each tool has a clear purpose and none feel redundant. It is not excessive for the breadth of functionality offered.
The surface covers core workflows in each domain: meetings have import, search, get, list, and summarize; vault has full CRUD plus exists and rotate; idempotency has claim, complete, and release. Minor gaps exist (no meetings update/delete, no direct buy credits tool) but these are not critical dead ends for typical usage.
Available Tools
20 toolscompressCompress text to a token budgetARead-onlyIdempotentInspect
Reduce text to fit a token budget, preserving whole sentences and reporting before/after token estimates. Costs $0.010 in USDC on Base, paid via the x402 protocol, or from a credit token — call credits_trial for free credit if you have neither.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to compress | |
| strategy | No | Compression strategy (default extractive) | |
| credit_token | No | Optional. A credit token from credits_trial or /credits/buy. Supplying it pays for this call from that balance, so no x402 payment or wallet is needed. | |
| target_tokens | No | Approximate token budget |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | The compressed text |
| ratio | Yes | compressed_length / original_length. Lower is more aggressive. |
| strategy | No | Strategy applied, echoing your request |
| original_length | Yes | Input length in characters |
| compressed_length | Yes | Output length in characters |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses a behavior not present in annotations: the call costs $0.010 paid via x402 or a credit token, plus it promises whole-sentence preservation and before/after token estimates. These are meaningful runtime traits beyond the readOnly/idempotent hints, and there is no contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the first states the operation and its guarantee, the second states cost and payment alternatives. The most important information is front-loaded and every clause supports an invocation decision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and full parameter documentation in the schema, the description needs only to add what schemas don't show: cost, payment route, and the credits_trial fallback. It covers those; a small gap is that it doesn't mention the strategy default, but that is already in the input schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents text, strategy, credit_token, and target_tokens. The description adds only high-level context (whole-sentence preservation, cost) rather than new parameter-level detail, matching the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with a specific verb and object ('Reduce text') and defines a precise goal: fit a token budget while preserving whole sentences and reporting before/after estimates. This clearly separates it from siblings like meetings_summarize and names the resource it acts on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It supplies important context for when to use the tool (when text must fit a token budget) and directly handles the payment prerequisite by pointing to credits_trial. It does not explicitly exclude alternatives or tell an agent when not to use compress, so the guidance remains implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
credits_balanceCheck how much credit a token has leftARead-onlyIdempotentInspect
Free. Reports the remaining balance on a credit token so you can tell 'out of credit' apart from 'the call failed', which otherwise look identical from the outside. This tool is free; no payment is required.
| Name | Required | Description | Default |
|---|---|---|---|
| credit_token | Yes | The credit token to check |
Output Schema
| Name | Required | Description |
|---|---|---|
| currency | No | Always 'USD' |
| balance_usd | Yes | Credit remaining, in dollars |
| balance_micros | No | Credit remaining in integer micro-dollars, the authoritative figure |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, and the description does not contradict them. It adds useful behavioral context that the tool is free and intended as a diagnostic check, which goes 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, but the word 'free' appears twice: once in the opening sentence and again in the final sentence. This redundancy means not every sentence earns its place, though the overall length is still appropriate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single parameter, full schema coverage, existing output schema, and annotations covering safety traits, the description is complete. It includes the key diagnostic purpose and cost information an agent needs to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents the credit_token parameter. The description adds no additional parameter-level meaning beyond calling it a credit token, which aligns with the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it reports the remaining balance on a credit token, using a specific verb and resource. It does not explicitly differentiate itself from sibling tools like credits_trial, so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear use case: distinguishing 'out of credit' from 'the call failed'. It does not mention when not to use the tool or name alternatives, but the diagnostic purpose is clear enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
credits_trialGet free credit to try the paid toolsAIdempotentInspect
Free, and the first tool to call if any other tool has told you payment is required. Returns a credit_token carrying $0.10 of credit — roughly twenty calls — with no wallet, no signature, no account and no email. Pass the returned token as the credit_token argument to any paid tool and it will run without an x402 payment. One allowance per caller: asking again returns the same token and whatever balance is left on it, never a refill. When it runs out, buy more with the /credits/buy endpoint. This tool is free; no payment is required.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| next | No | What to do when it runs out |
| note | No | Why a second request returns the same token rather than more credit |
| trial | Yes | Always true; distinguishes this from purchased credit |
| usage | No | How to spend the token |
| exhausted | Yes | True when the allowance is spent. Asking again will not refill it, so buy credit or pay per call. |
| balance_usd | Yes | Credit remaining, in dollars |
| granted_usd | No | Size of the one-off allowance |
| credit_token | Yes | The token to pass as `credit_token` to any paid tool. Shown here and derivable again from the same caller, but not recoverable from us. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description fully discloses behavior beyond the annotations: no wallet/signature/account/email required, $0.10 credit for roughly twenty calls, one allowance per caller, and repeat calls return the same token with remaining balance rather than a refill. This aligns with and enriches the idempotentHint annotation rather than contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than minimal, but nearly every sentence earns its place by covering cost, usage, limitations, and renewal. There is slight redundancy in saying 'Free' at the start and 'This tool is free; no payment is required' at the end, which prevents a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, a rich output schema, and idempotent annotations, the description is complete. It covers prerequisites, token semantics, call limits, idempotent behavior, exhaustion behavior, and the path to purchase additional credit—everything an agent needs to invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and 100% schema coverage, so there are no parameter semantics to clarify. The description still adds value by explaining what the returned credit_token means and how to use it as the credit_token argument in other tools, which exceeds the baseline for a no-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific purpose: grants a free credit token for trying paid tools, and positions itself as 'the first tool to call if any other tool has told you payment is required.' It clearly identifies the resource returned (credit_token) and distinguishes itself from paid alternatives and the /credits/buy endpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance ('first tool to call if any other tool has told you payment is required') and how to use the result: 'Pass the returned token as the credit_token argument to any paid tool.' It also states the no-refill limitation and names the alternative path for when credit runs out ('buy more with the /credits/buy endpoint').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meetings_getRead one meeting in fullARead-onlyIdempotentInspect
Fetch a single meeting by meeting_id, including its full transcript when it was imported as queryable. Use this after meetings_search has identified the meeting you want. A 'content_missing' status means the record exists but its stored text could not be found -- that is a broken record, not an empty meeting, so do not report it as one. Costs $0.005 in USDC on Base, paid via the x402 protocol, or from a credit token — call credits_trial for free credit if you have neither.
| Name | Required | Description | Default |
|---|---|---|---|
| namespace | Yes | Isolation scope holding your meetings | |
| meeting_id | Yes | Returned by meetings_import or meetings_search | |
| credit_token | No | Optional. A credit token from credits_trial or /credits/buy. Supplying it pays for this call from that balance, so no x402 payment or wallet is needed. | |
| namespace_token | Yes | One-time token issued by the first call that claimed this namespace. Required for every later call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| title | No | Meeting title |
| status | Yes | 'ok' on success |
| ciphertext | No | Client-encrypted transcript, for private meetings |
| meeting_id | Yes | Identifier of the meeting |
| transcript | No | Plaintext transcript, for queryable meetings |
| visibility | No | 'queryable' or 'private' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent), the description discloses the conditional transcript inclusion ('when it was imported as queryable'), the meaning of 'content_missing' as a broken record rather than an empty meeting, and the concrete $0.005 cost with x402/credit token alternatives. These are exactly the behavioral details an agent needs that the schema 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each doing distinct work: scope, usage ordering, error interpretation, and payment. It is front-loaded with the primary purpose and contains no filler or repeated schema information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-record read tool, the description covers when to call it, what is included, how to interpret a problematic response, and how the call is paid. The presence of an output schema means return-value detail is not needed in the description, and annotations cover safety and idempotency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with every parameter already explained, including the meaning of meeting_id and credit_token. The description adds no new parameter-level syntax or constraints, so per the baseline rule it scores 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Fetch a single meeting by meeting_id, including its full transcript.' The phrase 'after meetings_search has identified the meeting you want' distinguishes it from the search sibling, and the title reinforces the one-record scope. This is unambiguous and immediately telegraphs the tool's niche.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Use this after meetings_search has identified the meeting you want,' giving a clear when-to-use directive. It also covers the payment fallback path via credits_trial. However, it does not explicitly contrast with meetings_list or state when not to use it, so it earns a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meetings_importImport a meeting transcriptAInspect
Store a transcript so it can be searched later. Accepts a raw WebVTT or SRT export straight from Zoom, Teams, Meet or a notetaker -- you do NOT need to strip timestamps or parse it first, and cues split across timing boundaries are merged so phrases still match. visibility is a required decision and cannot be guessed for you: 'queryable' stores plaintext, indexes it, and means this service can read it; 'private' stores ciphertext you encrypted yourself, which is unreadable here and therefore NEVER searchable. Send transcript for queryable and ciphertext for private -- the mismatched combinations are refused rather than silently doing the wrong thing. The first import into a namespace returns a namespace_token shown exactly once; save it or the namespace is unrecoverable. Costs $0.010 in USDC on Base, paid via the x402 protocol, or from a credit token — call credits_trial for free credit if you have neither.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Human-readable meeting title | |
| source | No | Optional hint about the export format. Ignored if it disagrees with the file: WebVTT and SRT are detected from the content itself, unpacked into speaker-attributed text, and any speakers found are added to participants. Plain text is stored verbatim. | |
| namespace | Yes | Isolation scope, e.g. my-meetings-<uuid> | |
| ciphertext | No | Client-side encrypted transcript. Only valid with visibility 'private'. | |
| transcript | No | Plaintext transcript. Only valid with visibility 'queryable'. | |
| visibility | No | 'queryable' (plaintext, searchable, readable by this service) or 'private' (ciphertext, never searchable). Defaults to private. | |
| occurred_at | No | ISO-8601 time the meeting happened | |
| credit_token | No | Optional. A credit token from credits_trial or /credits/buy. Supplying it pays for this call from that balance, so no x402 payment or wallet is needed. | |
| participants | No | Optional attendees | |
| namespace_token | No | One-time token issued by the first call that claimed this namespace. Required for every later call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | Present alongside a newly issued namespace_token |
| status | Yes | 'imported' on success |
| meeting_id | Yes | Identifier for later meetings_get calls |
| searchable | No | False for private meetings, which are never searchable |
| size_bytes | No | Stored size |
| visibility | No | 'queryable' or 'private' |
| namespace_token | No | Issued only on the first import into a namespace, shown exactly once |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations, which only say the operation is not read-only, not open-world, not idempotent, and not destructive. It discloses concrete behavioral consequences: the first import creates a namespace_token shown exactly once, losing it makes the namespace unrecoverable, the call costs $0.010, private imports are never searchable, and mismatched transcript/visibility pairs are refused. This is rich, honest behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence earns its place: purpose, input format flexibility, privacy/searchability trade-offs, one-time token handling, and cost/payment. It is front-loaded with the core purpose and then builds outward into operational details. There is no filler or redundant restating of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, the description covers almost everything an agent needs: raw format handling, cue merging, visibility semantics, namespace token persistence, and payment. An output schema exists, so detailed return values do not need to be explained. The only notable gap is the inconsistency between the description's claim that visibility is required and the schema's optional default, which leaves room for agent misinterpretation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is already solid. The description adds valuable cross-parameter semantics: transcript is paired with 'queryable', ciphertext with 'private', namespace_token is required for later calls, and credit_token is an alternative payment path. However, it creates some confusion by calling visibility a 'required decision that cannot be guessed' while the schema lists it as optional with a default of 'private'. This tension prevents a top score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description immediately states a specific action and resource: 'Store a transcript so it can be searched later.' It also explains that raw WebVTT/SRT inputs are accepted directly, which clearly distinguishes this ingestion tool from sibling tools like meetings_get, meetings_search, and meetings_summarize. It is not a tautology and meaningfully expands on the title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives strong contextual guidance: it says when to use the tool (raw transcript from Zoom/Teams/Meet/notetaker), removes a common preprocessing burden, and even routes users without credit to credits_trial. However, it does not explicitly state when to prefer this tool over related siblings like vault_store or compress, so it stops short of full when-not/alternatives guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meetings_listList your meetingsARead-onlyIdempotentInspect
List the meetings in a namespace newest first, with titles, dates, participants and whether each one is searchable. Never returns transcripts. Useful for orienting before a search, and for finding meetings that are private and therefore invisible to meetings_search. Costs $0.005 in USDC on Base, paid via the x402 protocol, or from a credit token — call credits_trial for free credit if you have neither.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results, 1-500 (default 100) | |
| namespace | Yes | Isolation scope holding your meetings | |
| credit_token | No | Optional. A credit token from credits_trial or /credits/buy. Supplying it pays for this call from that balance, so no x402 payment or wallet is needed. | |
| namespace_token | Yes | One-time token issued by the first call that claimed this namespace. Required for every later call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Number of meetings returned |
| status | Yes | 'ok' on success |
| meetings | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description substantially extends the annotations: it reveals the newest-first ordering, the transcript-exclusion behavior, the ability to list private meetings, and the exact cost/payment paths including the credits_trial fallback. None of this contradicts the readOnly, idempotent, or openWorld annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place: core behavior, key limitation, usage context, and payment instructions. The description is front-loaded with the action and result shape, and it is not padded with redundant restatements of the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema and full parameter documentation, the description is complete enough for an agent to select and invoke the tool correctly. It covers ordering, visibility scope, the transcript limitation, cost, payment options, and how to get free credit, leaving no critical operational gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter already documented meaningfully. The description adds no extra parameter-level semantics, so the baseline of 3 applies rather than requiring compensation for missing schema detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('List'), a resource ('meetings in a namespace'), and the exact fields returned: titles, dates, participants, and searchable status. It also differentiates itself from meetings_search by stating it can surface private meetings that search cannot see.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear use cases: orienting before a search and finding private meetings invisible to meetings_search. It also states that transcripts are never returned, which is a useful exclusion, though it does not explicitly name meetings_get as the alternative for transcript retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meetings_searchSearch your meeting transcriptsARead-onlyIdempotentInspect
Ask a question across every meeting you have imported as queryable, and get back ranked excerpts with the meeting they came from. This is the tool to use when the user refers to something that was said, agreed, or decided in a call -- 'what did we decide about pricing', 'who owned the migration', 'when did we say we would ship'. Returns 'searched_meetings' and 'private_meetings_skipped': meetings imported as private are encrypted and CANNOT be searched, so if searched_meetings is 0 an empty result means nothing was searched, NOT that the topic was never discussed. Use meetings_get to read a full transcript once you have found the right meeting. Costs $0.010 in USDC on Base, paid via the x402 protocol, or from a credit token — call credits_trial for free credit if you have neither.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results, 1-50 (default 10) | |
| query | Yes | FTS5 match expression. Use quotes for phrases, e.g. "budget review". Prefer a few distinctive words over a whole sentence. | |
| namespace | Yes | Isolation scope holding your meetings | |
| credit_token | No | Optional. A credit token from credits_trial or /credits/buy. Supplying it pays for this call from that balance, so no x402 payment or wallet is needed. | |
| namespace_token | Yes | One-time token issued by the first call that claimed this namespace. Required for every later call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Number of matches returned |
| query | No | The match expression that was run |
| status | Yes | 'ok' on a successful search |
| matches | Yes | Ranked excerpts, best first |
| searched_meetings | No | How many meetings were actually searched. If 0, an empty result means nothing was searchable, NOT that the topic was never discussed. |
| private_meetings_skipped | No | Encrypted meetings that could not be searched |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark the tool read-only and idempotent, and the description adds substantial beyond that: private meetings are encrypted and skipped, searched_meetings=0 means nothing was searched rather than the topic never arose, and the call costs $0.010 paid via x402 or credit token. These are exactly the non-obvious behaviors an agent needs to interpret results and avoid surprise payment failures.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place: purpose, use-case triggers, return-value caveat, sibling routing, and cost disclosure. It is front-loaded with what the tool does and only then adds caveats, with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with an output schema already present, the description covers all essential operational context: ranking behavior, private-meeting exclusion, empty-result interpretation, cost, payment method, and fallback credit path. An agent has everything it needs to select, call, and interpret this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters, including FTS5 match syntax, namespace/token requirements, and the optional credit_token. The description reinforces high-level usage but does not need to add parameter-level detail; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: asking a question across imported meetings and receiving ranked excerpts with the meeting source. It clearly distinguishes itself from meetings_get, which reads a full transcript, and the example queries make the search intent concrete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool: whenever the user references something said, agreed, or decided in a call. It also routes to meetings_get for reading a full transcript after the right meeting is found, and warns that private meetings cannot be searched, setting correct expectations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meetings_summarizeAnswer a question from your meetingsARead-onlyIdempotentInspect
Ask a plain-language question and get a written answer grounded in the user's own meeting transcripts, with the meeting id cited after each claim. Prefer this over meetings_search when the user wants an ANSWER ('what did we decide about pricing?', 'who owned the migration?') rather than a list of excerpts to read themselves. Pass the question as the user asked it -- this is NOT FTS5 syntax, and the terms actually searched come back as terms so you can check the retrieval. IMPORTANT: a 'no_matches' status means no answer was generated, and 'searched_meetings': 0 means every meeting is private and NOTHING was read -- neither is evidence the topic was never discussed, and you must not report it as such. Meetings imported as private are encrypted and can never contribute to an answer; private_meetings_skipped says how many were left out. A 'truncated' meeting in consulted had only part of its transcript read, so its silence on a point is not evidence either. Costs $0.050 in USDC on Base, paid via the x402 protocol, or from a credit token — call credits_trial for free credit if you have neither.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max meetings to consult, 1-8 (default 5) | |
| question | Yes | The question in plain language, as the user asked it. Not a search expression. | |
| namespace | Yes | Isolation scope holding your meetings | |
| credit_token | No | Optional. A credit token from credits_trial or /credits/buy. Supplying it pays for this call from that balance, so no x402 payment or wallet is needed. | |
| namespace_token | Yes | One-time token issued by the first call that claimed this namespace. Required for every later call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| model | No | The model that produced the answer |
| terms | No | The search terms derived from the question |
| answer | No | The grounded answer with [meeting_id] citations, or null when nothing was summarised. |
| status | Yes | 'ok' when an answer was generated. 'no_matches', 'unusable_question' and 'content_missing' all mean NO answer was produced and must not be read as the topic being absent. |
| question | No | The question as asked |
| consulted | No | The meetings the answer was actually built from |
| ai_generated | No | True: `answer` was written by an AI model |
| searched_meetings | No | Queryable meetings available to search. 0 means nothing was read. |
| private_meetings_skipped | No | Encrypted meetings that could not contribute to the answer |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, and the description adds substantial behavioral context beyond them: no_matches means no answer was generated, zero searched_meetings means everything private and nothing read, private meetings are encrypted and skipped, truncated meetings cannot serve as evidence, and the cost/payment model. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than average but every sentence earns its place: purpose, usage rule, anti-pattern warning, failure semantics, privacy caveat, truncation caveat, and cost. It is front-loaded with the core action and differentiator, then layers critical operational warnings that directly affect how an agent should interpret results.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description need not explain return structure, and it instead covers the non-obvious semantics an agent needs to reason correctly: what no_matches and searched_meetings:0 really mean, the limitation of private and truncated meetings, and the payment path. Nothing needed for correct invocation or interpretation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: it clarifies that question is plain language, not a search syntax, that the terms actually searched come back for verification, and that credit_token can pay from a balance obtained via credits_trial or /credits/buy. This supplements structure without repeating it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: ask a plain-language question and get a written answer grounded in meeting transcripts with cited meeting ids. It explicitly differentiates from meetings_search by describing the exact user intent that selects this tool, so an agent can distinguish it without opening the sibling schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use guidance: prefer meetings_summarize over meetings_search when the user wants an answer rather than a list of excerpts to read. It also instructs to pass the question exactly as the user asked it and explicitly warns that this is not FTS5 syntax, which prevents a common misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
once_key_claimClaim an action exactly onceAIdempotentInspect
Atomic idempotency witness. Claims a {namespace, action_key} pair exactly once, so a fleet of agents cannot perform the same side effect twice. Call this BEFORE any non-idempotent action such as sending an email, charging a card, or posting an order. Returns one of: 'claimed' — you won, do the work, then call once_key_complete; 'in_progress' — another agent holds a live lease, wait retry_after seconds and do NOT do the work; 'duplicate' — already done, and the 'result' field carries the original outcome, so use it instead of repeating the work; 'held' — another agent claimed this key, set no lease, and has NOT completed it: there is no result and there may never be one, so do NOT do the work and do NOT treat it as done, because the key stays locked until expires_at; 'conflict' — the same key was claimed with a different payload hash, so your key derivation is wrong. Backed by a strongly consistent Durable Object; this is not something an agent can safely reimplement locally. Costs $0.010 in USDC on Base, paid via the x402 protocol, or from a credit token — call credits_trial for free credit if you have neither.
| Name | Required | Description | Default |
|---|---|---|---|
| ttl | No | Claim lifetime in seconds (default 86400) | |
| lease_ttl | No | Seconds you have to call once_key_complete before the claim is treated as abandoned and another agent may take it over. Set this if your work could crash partway. Omit it to hold the claim for the full ttl, which guarantees nothing else can ever run the side effect. | |
| namespace | Yes | Isolation scope, e.g. your application name | |
| action_key | Yes | Stable identifier for the action being claimed | |
| credit_token | No | Optional. A credit token from credits_trial or /credits/buy. Supplying it pays for this call from that balance, so no x402 payment or wallet is needed. | |
| payload_sha256 | No | Optional hash of the action payload. If it differs from the stored hash, the result is a conflict. | |
| namespace_token | No | One-time token issued by the first call that claimed this namespace. Required for every later call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | Present alongside a newly issued namespace_token |
| result | No | The recorded result, present when status is 'duplicate'. |
| status | Yes | 'claimed' means you own the action and must perform it. 'duplicate' means someone already did: do NOT repeat the side effect, use `result` instead. |
| receipt | No | Payment receipt |
| namespace | No | Isolation scope |
| action_key | Yes | The key that was claimed |
| claimed_at | No | ISO-8601 claim time |
| expires_at | No | ISO-8601 expiry of the claim record |
| has_result | No | Distinguishes a recorded null result from no result at all |
| namespace_token | No | Issued only on the first claim in a namespace, shown exactly once |
| lease_expires_at | No | Call once_key_complete before this or the claim may be taken over |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide basic flags (readOnlyHint: false, idempotentHint: true). The description goes far beyond that by explaining the underlying consistency (strongly consistent Durable Object), cost details ($0.010 USDC), payment methods (x402 or credit token), lease semantics (lease_ttl vs ttl, abandonment, takeover), and the meaning of 'held' (key stays locked until expires_at). It also clarifies that 'conflict' indicates a key derivation error. None of these are in the annotations, and there is no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every clause earns its place. It opens with the core purpose, then the invocation timing, then the return-value contract, then cost/payment. The information is dense yet logically ordered, with no fluff. For a tool with five distinct outcomes and a payment model, this level of detail is necessary and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (7 params, 5 return states, payment integration), the description is remarkably complete. It covers all return values, retry behavior, lease expiration, cost, payment fallback, and the recommendation to use credits_trial. It even notes what not to do in each scenario. An agent has everything needed to invoke this correctly without further investigation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all 7 parameters with 100% coverage, so the baseline is 3. The description adds value by explaining the relationship between lease_ttl and ttl, the consequence of omitting lease_ttl (hold for full ttl), the requirement of namespace_token for later calls, and the conflict semantics tied to payload_sha256. It doesn't restate each parameter's schema description but gives usage-oriented context that helps an agent choose and set them correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('claims'), a concrete resource ('{namespace, action_key} pair'), and the exact purpose: to ensure a side effect is performed exactly once across a fleet of agents. It distinguishes itself from siblings like once_key_complete and once_key_release by clarifying that this is the entry point before any non-idempotent action. The primary behavior is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'Call this BEFORE any non-idempotent action' and lists concrete examples (email, charge card, post order). It then enumerates the five possible return values and the precise action an agent should take for each (e.g., wait retry_after seconds, use the result, do not do the work). It also mentions the fallback to credits_trial for free credit and warns against reimplementation. This leaves no ambiguity about when and how to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
once_key_completeRecord the outcome of a claimed actionAIdempotentInspect
Free. Records the result of work you performed under a claim from once_key_claim. Every later claim of that action_key returns 'duplicate' along with this result, which is what lets another agent continue without repeating the side effect. Always call this after the work succeeds — a claim with no recorded result leaves every other agent unable to learn what happened. Completion is final and cannot be overwritten. This tool is free; no payment is required.
| Name | Required | Description | Default |
|---|---|---|---|
| ttl | No | How long to retain the result, in seconds (default 86400) | |
| result | No | Any JSON value describing the outcome, up to 16 KB serialized. Store large payloads elsewhere and record a reference. | |
| namespace | Yes | Isolation scope used when the key was claimed | |
| action_key | Yes | The action_key you claimed | |
| namespace_token | No | One-time token issued by the first call that claimed this namespace. Required for every later call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | The stored result, replayed to later claimants. |
| status | Yes | 'completed' |
| action_key | Yes | The key whose outcome was recorded |
| expires_at | No | When the recorded result is discarded |
| has_result | No | Distinguishes a recorded null result from no result at all |
| completed_at | No | ISO-8601 completion time |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond annotations by disclosing that completion is final and cannot be overwritten, that later claims return 'duplicate' with the recorded result, and that recording is what allows another agent to continue. It also notes the tool is free. These are meaningful behavioral traits not captured by annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and immediate cost signal ('Free'), then explains consequences and finality. It is slightly redundant by stating 'Free' at the start and again at the end, but overall every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and parameter coverage is 100%, the description supplies all necessary behavioral context: when to call, what happens afterward, how it affects other agents, and finality. No critical operational detail is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are already well documented. The description adds only minimal reinforcement ('action_key you claimed', 'result' of the work) and does not need to compensate for missing parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Records'), a clear resource ('the result of work you performed under a claim from once_key_claim'), and distinguishes it from the related once_key_claim tool by explaining the post-claim completion role. This is immediately clear and differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to call the tool: 'Always call this after the work succeeds.' It also explains the consequence of not calling it, which guides correct usage. It does not mention the alternative failure path via once_key_release, but the primary usage condition is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
once_key_releaseRelease a claim whose work failedAIdempotentInspect
Free. Surrenders a claimed action_key so a retry can start immediately instead of waiting out the lease. Call this when the work you claimed fails. Refuses if the key was already completed, because releasing it would discard the recorded result and allow the side effect to run twice. This tool is free; no payment is required.
| Name | Required | Description | Default |
|---|---|---|---|
| namespace | Yes | Isolation scope used when the key was claimed | |
| action_key | Yes | The action_key to release | |
| namespace_token | No | One-time token issued by the first call that claimed this namespace. Required for every later call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | 'released' |
| action_key | Yes | The key that was surrendered |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses a key refusal behavior: releasing an already completed key is refused because it would discard the recorded result and risk running the side effect twice. This goes beyond the annotations by explaining failure semantics and safety rationale. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Mostly efficient and informative, but the free/no-payment point is stated twice ('Free.' and 'This tool is free; no payment is required.'), wasting a sentence. Otherwise tightly written and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a moderate-complexity tool with full schema coverage and an output schema, the description covers what the tool does, when to call it, and the important refusal behavior. An agent has enough to invoke it correctly and avoid dangerous misuse.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are already fully documented. The description adds little param-specific detail, but the baseline of 3 applies because the schema carries the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('surrenders'/'release') and resource ('claimed action_key'), with a clear effect: letting a retry start immediately. This distinguishes it from sibling claim/complete operations even though those tools aren't named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Call this when the work you claimed fails' and explains the benefit over waiting out the lease. It does not name an alternative tool for success cases, but the condition is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pdf_parseExtract text from a PDFARead-onlyIdempotentInspect
Extract text from a PDF by URL. Handles compressed streams, PDF 1.5+ object streams and ToUnicode CMaps, and reports encrypted or image-only documents honestly instead of returning garbage. Costs $0.020 in USDC on Base, paid via the x402 protocol, or from a credit token — call credits_trial for free credit if you have neither.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | HTTPS URL of the PDF | |
| max_pages | No | Optional page cap | |
| credit_token | No | Optional. A credit token from credits_trial or /credits/buy. Supplying it pays for this call from that balance, so no x402 payment or wallet is needed. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | The PDF that was fetched |
| pages | Yes | |
| page_count | Yes | Pages extracted |
| extracted_at | No | ISO-8601 extraction time |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only, idempotent, and open-world. The description adds valuable behavioral disclosures beyond that: how it handles compressed streams, PDF 1.5+ object streams, ToUnicode CMaps, and that it returns honest diagnostics for encrypted or image-only PDFs instead of garbage. It also surfaces the cost and payment flow, which materially affects invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The first sentence states the core action; the second packs meaningful capability, failure behavior, and payment details. Every sentence earns its place and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only extraction tool with a full output schema, the description covers what the tool does, what PDF complexities it handles, how it behaves on problematic inputs, and how to pay. The only implicit requirement, that the URL be HTTPS, is already specified in the schema. 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.
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 three parameters. The description adds a little color around the credit_token payment flow and 'by URL' framing, but it does not significantly extend parameter meaning beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Extract text from a PDF by URL.' It clearly identifies the tool's core function and distinguishes it from sibling tools like scrape or meetings_* by being PDF-specific and text-extraction-focused.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes clear when the tool applies (PDFs by URL) and provides practical context about payment methods and the credits_trial alternative. It does not explicitly name excluded cases or alternative tools, but the purpose is specific enough that the usage context is evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrapeFetch a page as text or markdownARead-onlyIdempotentInspect
Fetch a URL and return readable text or markdown, optionally narrowed by CSS selector. Requests to private, loopback and link-local addresses are refused, and every redirect hop is re-validated. Costs $0.010 in USDC on Base, paid via the x402 protocol, or from a credit token — call credits_trial for free credit if you have neither.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | HTTPS URL to fetch | |
| format | No | Output format (default text) | |
| selector | No | Optional CSS selector to extract just part of the page | |
| credit_token | No | Optional. A credit token from credits_trial or /credits/buy. Supplying it pays for this call from that balance, so no x402 payment or wallet is needed. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | The page that was fetched |
| title | No | Document title, when the page has one |
| format | No | 'text', 'markdown' or 'html', echoing your request |
| content | Yes | Extracted content in the requested format |
| extracted_at | No | ISO-8601 fetch time |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnly/idempotent annotations, the description discloses SSRF protections ('private, loopback and link-local addresses are refused, and every redirect hop is re-validated') and a concrete cost/payment model ($0.010 USDC via x402 or credit token). These are non-obvious behaviors an agent must know before invoking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler: main capability first, then security constraint, then cost/payment. Every sentence adds distinct value, and the structure front-loads the action an agent needs to identify the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter tool with full schema coverage, an output schema, and readOnly/idempotent annotations, the description adds the missing operative constraints: network restrictions, redirect safety, and payment/credit behavior. Nothing essential for correct selection or invocation is omitted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents URL, format, selector, and credit_token. The description adds lightweight context for selector ('narrowed by CSS selector') and payment, but does not materially extend the parameter semantics beyond what the schema provides; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb-resource pairing: 'Fetch a URL and return readable text or markdown, optionally narrowed by CSS selector.' This clearly differentiates scrape from siblings like pdf_parse or meetings_search; an agent knows exactly what resource it acts on and what it produces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The tool's usage context is clear: fetching a URL for readable text/markdown, with optional CSS selector. It does not name competing tools for exclusion, but it does give conditional payment guidance ('call credits_trial for free credit if you have neither'), which helps an agent decide when a prerequisite is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_deleteDelete a stored secretADestructiveIdempotentInspect
Permanently delete an item. Requires the namespace_token. Costs $0.005 in USDC on Base, paid via the x402 protocol, or from a credit token — call credits_trial for free credit if you have neither.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Item key | |
| namespace | Yes | Isolation scope | |
| credit_token | No | Optional. A credit token from credits_trial or /credits/buy. Supplying it pays for this call from that balance, so no x402 payment or wallet is needed. | |
| namespace_token | Yes | One-time token issued by the first call that claimed this namespace. Required for every later call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| key | Yes | The key that was removed |
| status | Yes | 'deleted' |
| namespace | No | Isolation scope |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructive, idempotent, non-read-only), the description discloses key side effects: deletion is permanent, a namespace_token is required, and the call costs $0.005 in USDC paid via x402 or a credit token. This is exactly the kind of cost and access context an agent needs before executing a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences cover the action, precondition, cost, payment method, and fallback credit path with no filler. The essential destructive action is front-loaded, and every clause adds useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich schema, the annotations (especially destructiveHint and idempotentHint), and the presence of an output schema, the description supplies the important missing context: payment side effects, required auth token, and the free-credit fallback. An agent has enough to decide whether to call this tool and what prerequisites must be satisfied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents all four parameters comprehensively at 100% coverage, including the optional credit_token and the nature of the namespace_token. The description adds a helpful pointer to credits_trial for free credit, but it does not substantially expand parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Permanently delete an item', giving a clear verb and resource, and the title narrows it to deleting a stored secret. This separates it from sibling tools like vault_store and vault_retrieve, leaving no ambiguity about what operation is performed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the necessary precondition ('Requires the namespace_token') and when an alternative payment path applies ('call credits_trial for free credit if you have neither'). It does not explicitly discuss a when-not-to-use case or name a sibling alternative, but the destructive nature and token requirement provide sufficient context for an agent to invoke it correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_existsTest whether a key existsARead-onlyIdempotentInspect
Check for a key without returning its ciphertext. Requires the namespace_token. Costs $0.005 in USDC on Base, paid via the x402 protocol, or from a credit token — call credits_trial for free credit if you have neither.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Item key | |
| namespace | Yes | Isolation scope | |
| credit_token | No | Optional. A credit token from credits_trial or /credits/buy. Supplying it pays for this call from that balance, so no x402 payment or wallet is needed. | |
| namespace_token | Yes | One-time token issued by the first call that claimed this namespace. Required for every later call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| key | Yes | The key that was checked |
| exists | Yes | Whether the key is present. Cheaper than a retrieve. |
| namespace | No | Isolation scope |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint and idempotentHint, and the description adds meaningful behavioral context: it returns no ciphertext, requires the namespace_token, costs a specific amount, and explains the two payment paths. This goes well beyond the structured annotations, particularly around cost and authentication.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: the core behavior appears first, followed by the essential prerequisite and cost information. Every sentence adds necessary operational detail without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, return values need not be described. The description covers the key behavioral, authentication, and cost details needed to invoke the tool. It misses only explicit sibling differentiation for when to choose this over vault_retrieve, so it is nearly complete but not perfectly so.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces the namespace_token requirement and references credit_token indirectly, but adds little semantic detail beyond what the schema already provides. This is adequate but not exceptional.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Check for a key' and explicitly notes it does so 'without returning its ciphertext,' making it clearly distinct from vault_retrieve. The title reinforces the existence-testing purpose. It is immediately obvious what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys clear context around prerequisites and cost, but does not explicitly name alternatives such as vault_retrieve or state when an agent should prefer this tool over them. The phrase 'without returning its ciphertext' implies an existence-only use case, but this is not made explicit enough for definitive routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_listList the keys in a vault namespaceARead-onlyIdempotentInspect
List the keys held in a namespace with their metadata: alg, size, timestamps. Never returns ciphertext — use vault_retrieve for that. Each item's updated_at is the version to pass back as if_match on a conditional store. Use this when you have stored secrets and need to know what is there. Costs $0.005 in USDC on Base, paid via the x402 protocol, or from a credit token — call credits_trial for free credit if you have neither.
| Name | Required | Description | Default |
|---|---|---|---|
| namespace | Yes | Isolation scope | |
| credit_token | No | Optional. A credit token from credits_trial or /credits/buy. Supplying it pays for this call from that balance, so no x402 payment or wallet is needed. | |
| namespace_token | Yes | One-time token issued by the first call that claimed this namespace. Required for every later call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | Number of entries |
| items | Yes | Metadata only — ciphertext is never included here |
| status | Yes | 'listed' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond the annotations: it explicitly states the tool never returns ciphertext, lists the metadata fields returned (alg, size, timestamps), explains that updated_at serves as the version for conditional stores, and discloses the exact cost and payment mechanism. It does not contradict the readOnlyHint or idempotentHint annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the first states the core purpose, the second highlights the security boundary and alternative, and the third gives usage context and cost. Information is front-loaded and there is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, constraints, alternative routing, practical usage ('updated_at ... as if_match'), and cost/payment options. Combined with the output schema and annotations, the agent has everything needed to decide when to call this tool and how to interpret its response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds little parameter-specific meaning beyond the schema; it references credit tokens and namespace context but does not clarify any parameter beyond what the schema already states. This is adequate but does not go beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'List the keys held in a namespace with their metadata'. It distinguishes itself from siblings by explicitly saying 'Never returns ciphertext — use vault_retrieve for that.' This makes it immediately clear what the tool does and how it differs from related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance: 'Use this when you have stored secrets and need to know what is there.' It also names the alternative tool for retrieval of secret values ('use vault_retrieve for that') and provides a conditional path for free credit via credits_trial. This is strong, actionable usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_retrieveRetrieve an encrypted secretARead-onlyIdempotentInspect
Retrieve a previously stored ciphertext. Requires the namespace_token. Costs $0.02 in USDC on Base, paid via the x402 protocol, or from a credit token — call credits_trial for free credit if you have neither.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Item key | |
| namespace | Yes | Isolation scope | |
| credit_token | No | Optional. A credit token from credits_trial or /credits/buy. Supplying it pays for this call from that balance, so no x402 payment or wallet is needed. | |
| namespace_token | Yes | One-time token issued by the first call that claimed this namespace. Required for every later call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| alg | No | Algorithm label you supplied at store time |
| key | Yes | The key that was read |
| status | Yes | 'retrieved' |
| receipt | No | Payment receipt |
| namespace | No | Isolation scope |
| ciphertext | Yes | Exactly the bytes you stored. Decrypt these yourself. |
| created_at | No | ISO-8601 creation time |
| expires_at | No | Expiry, or null if it never expires |
| updated_at | No | ISO-8601 last write |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the description doesn't need to restate that. It adds valuable behavioral context: the $0.02 cost on Base, the x402 payment requirement, the credit_token alternative, and the namespace_token prerequisite. It also clarifies this returns a ciphertext, not a decrypted secret.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no fluff. The first sentence states the core action; the second covers prerequisites and cost, including a pointer to credits_trial. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with full schema coverage, an output schema, and idempotent/read-only annotations, the description is nearly complete. It covers cost, prerequisites, and payment alternatives. Missing details like error behavior are minor and the output schema likely covers return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description doesn't need to repeat parameter details. The description does add context about the payment flow and the credit_token alternative, but it doesn't explain individual parameters beyond what the schema already states. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Retrieve a previously stored ciphertext.' This clearly distinguishes it from sibling tools like vault_list (list keys) and vault_exists (check existence). The phrase 'previously stored' also implies it is the counterpart to vault_store.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to call it: to retrieve a stored ciphertext, and it specifies the required namespace_token and payment options. It does not explicitly name alternative tools or exclusion criteria, but the purpose is unambiguous enough that an agent can infer when it is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_rotate_tokenRotate a vault namespace tokenADestructiveInspect
Free. Mints a new namespace_token and immediately invalidates the current one, which you must present to authorize the rotation. Do this whenever the token may have been exposed — a leaked token is otherwise permanent, unrevocable read and delete access to every secret in the namespace. There is no recovery if you lose the token. This tool is free; no payment is required.
| Name | Required | Description | Default |
|---|---|---|---|
| namespace | Yes | Isolation scope | |
| namespace_token | Yes | One-time token issued by the first call that claimed this namespace. Required for every later call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| notice | No | Human-readable warning that the old token is now invalid |
| status | Yes | 'rotated' |
| namespace_token | Yes | The new token, shown exactly once. The previous one stops working. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark the operation as destructive and non-read-only, and the description goes further by disclosing immediate invalidation, irreversibility, the need to present the current token, and permanent unrevocable access if leaked. This adds significant behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core behavior and risk in compact sentences. It is slightly padded by repeating 'free' at the start and again at the end, but the overall structure is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With both parameters fully documented in the schema and an output schema present, the description covers everything needed to decide and invoke correctly: trigger conditions, required authorization, consequences, and irreversibility.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value by clarifying that the namespace_token must be the current token and that rotation produces a new one, disambiguating the schema's 'first call' phrasing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the exact action—'Mints a new namespace_token and immediately invalidates the current one'—on a specific resource. It is unambiguous and clearly distinct from sibling tools like vault_delete or once_key_claim.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says when to use the tool ('whenever the token may have been exposed') and explains the stakes if you don't. It does not mention alternatives or explicitly state when not to use, preventing a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_storeStore an encrypted secretADestructiveIdempotentInspect
Store client-side encrypted data. This service holds no key that could decrypt it and never sees plaintext; note that the item key, namespace, alg label and size ARE stored in the clear. The first store claims the namespace and returns a namespace_token shown only once — store it immediately, because it is required by every later call and cannot be recovered. Pass if_match with an item's updated_at for a compare-and-swap write, or if_absent to create only; either returns status 'precondition_failed' rather than silently clobbering a concurrent write. Costs $0.02 in USDC on Base, paid via the x402 protocol, or from a credit token — call credits_trial for free credit if you have neither.
| Name | Required | Description | Default |
|---|---|---|---|
| alg | No | Algorithm label recorded alongside the item (default aes-256-gcm) | |
| key | Yes | Item key | |
| ttl | No | Item lifetime in seconds | |
| if_match | No | Only write if the item's current updated_at equals this. Use it whenever you are updating a value you read earlier, or a concurrent writer's change is lost silently. | |
| if_absent | No | Only write if the key does not already exist. Fails with status 'precondition_failed' if it does. | |
| namespace | Yes | Isolation scope | |
| ciphertext | Yes | Encrypt before sending. Plaintext here would be a mistake. | |
| credit_token | No | Optional. A credit token from credits_trial or /credits/buy. Supplying it pays for this call from that balance, so no x402 payment or wallet is needed. | |
| namespace_token | No | One-time token issued by the first call that claimed this namespace. Required for every later call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| alg | No | Algorithm label you supplied; the service never decrypts |
| key | Yes | The key that was written |
| status | Yes | 'stored' |
| receipt | No | Payment receipt |
| namespace | No | Isolation scope |
| created_at | No | ISO-8601 creation time |
| expires_at | No | Expiry, or null if it never expires |
| size_bytes | No | Stored ciphertext size |
| updated_at | No | ISO-8601 last write |
| namespace_token | No | Issued only on the first store into a namespace, shown exactly once |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond annotations: discloses that the first store claims the namespace and returns a one-time token, that the token cannot be recovered, that metadata is stored in the clear, and that conditional writes return 'precondition_failed' instead of clobbering. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence carries critical information. It is front-loaded with the core purpose and security model, then token handling, concurrency, and cost. The structure is logical, though a slightly tighter wording could be possible without losing content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 9 parameters, an output schema, and annotations, the description covers essential aspects: security, token lifecycle, concurrency safety, cost, and payment alternatives. It also mentions the precondition_failed status. The output format is presumably in the output schema, so not needed here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds significant context: explains the one-time nature of namespace_token, the compare-and-swap semantics of if_match, the create-only behavior of if_absent, and the credit_token payment path. This adds value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool stores client-side encrypted data, explains the security model (no key, never sees plaintext), and distinguishes it from other vault operations like retrieve/delete. It also notes what is stored in the clear, making the scope precise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for when to use conditional writes (if_match/if_absent) and payment options (credits_trial, credit_token). It implicitly distinguishes from other vault tools by describing the store action, but does not explicitly name alternatives or state 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.
x402_verifyCheck an x402 endpoint before paying itARead-onlyIdempotentInspect
Call this BEFORE authorising payment to any x402 endpoint you did not write yourself. It fetches the endpoint's live payment challenge and compares it against every observation previously made by every other caller, so you learn things a single agent cannot see on its own -- above all, whether the address receiving the money has changed. A 'critical' entry in drift means something determining where funds go (pay_to, network or asset) is different from before: stop and confirm out of band. Read the LIVE charges in preference to any directory listing, and pass what the listing claimed as expect to have the disagreement reported. IMPORTANT: 'status':'ok' is NOT an endorsement -- it only means a challenge was read and recorded. It cannot tell you whether the operator will deliver anything for your money. 'first_observation':true means there is no history at all, so an empty drift proves nothing. ALWAYS read prior_criticals: drift only compares against the last observation, so an endpoint that swapped its payee earlier shows an empty drift once that swap became the baseline -- a non-zero prior_criticals means it has changed where money goes before, and that is true no matter how clean today's look is. 'status':'unreachable' is not evidence of fraud and not evidence of health; do not pay on it either way. A null price_usd means the token's units are unknown here and the amount was NOT converted -- do not assume it is small. Costs $0.010 in USDC on Base, paid via the x402 protocol, or from a credit token — call credits_trial for free credit if you have neither.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public HTTPS URL of the endpoint you are about to pay. Loopback and private-network addresses are refused rather than fetched. | |
| expect | No | Optional. What a directory, README or earlier response led you to believe. Any disagreement with the live challenge is reported. | |
| method | No | How to provoke the challenge: 'POST' (default), 'GET' or 'HEAD'. Use the method you intend to pay for. | |
| credit_token | No | Optional. A credit token from credits_trial or /credits/buy. Supplying it pays for this call from that balance, so no x402 payment or wallet is needed. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | The URL that was checked |
| drift | No | Differences from the last observation. Any severity 'critical' entry changes where money goes. Null means no comparison was made at all, which is not the same as an empty array. |
| advice | No | Plain-language statement of what was and was not established |
| status | Yes | 'ok' means a challenge was read -- NOT that the endpoint is trustworthy. 'refused' means the URL was never fetched. 'unreachable', 'redirected' and 'not_x402' all mean no challenge was obtained. |
| charges | No | What the endpoint declares it will charge, right now |
| last_seen | No | ISO-8601 time of the previous observation |
| reachable | No | Whether the endpoint answered at all |
| first_seen | No | ISO-8601 time this endpoint was first observed |
| mismatches | No | How the live challenge disagrees with what you expected |
| times_seen | No | How many observations exist, across all callers |
| http_status | No | Status code the endpoint returned |
| last_critical | No | The most recent previously recorded critical change, or null if there has never been one. |
| prior_criticals | No | How many critical changes have EVER been recorded for this endpoint, not counting this call. `drift` only compares against the last observation, so once a change has been absorbed into the baseline it stops appearing there. A non-zero value here means this endpoint has changed where money goes before, even when `drift` is empty. |
| first_observation | No | True when there was no prior record, so an empty `drift` means nothing |
| matches_expectation | No | Present only when `expect` was supplied |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral caveats that annotations alone cannot convey: 'status':'ok' is not an endorsement, a first observation makes empty drift meaningless, prior_criticals remains the truthful signal after a baseline swaps, unreachable is inconclusive, and null price_usd means no conversion occurred. These do not contradict readOnlyHint/idempotentHint; they enrich the safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every section earns its place: the when-to-use rule is front-loaded, followed by the core mechanism, then the caveats most likely to prevent a mistaken payment. It uses clear emphasis markers (IMPORTANT, ALWAYS) to prioritize the highest-risk messages.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paid verification tool with an output schema, the description covers the necessary interpretation of statuses and fields, failure semantics, pricing, and payment fallbacks. There is no missing operational context an agent would need to decide whether to call it or act on its result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds semantic guidance beyond field descriptions: expect should carry 'what the listing claimed', method should be the one you intend to pay with, and credit_token is explicitly an alternative balance that avoids an x402 payment. This lifts it above baseline without needing to repeat schema details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names a specific action ('Call this BEFORE authorising payment') tied to a clear resource (an x402 endpoint not written by the caller), and the second sentence defines the mechanism ('fetches ... live payment challenge and compares it against every observation previously made'). This is precise and naturally distinguishes it from unrelated siblings like meetings_* or vault_*.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states exactly when to invoke ('BEFORE authorising payment to any x402 endpoint you did not write yourself'), tells the agent to prefer live charges over directory listings, and routes users without funding to credits_trial. It also tells the caller which HTTP method to use ('Use the method you intend to pay for') and what conditions should prevent payment ('stop and confirm out of band').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
meetings_summarize1 field changed- added
Output schema / properties / ai_generatedAdded value: +{ + "description": "True: `answer` was written by an AI model", + "type": "boolean" +}
17 tool updates
- Changed
compress1 field changed- added
Input schema / properties / credit_tokenAdded value: +{ + "description": "Optional. A credit token from credits_trial or /credits/buy. Supplying it pays for this call from that balance, so no x402 payment or wallet is needed.", + "type": "string" +}
- Added
credits_balance - Added
credits_trial - Changed
meetings_get1 field changed- added
Input schema / properties / credit_tokenAdded value: +{ + "description": "Optional. A credit token from credits_trial or /credits/buy. Supplying it pays for this call from that balance, so no x402 payment or wallet is needed.", + "type": "string" +}
- Changed
meetings_import1 field changed- added
Input schema / properties / credit_tokenAdded value: +{ + "description": "Optional. A credit token from credits_trial or /credits/buy. Supplying it pays for this call from that balance, so no x402 payment or wallet is needed.", + "type": "string" +}
- Changed
meetings_list1 field changed- added
Input schema / properties / credit_tokenAdded value: +{ + "description": "Optional. A credit token from credits_trial or /credits/buy. Supplying it pays for this call from that balance, so no x402 payment or wallet is needed.", + "type": "string" +}
- Changed
meetings_search1 field changed- added
Input schema / properties / credit_tokenAdded value: +{ + "description": "Optional. A credit token from credits_trial or /credits/buy. Supplying it pays for this call from that balance, so no x402 payment or wallet is needed.", + "type": "string" +}
- Changed
meetings_summarize1 field changed- added
Input schema / properties / credit_tokenAdded value: +{ + "description": "Optional. A credit token from credits_trial or /credits/buy. Supplying it pays for this call from that balance, so no x402 payment or wallet is needed.", + "type": "string" +}
- Changed
once_key_claim1 field changed- added
Input schema / properties / credit_tokenAdded value: +{ + "description": "Optional. A credit token from credits_trial or /credits/buy. Supplying it pays for this call from that balance, so no x402 payment or wallet is needed.", + "type": "string" +}
- Changed
pdf_parse1 field changed- added
Input schema / properties / credit_tokenAdded value: +{ + "description": "Optional. A credit token from credits_trial or /credits/buy. Supplying it pays for this call from that balance, so no x402 payment or wallet is needed.", + "type": "string" +}
- Changed
scrape1 field changed- added
Input schema / properties / credit_tokenAdded value: +{ + "description": "Optional. A credit token from credits_trial or /credits/buy. Supplying it pays for this call from that balance, so no x402 payment or wallet is needed.", + "type": "string" +}
- Changed
vault_delete1 field changed- added
Input schema / properties / credit_tokenAdded value: +{ + "description": "Optional. A credit token from credits_trial or /credits/buy. Supplying it pays for this call from that balance, so no x402 payment or wallet is needed.", + "type": "string" +}
- Changed
vault_exists1 field changed- added
Input schema / properties / credit_tokenAdded value: +{ + "description": "Optional. A credit token from credits_trial or /credits/buy. Supplying it pays for this call from that balance, so no x402 payment or wallet is needed.", + "type": "string" +}
- Changed
vault_list1 field changed- added
Input schema / properties / credit_tokenAdded value: +{ + "description": "Optional. A credit token from credits_trial or /credits/buy. Supplying it pays for this call from that balance, so no x402 payment or wallet is needed.", + "type": "string" +}
- Changed
vault_retrieve1 field changed- added
Input schema / properties / credit_tokenAdded value: +{ + "description": "Optional. A credit token from credits_trial or /credits/buy. Supplying it pays for this call from that balance, so no x402 payment or wallet is needed.", + "type": "string" +}
- Changed
vault_store1 field changed- added
Input schema / properties / credit_tokenAdded value: +{ + "description": "Optional. A credit token from credits_trial or /credits/buy. Supplying it pays for this call from that balance, so no x402 payment or wallet is needed.", + "type": "string" +}
- Changed
x402_verify1 field changed- added
Input schema / properties / credit_tokenAdded value: +{ + "description": "Optional. A credit token from credits_trial or /credits/buy. Supplying it pays for this call from that balance, so no x402 payment or wallet is needed.", + "type": "string" +}
1 tool update
- Changed
x402_verify2 fields changed- added
Output schema / properties / last_criticalAdded value: +{ + "description": "The most recent previously recorded critical change, or null if there has never been one.", + "properties": { + "at": { + "description": "ISO-8601 time the change was recorded", + "type": "string" + }, + "field": { + "description": "What changed: pay_to, network or asset", + "type": "string" + }, + "from": { + "description": "The previous value", + "type": "string" + }, + "to": { + "description": "The value that replaced it", + "type": "string" + } + }, + "type": [ + "object", + "null" + ] +} - added
Output schema / properties / prior_criticalsAdded value: +{ + "description": "How many critical changes have EVER been recorded for this endpoint, not counting this call. `drift` only compares against the last observation, so once a change has been absorbed into the baseline it stops appearing there. A non-zero value here means this endpoint has changed where money goes before, even when `drift` is empty.", + "type": "number" +}
1 tool update
- Changed
x402_verify3 fields changed- changed
Output schema / properties / drift / descriptionPrevious value: -"Differences from the last observation. Any severity 'critical' entry changes where money goes."New value: +"Differences from the last observation. Any severity 'critical' entry changes where money goes. Null means no comparison was made at all, which is not the same as an empty array." - changed
Output schema / properties / drift / items / properties / severity / descriptionPrevious value: -"'critical' or 'warning'"New value: +"'critical' when something determining where money goes is new, 'warning' when it is worth knowing, 'info' when it is merely a fact" - changed
Output schema / properties / drift / typePrevious value: -"array"New value: +[ + "array", + "null" +]
1 tool update
- Changed
x402_verify1 field changed- changed
Output schema / properties / charges / properties / price_usd / typePrevious value: -[ - "number", - "null" -]New value: +[ + "string", + "null" +]
1 tool update
- Added
x402_verify
2 tool updates
- Changed
meetings_import1 field changed- changed
Input schema / properties / source / descriptionPrevious value: -"Free-form label for where the transcript came from, e.g. webvtt, srt, plain-text"New value: +"Optional hint about the export format. Ignored if it disagrees with the file: WebVTT and SRT are detected from the content itself, unpacked into speaker-attributed text, and any speakers found are added to participants. Plain text is stored verbatim."
- Added
meetings_summarize
16 tool updates
- First observed
compress - First observed
meetings_get - First observed
meetings_import - First observed
meetings_list - First observed
meetings_search - First observed
once_key_claim - First observed
once_key_complete - First observed
once_key_release - First observed
pdf_parse - First observed
scrape - First observed
vault_delete - First observed
vault_exists - First observed
vault_list - First observed
vault_retrieve - First observed
vault_rotate_token - First observed
vault_store
Related MCP Connectors
63 pay-per-call tools for agents: vision, text, data, web, blockchain. USDC on Base via x402.
Pay-per-call data APIs for AI agents. USDC on Base via x402. 33 tools, no signup.
x402 toolkit for AI agents: paid web, AI, and Base chain tools per call in USDC. Free tools too.
Market data and web intelligence for AI agents, paid per call in USDC on Base via x402.
Related MCP Servers
- FlicenseAqualityDmaintenancePay-per-call tools for AI agents including trust checks, due diligence, market data, and human-verified approvals, settled in USDC on Base via the x402 protocol.16-
- AlicenseAqualityCmaintenanceProvides AI agents with 10 pay-per-call utility tools (QR generation, DNS lookup, OCR, etc.) using USDC on Base via the x402 protocol, with agent's private key never leaving the agent.1123 npmMIT
- AlicenseBqualityAmaintenancePay-per-call AI agent APIs on Base via x402. Multiple tools across patents, law, AI, geo, weather, crypto, and more. Always growing.2018MIT
- AlicenseAqualityBmaintenancePay-per-call data and tools for AI agents over x402, by UnyKorn. 360 endpoints: DeFi and market data, multi-chain wallet reads, wallet and token risk signals, SEC filings, web and domain intel, and AI text tools. Settled per call in USDC on Base ($0.001-$0.25). No API keys or subscriptions; unpaid calls return the exact quote first.14MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.