taxsort-mcp
Server Details
TaxSort — Tollbooth-monetized MCP server for personal tax transaction classification
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- lonniev/taxsort-mcp
- GitHub Stars
- 0
- Server Listing
- taxsort-mcp
Available Tools
87 toolstaxsort_account_statementAInspect
Generate a patron's account statement at this operator.
Returns the patron's purchase history, active credit tranches, per-tool usage breakdown, and recent daily usage logs. This is the patron's spending account — not the operator's Authority tax balance.
Free — no credits consumed. Proof of npub ownership is required to prevent statement-scraping of arbitrary patrons.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days of daily usage history to include (default 30). | |
| npub | Yes | The patron's Nostr public key (npub1...). | |
| dpop_token | Yes | Raw JSON of a kind-27235 Nostr event signed by npub — not base64, not NIP-98 'Authorization: Nostr <b64>' framing. Its `u` tag must hold THIS tool's exact name (from tools/list), not the endpoint URL; content:"", created_at within 60s of now, and a random `nonce` tag recommended. Or a cached dpop_token phrase. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It discloses that the call is free, that proof of npub ownership is required via dpop_token, and why that proof exists (preventing statement-scraping). It implicitly signals a non-mutating read operation, though it does not cover rate limits or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences carry all essential information: purpose and return contents up front, the tax-balance exclusion, then cost and auth caveats. There is no filler, and each sentence adds operational value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and all parameters fully documented in the schema, the description is sufficient to invoke the tool correctly. The only notable gap is that the closely named sibling taxsort_account_statement_infographic is not referenced, leaving the agent to infer which statement variant to use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the dpop_token schema entry is already highly detailed about raw kind-27235 framing, time window, and nonce. The description adds no new parameter-level syntax, only rein orces the proof-of-ownership concept, so the 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 ('Generate') and resource ('a patron's account statement') and enumerates exactly what is returned: purchase history, active credit tranches, per-tool usage breakdown, and daily usage logs. It also explicitly distinguishes itself from the operator's Authority tax balance, separating it from related balance 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?
Provides clear context: this tool is for a patron's spending-account statement, and it explicitly says what it is not (the operator's Authority tax balance). It does not name alternative sibling tools or state when to prefer another statement/transaction tool, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_account_statement_infographicAInspect
Generate a visual SVG infographic of your account statement.
Returns the same data as account_statement, rendered as a dark-themed
SVG graphic with balance hero, metrics cards, health gauge, tranche
table, and tool usage breakdown. Costs 1 api_sat per call. Proof is
verified by debit_or_deny before any cost is incurred.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days of daily usage history to include (default 30). | |
| npub | Yes | The Nostr public key (npub1...) whose statement to render. | |
| dpop_token | Yes | Raw JSON of a kind-27235 Nostr event signed by npub — not base64, not NIP-98 'Authorization: Nostr <b64>' framing. Its `u` tag must hold THIS tool's exact name (from tools/list), not the endpoint URL; content:"", created_at within 60s of now, and a random `nonce` tag recommended. Or a cached dpop_token phrase. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and handles it well by disclosing the 1 api_sat cost per call and the debit_or_deny proof verification before cost is incurred. It also reveals the output composition including hero, metrics cards, health gauge, tranche table, and usage breakdown. It doesn't mention side effects or failure modes, but generation tools are reasonably covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, starting with the core action and then efficiently covering the output format, cost, and proof verification. Every sentence contributes useful information and there is no redundant or filler 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?
The description covers the tool's purpose, output format, costing, and authentication proof flow, and an output schema exists to define return values. It is nearly complete, though it could have been slightly more explicit about when an agent should prefer this over the plain account_statement tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents npub, dpop_token, and days. The description adds no additional parameter-level meaning beyond reiterating that it renders the same statement data, which is enough to maintain the baseline without needing further compensation.
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: generating a visual SVG infographic of an account statement. It also distinguishes this tool from the sibling taxsort_account_statement by noting it returns the same data rendered as a dark-themed SVG graphic, so an agent can tell them apart.
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 names taxsort_account_statement as the source of the same data and clarifies that this tool renders it as an SVG infographic. This gives clear context for choosing between raw data and visual presentation, though it does not explicitly spell out when not to use this tool or provide exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_adoption_statusAInspect
Check this operator's adoption-request status at a chosen Authority.
Free. Polls the Authority MCP-to-MCP for the status of this operator's request (pending / approved / rejected / provisioned).
| Name | Required | Description | Default |
|---|---|---|---|
| dpop_token | No | ||
| authority_npub | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description adds 'Free' and 'Polls the Authority MCP-to-MCP', which are helpful but lacks details on errors, rate limits, or data freshness. Adequate but not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core purpose. No extraneous text; 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?
For a simple status check with output schema available, the description is largely complete. Could mention the output format briefly, but not a major 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?
The description mentions 'chosen Authority' hinting at authority_npub, but does not explain either parameter (dpop_token or authority_npub) explicitly. Schema coverage is 0%, so description fails to compensate.
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 action ('Check') and the resource ('adoption-request status'), specifies the target ('at a chosen Authority'), and lists possible statuses. This distinguishes it from siblings like request_adoption.
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 explains the tool polls the Authority for status, giving clear usage context. However, it does not explicitly exclude alternatives or provide when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_apply_rulesBInspect
Apply rules to unclassified transactions in a session.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| dpop_token | No | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It does not mention destructive potential, idempotency, error states, or what happens to the input data. The existence of an output schema is not leveraged to describe return values.
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 a single, front-loaded sentence with no fluff. It efficiently communicates the core action and scope.
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 that an output schema exists, the description should explain what the tool returns or accomplishes beyond the input. It omits information about the outcome (e.g., number of transactions affected, errors). Mutation behavior and session state changes are unclear.
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?
Only 33% of schema parameters have descriptions in the schema (npub), and the tool description adds no additional meaning. session_id lacks description, and dpop_token is empty. The description does not explain how parameters relate to the action.
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 specifies the action ('apply rules'), the target ('unclassified transactions'), and the context ('in a session'). It distinguishes the tool from siblings like taxsort_save_rule and taxsort_get_rules by focusing on applying existing rules.
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?
No guidance on when to use this tool versus alternatives, prerequisites (e.g., having a session and rules), or when not to use it. The description lacks context about workflow ordering.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_ask_advisorCInspect
Ask the Financial Advisor about using TaxSort.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| history | No | ||
| question | Yes | ||
| dpop_token | No | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description is too minimal. It does not disclose behavioral traits such as authentication requirements (e.g., npub for billing), response behavior, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise with one sentence, but it is appropriately short. However, it lacks necessary detail to be fully useful.
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 5 parameters and an output schema, the description is incomplete. It does not cover parameter roles, the nature of the advisor interaction, or output expectations.
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 low (20%), and the description adds no meaning beyond the schema. Parameters like npub, history, dpop_token, and session_id are not explained.
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 clearly states the tool is for asking the Financial Advisor about TaxSort. However, it does not differentiate from the sibling tool taxsort_ask_tax_researcher, which likely serves a similar purpose.
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?
No guidance on when to use this tool versus alternatives, no when-not scenarios, and no prerequisites or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_ask_tax_researcherCInspect
Ask the Tax Code Researcher about IRS provisions.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| history | No | ||
| question | Yes | ||
| dpop_token | No | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits such as whether it is read-only, if it incurs costs, or has rate limits. The description is too minimal to inform the agent of side effects or constraints.
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 a single sentence that concisely states the tool's purpose. It is front-loaded but could be more informative without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description lacks details on how results are returned or what to expect. Given the tool's complexity, more context is needed for the agent to use it effectively.
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?
Only 20% of parameters have descriptions in the schema. The description adds no extra meaning beyond the schema; it does not explain how to use the parameters or their semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it asks a tax code researcher about IRS provisions. It uses a specific verb-resource combination but does not differentiate from sibling tools like taxsort_ask_advisor.
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?
No guidance on when to use this tool vs alternatives. Does not mention prerequisites, context, or scenarios for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_check_authority_balanceAInspect
Check this operator's tax balance at the Authority.
Returns the sats available for certifying patron credit purchases. When this balance reaches zero, patron top-ups cannot be certified and the operator must call purchase_credits on the Authority.
This is the operator's own funding — not a patron balance. Free.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It declares a read-only check, explains return value (sats available), and notes the financial consequence of zero balance. Could mention idempotency or lack of side effects, but sufficient.
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?
Five sentences, front-loaded with purpose, then return value and workflow implications. No unnecessary words.
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?
Complete for a parameterless check tool: explains what it returns, why it matters, and what action to take next. Output schema provides additional detail, but description stands alone.
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?
No parameters exist, and schema coverage is 100%. Description adds no parameter detail, which is acceptable. Baseline 4.
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?
Clearly states it checks the operator's tax balance at the Authority and distinguishes it as the operator's own funding, not a patron balance. Distinguishes from sibling tools like check_balance and purchase_credits.
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?
Implies when to use (before certifying patron credit purchases) and what to do when balance is zero (call purchase_credits). Does not explicitly list when not to use, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_check_balanceAInspect
Check a patron's credit balance at this operator.
This is the patron's spending balance — credits purchased via Lightning for tool calls at this operator. For the operator's own balance at the Authority (needed to certify patron purchases), use authority_check_balance instead.
Free — no credits required. Proof of npub ownership is required to prevent anyone-with-the-registry from enumerating balances.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | Yes | The Nostr public key (npub1...) whose balance to check. | |
| dpop_token | Yes | Raw JSON of a kind-27235 Nostr event signed by npub — not base64, not NIP-98 'Authorization: Nostr <b64>' framing. Its `u` tag must hold THIS tool's exact name (from tools/list), not the endpoint URL; content:"", created_at within 60s of now, and a random `nonce` tag recommended. Or a cached dpop_token phrase. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose useful behavioral facts: the call is free ('Free — no credits required') and requires proof of npub ownership to prevent enumeration of balances. It does not state read-only or rate limits, but for a simple balance-check operation the main cost and auth behaviors are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the first sentence states the core action, the second paragraph clarifies scope and distinguishes the sibling, the third adds cost and security rationale. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and the input schema is fully documented, the description covers the essential decision context: what balance is checked, when to use this vs the alternative, that it is free, and the auth requirement. The one completeness gap is the misnamed alternative tool, which slightly weakens the disambiguation in a large sibling list.
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% and both parameters already have detailed descriptions in the schema. The description adds context about the meaning of the balance and the proof requirement, but does not add anything about npub or dpop_token beyond what the schema provides. This meets the baseline for fully-covered parameters.
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 precise verb+resource: 'Check a patron's credit balance at this operator.' The second paragraph sharpens the scope by defining it as the patron's spending balance purchased via Lightning, and explicitly contrasts it with the operator's own Authority balance. This gives the agent a clear, unambiguous picture of what the tool does and how it differs from similar balance 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 an explicit when-to-use signal: for the patron's spending balance. It also names an alternative: 'use authority_check_balance instead' for the operator's Authority balance. However, the alternative name is inaccurate — the actual sibling is taxsort_check_authority_balance — so the routing instruction is explicit but slightly imprecise.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_check_paymentAInspect
Check the payment status of a Lightning invoice.
Call after paying the invoice from purchase_credits. Free — no credits required. Proof of npub ownership is required to prevent credit-grant front-running by an observer of the invoice ID.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | Yes | The Nostr public key (npub1...) that purchased the invoice. | |
| dpop_token | Yes | Raw JSON of a kind-27235 Nostr event signed by npub — not base64, not NIP-98 'Authorization: Nostr <b64>' framing. Its `u` tag must hold THIS tool's exact name (from tools/list), not the endpoint URL; content:"", created_at within 60s of now, and a random `nonce` tag recommended. Or a cached dpop_token phrase. | |
| invoice_id | Yes | The invoice ID returned by purchase_credits. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and delivers: cost behavior ('Free — no credits required'), an auth requirement ('Proof of npub ownership is required'), and the security rationale ('to prevent credit-grant front-running by an observer of the invoice ID'). This explains why the oddly strict dpop_token parameter exists, which is genuinely useful context. It doesn't disclose failure-mode behavior, but the disclosures present are substantial.
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, with purpose front-loaded first, then usage timing, cost, and auth rationale. Every sentence earns its place; the only minor waste is 'Free — no credits required,' which says the same thing twice. The structure is efficient and well-ordered.
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 3-parameter tool, the description covers the full call context: what it does, when to call it (after purchase_credits), cost, and the auth prerequisite. Combined with 100% schema parameter coverage and an existing output schema, nothing essential for invoking it correctly is missing. The only gap is clarity on edge outcomes (e.g., unpaid/expired invoice behavior), which is minor.
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 per the baseline rule the description needn't add parameter detail — and it doesn't. The schema itself already documents invoice_id's provenance (returned by purchase_credits), npub's format, and dpop_token's exact framing requirements. The description adds no new parameter semantics, so the 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 first sentence uses a specific verb and resource: 'Check the payment status of a Lightning invoice.' Among many sibling check tools (check_balance, check_proof_status, check_unlock), this one is identifiable by its unique resource — Lightning invoice payment status. It stops short of 5 because it doesn't explicitly name a sibling it is not, and 'check' is a generic verb shared with several peers.
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 temporal guidance: 'Call after paying the invoice from purchase_credits,' which anchors the tool in a clear workflow and ties it to a named sibling. It doesn't provide exclusions or state when not to use it vs other check_* tools, so it earns a 4 rather than a 5, but the when-to-use context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_check_priceAInspect
Preview the effective cost of a tool call.
Shows the base cost and any constraint effects (discounts, free trials, surge pricing). Free — no credits required.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | ||
| tool_id | Yes | Either the tool's UUID (from the pricing model) or a bare capability string (e.g. ``"deal_scenario"``). FE callers usually have the capability name; this resolves both so the FE doesn't need to derive UUIDs locally. | |
| dpop_token | No | ||
| tool_kwargs | No | Optional JSON object with tool call parameters for ad valorem / categorical-multiplier pricing preview (e.g. '{"amount_sats": 5000}' or '{"difficulty": "sovereign", "mode": "live"}'). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry behavioral disclosure itself. It reveals that the tool is free and shows a cost breakdown, which is useful. However, it does not explicitly confirm that no side effects occur, whether authentication is needed via npub or dpop_token, or whether it actually executes the target call or merely estimates its cost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the first sentence states the core purpose, and the second provides essential behavioral detail about cost and credits. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists, so return-value documentation is not the description's job, and tool_id is well explained in the schema. Still, without annotations, the description omits side-effect clarity and leaves npub and dpop_token unexplained, so an agent may lack enough context for a fully correct call.
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 description adds no parameter-level meaning. The schema covers tool_id and tool_kwargs, but npub and dpop_token are undocumented, and overall schema description coverage is only 50%. Since the description does not compensate for these gaps, parameter semantics are weakly supported.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Preview') and a clear resource ('the effective cost of a tool call'), then elaborates with what the preview shows: base cost and constraint effects like discounts, free trials, and surge pricing. This distinguishes it from sibling tools like get_pricing_model or check_balance, since the focus is on estimating an individual tool call's cost.
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 implies the tool is used to preview costs before making a tool call, and the 'Free — no credits required' note encourages safe use. However, it does not explicitly say when to prefer this over alternatives, nor does it state when not to use it or what prerequisites apply.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_check_proof_statusAInspect
Check whether a previously-cached dpop_token is still valid.
Mirrors check_oauth_status for the npub-proof flow: a calling
agent can ask "will my next paid call accept this dpop_token?"
before burning credits on a guaranteed failure.
Free, no side effects — does not evict the cache or touch relays.
| Name | Required | Description | Default |
|---|---|---|---|
| dpop_token | No | Required. The dpop_token phrase returned by ``request_npub_proof`` / ``receive_npub_proof``. | |
| patron_npub | No | Required. The patron's npub (npub1...). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so strongly: 'Free, no side effects — does not evict the cache or touch relays.' This tells an agent exactly what will and will not happen, beyond what the input schema can express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place: purpose is front-loaded, the use-case analogy is one sentence, and the side-effect guarantee is a short closing statement. There is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, two well-described parameters, and a clear no-side-effects guarantee, the description fully equips an agent to select and invoke the tool correctly. It also explains the business motivation, which is not captured by the structured fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides complete descriptions for both parameters at 100% coverage, including where dpop_token comes from and the expected npub format. The tool description adds little parameter-level meaning beyond the word 'previously-cached,' so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource pair: 'Check whether a previously-cached dpop_token is still valid.' It also connects to the npub-proof flow and names the check_oauth_status analog, making it easy for an agent to distinguish this from the many other status and check 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?
It gives a clear use case: ask whether the next paid call will accept the dpop_token before burning credits on a guaranteed failure. It names check_oauth_status as the analog, though it does not explicitly say when not to use this tool or list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_check_unlockCInspect
Check if the unlock response is valid.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| response | Yes | ||
| dpop_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It only says 'check if valid' without indicating whether this is a read-only operation, what constitutes validity (e.g., signature check, format validation), or any side effects. This lack of clarity leaves the agent guessing about the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, which is concise but lacks critical details. It does not waste words, but it also does not add enough value to justify its brevity. It could be expanded slightly without losing conciseness.
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 presence of an output schema and siblings like 'taxsort_request_unlock', the description is incomplete. It does not explain the output (even though output schema exists, it still helps to give context), the expected format of the 'response', or how this tool fits into a workflow. The agent would need additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only 'npub' described). The description does not add any parameter meaning beyond 'response' and 'dpop_token' are used. With three parameters and no explanation of 'response' or 'dpop_token', the tool is nearly unusable without external knowledge.
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's purpose: 'Check if the unlock response is valid.' It specifies a verb ('check') and a resource ('unlock response validity'), and it implicitly distinguishes from the sibling 'taxsort_request_unlock' which would handle the request side.
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?
No guidance on when to use this tool or when not to. It does not mention that a prior call to 'taxsort_request_unlock' is needed to obtain a response, nor any prerequisites or output interpretation context. The description gives no usage context at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_clear_transactionsAInspect
Delete all transactions and classifications for a session, so CSVs can be re-imported.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| dpop_token | No | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes the destructive action of deleting all transactions and classifications. With no annotations, the description carries full burden; it lacks details on irreversibility, authentication needs, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of 15 words, front-loaded with the core action and purpose. Every word is relevant and concise.
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?
Lacks details on prerequisites (e.g., valid session), return values (despite output schema existing), and fails to describe two parameters. For a destructive tool with no annotations, this is insufficient.
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?
Description does not explain any of the three parameters. Schema description coverage is only 33% (npub has description), leaving two parameters (dpop_token, session_id) undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Delete all transactions and classifications for a session', specifying the verb and resource. Distinguishes from siblings like taxsort_delete_account_transactions and taxsort_delete_classification by targeting all session data.
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 mentions the use case 'so CSVs can be re-imported', guiding the agent on when to use this tool. Does not explicitly state when not to use or list alternatives, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_count_rule_matchesCInspect
Count how many transactions match a rule pattern (live preview).
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| dpop_token | No | ||
| session_id | Yes | ||
| amount_value | No | ||
| amount_operator | No | ||
| description_pattern | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. The phrase 'live preview' suggests no data mutation, but this is not explicitly stated. There is no mention of side effects, required permissions, or whether the operation is safe. An agent might infer read-only, but the lack of certainty is a gap.
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 a single sentence, which is concise but omits important information. It earns its place in brevity but sacrifices completeness. The structure is front-loaded with the key action, but could be extended to cover essentials.
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 parameter richness (6 params, 2 required) and low schema coverage, the description is under-informative. It does not reference the output schema or explain the return value. The 'live preview' and rule pattern hint are helpful but insufficient for an agent to confidently invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17% (only npub is described). The description adds no parameter details beyond mentioning 'rule pattern', which corresponds to description_pattern. Critical parameters like session_id, amount_value, and amount_operator are unexplained. The description does not compensate for the sparse 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 verb 'count' and the resource 'transactions matching a rule pattern', and adds 'live preview' to indicate it's non-binding. This distinguishes it from sibling tools like taxsort_apply_rules (which modifies data) and taxsort_get_rules (which lists rules). However, it could more explicitly contrast with similar counting tools if any exist.
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?
No guidance is provided on when to use this versus alternative tools such as taxsort_save_rule (to save rules) or taxsort_apply_rules (to execute rules). The 'live preview' hint is the only usage hint, but it's implicit. No when-not-to-use or prerequisite context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_create_feedback_issueCInspect
Create a GitHub issue for bug reports, feature requests, or feedback.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | ||
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| title | Yes | ||
| contact | No | ||
| category | No | feedback | |
| dpop_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description does not mention side effects, authentication requirements, or that npub is needed (though schema suggests it). Limited transparency.
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?
Single sentence, no waste. However, lacks essential details; could benefit from elaboration.
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 6 parameters and 1 required, the description is too minimal. Missing when to use, behavior, output handling (output schema exists but not mentioned).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17% (only npub has a description). Tool description does not explain any parameters beyond the general purpose. Inconsistency between npub being described as 'Required' in schema property but not in top-level required array.
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 clearly states the tool creates GitHub issues for bugs, features, or feedback. However, sibling tool 'taxsort_report_issue' likely overlaps, and no differentiation is provided.
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?
No guidance on when to use this tool versus alternatives like 'taxsort_report_issue' or when not to use it. Missing context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_create_sessionCInspect
Create a new TaxSort session for a tax year.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| label | No | ||
| tax_year | No | ||
| dpop_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose behavioral traits such as side effects, authentication requirements, or what happens upon creation. The description is too minimal to be informative.
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 a single 9-word sentence, which is concise but overly minimal. It lacks structure such as bullet points or sub-sections, and could include more detail without becoming verbose.
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 (4 parameters, no annotations, low schema coverage, many siblings), the description is incomplete. It does not explain the return value, when to use, or what a session is, and does not leverage the existence of an output 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 only 25% (only 'npub' has a description). The tool description adds no additional meaning to parameters beyond the schema, failing to compensate for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new TaxSort session for a tax year,' providing a specific verb and resource. It distinguishes from siblings like 'get_session' and 'list_sessions' that retrieve or list sessions.
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?
No guidance on when to use this tool versus alternatives like 'taxsort_get_session' or 'taxsort_list_sessions'. No prerequisites, context, or exclusions are mentioned, leaving the agent without direction among 40+ siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_delete_account_transactionsCInspect
Delete all transactions and classifications for a specific imported account.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| account | Yes | ||
| dpop_token | No | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates a destructive action (delete all data), but with no annotations provided, it lacks detail on irreversibility, required authentication, or potential side effects. The behavioral disclosure is minimal.
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 a single, concise sentence that communicates the core function efficiently with no wasted words.
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 existence of sibling tool taxsort_clear_transactions, the description lacks contextual completeness by not explaining the difference. Also, it does not clarify the effect on the account or subsequent operations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only 'npub' has a description). The description adds no additional meaning beyond the schema parameter names, which are somewhat self-explanatory but insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'delete' and the resource 'all transactions and classifications for a specific imported account'. However, it does not distinguish from sibling tools like taxsort_clear_transactions, which may have similar intent.
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?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, context, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_delete_classificationBInspect
Remove a classification, reverting the transaction to unclassified.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| dpop_token | No | ||
| session_id | Yes | ||
| transaction_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description effectively discloses the primary behavioral effect: removing a classification reverts the transaction to unclassified. This is sufficient for a simple deletion action, though it does not mention if the operation is reversible or if multiple classifications can be removed at once.
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 a single concise sentence that immediately conveys the primary action and effect. However, it could be slightly expanded to include usage context without becoming verbose.
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 simplicity and the presence of an output schema, the description is minimally viable. It states what the tool does but lacks guidance on when to use it or how it differs from similar tools, leaving the agent to infer from the name alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only npub has a description). The tool description adds no information about any of the four parameters, leaving session_id and transaction_id entirely undocumented despite being required. This is inadequate for low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Remove a classification' and the effect 'reverting the transaction to unclassified', which distinguishes it from sibling tools like taxsort_save_classifications or taxsort_reset_classifications that have different purposes.
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?
No guidance is provided on when to use this tool versus alternatives like taxsort_reset_classifications or taxsort_clear_transactions. The description does not mention any prerequisites or context for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_delete_couponAInspect
Delete a coupon. Cascades to all patron redemptions.
Any chain step referencing the deleted coupon_id becomes a no-op (the constraint returns neutral on unknown ids) — the Studio surfaces orphan references as warnings.
RESTRICTED to operator — requires proof.
| Name | Required | Description | Default |
|---|---|---|---|
| coupon_id | Yes | ||
| dpop_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses key behaviors: cascading to patron redemptions, no-op effect on chain steps referencing the deleted coupon, and the Studio surfacing warnings. The 'requires proof' detail is vague, but overall it provides substantial operational context beyond a bare delete 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?
The description is four sentences, front-loaded with the primary action, then detailing effects and restrictions. Every sentence provides unique information with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's destructive nature and side effects, the description covers cascades, no-op behavior, and access restrictions. However, it omits parameter explanations and does not describe what the output schema contains (e.g., deletion count, error), leaving some gaps for an agent to handle 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 input schema has 0% description coverage, yet the description adds no explanation for either parameter (coupon_id or dpop_token). The description fails to clarify what coupon_id expects (e.g., format, lifecycle) or the purpose of dpop_token, leaving the agent to guess.
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 'Delete a coupon,' specifying the exact action and resource. It distinguishes this deletion tool from related siblings like taxsort_mint_coupon or taxsort_forget_coupon by detailing the cascading effect on redemptions and the no-op behavior for references.
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 notes 'RESTRICTED to operator — requires proof,' indicating a usage constraint. However, it does not explicitly state when to use this tool versus alternatives like taxsort_forget_coupon, nor does it describe prerequisites or conditions for safe use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_delete_custom_categoryCInspect
Delete a custom category.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| dpop_token | No | ||
| category_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations and minimal description, the description fails to disclose side effects, required permissions, or that the operation is destructive and likely irreversible.
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 extremely terse (4 words) and lacks necessary detail, making it under-specified rather than efficiently concise.
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 is insufficient given the tool has three parameters (one required) and is a destructive operation; it provides no context about return values, errors, or workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not mention any parameters, and the schema coverage is only 33%, leaving two parameters (dpop_token, category_id) undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Delete' and the specific resource 'custom category', but does not differentiate this from sibling tools like delete_classification or delete_coupon.
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?
No guidance on when to use this tool versus alternatives, such as other delete tools, nor any prerequisites or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_delete_operator_credentialAInspect
Remove a single operator secret field.
Deletes one key from the operator's encrypted credential blob without
touching the others — the field-level counterpart to
forget_credentials, which wipes the whole row. Use it to retire a
leftover after an SDK cutover (a Prefect key after Modal, or a stored
but untemplated orphan like anthropic_api_key) without taking the
operator down for a full re-delivery.
Stored-but-untemplated fields are first-class: the delete is keyed on
what is vaulted, not on what the current template declares. Idempotent
— already-absent fields report removed: false without rewriting
the vault. RESTRICTED to the operator — requires proof (nsec-signed
kind-27235 or a cached dpop_token phrase); patron proofs are rejected.
A deletion is as destructive as a write.
| Name | Required | Description | Default |
|---|---|---|---|
| field | Yes | The operator credential field to remove (templated or not). | |
| dpop_token | Yes | Operator proof for this tool. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so thoroughly. It discloses that deletion is keyed on vaulted fields rather than template-declared fields, that it is idempotent with `removed: false` on already-absent fields, that it does not rewrite the vault in that case, that operator proof is required, and that deletion is as destructive as a write.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place: action, counterpoint, use case, idempotency, auth, and destructiveness. It front-loads the core behavior and then layers in selection guidance and caveats without repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, auth-gated, idempotent mutation tool with no annotations, the description covers everything needed to call it correctly: what it deletes, how field keying works, when to use it, proof requirements, idempotent behavior, and destructive nature. The output schema can handle return-value details, so nothing critical 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?
Although schema coverage is 100%, the description adds meaningful context to both parameters. It clarifies that `field` may be templated or not and is matched against what is vaulted rather than the current template, and it explains what counts as a valid `dpop_token` proof (nsec-signed kind-27235 or cached dpop_token phrase), including that patron proofs fail.
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: 'Remove a single operator secret field' and immediately explains it deletes one key from the operator's encrypted credential blob without touching others. It explicitly contrasts itself with the sibling `forget_credentials` (whole-row wipe), so an agent can distinguish the tools without opening either 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?
The description gives concrete when-to-use guidance: retire a leftover after an SDK cutover, with named examples (Prefect key after Modal, `anthropic_api_key` orphan). It also states when it is not appropriate — patron proofs are rejected — and positions it as the field-level alternative to `forget_credentials`.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_delete_patron_credentialAInspect
Remove a single patron credential field.
Deletes one field from stored credentials without affecting other fields. Free. Proof of npub ownership is required — this is a write to the patron's sensitive credential vault.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | Yes | The patron's Nostr public key (npub1...). | |
| field | Yes | The credential field name to remove. | |
| dpop_token | Yes | Raw JSON of a kind-27235 Nostr event signed by npub — not base64, not NIP-98 'Authorization: Nostr <b64>' framing. Its `u` tag must hold THIS tool's exact name (from tools/list), not the endpoint URL; content:"", created_at within 60s of now, and a random `nonce` tag recommended. Or a cached dpop_token phrase. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses that proof of npub ownership is required, that this is a sensitive write to the credential vault, and that it is free. These are meaningful behavioral traits beyond the plain 'delete' semantics. It does not cover idempotency or behavior when the field is missing, but the provided context is strong.
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, front-loaded with the primary action, and each sentence conveys information: targeted deletion, non-destructive scope, cost, and auth requirement. The first two sentences are mildly redundant ('Remove' and 'Deletes'), 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?
For a 3-parameter tool with an output schema, the description covers the essential operational context: what is deleted, what is preserved, the proof requirement, the sensitive-write nature, and the cost. It does not explain when to prefer sibling credential tools, but the description is otherwise complete enough for safe 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 input schema fully documents each parameter. The description does not add parameter-level details beyond what the schema provides, which is acceptable under the baseline. It only loosely reinforces the 'field' parameter via 'one field.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Remove a single patron credential field' and 'Deletes one field from stored credentials.' It clearly distinguishes from sibling tools like taxsort_delete_operator_credential by specifying 'patron' and from update-style tools by specifying deletion.
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 implies when to use the tool: when deleting exactly one patron credential field while preserving others. It does not explicitly mention alternatives or when not to use it, such as using taxsort_forget_credentials for bulk removal or taxsort_update_patron_credential for edits. Usage context is present but left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_delete_ruleBInspect
Delete a classification rule by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| rule_id | Yes | ||
| dpop_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It does not disclose whether deletion is permanent, cascading, or requires authorization. For a deletion tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, efficient, with no wasted words. Front-loaded with the action and resource.
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 deletion operation with billing tokens (npub, dpop_token) and an output schema, the description is too minimal. It lacks context on success/failure, token usage, and any side effects.
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?
Of 3 parameters (npub, rule_id, dpop_token), only rule_id is implied by 'by ID'. npub and dpop_token are not explained. With only 33% schema coverage, the description should compensate but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'delete' and resource 'classification rule' with the method 'by ID'. It distinguishes from sibling tools like save_rule and get_rules.
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?
No guidance on when to use this tool vs alternatives (e.g., there is taxsort_save_rule for creating/updating). No mention of prerequisites like the rule existing or idempotency.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_forget_couponAInspect
Remove a coupon from this patron's redemption list.
Cosmetic only — the coupon itself still exists at the operator,
and the patron can re-redeem the same code later while the
window allows. Free — requires proof of npub.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | Yes | ||
| coupon_id | Yes | ||
| dpop_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the operation is cosmetic (non-destructive) and that the patron can re-redeem. However, it does not detail auth requirements beyond 'npub proof' or mention any side effects like rate limits or response format. Without annotations, the description carries full burden and is mostly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each serving a distinct purpose: action, behavioral caveat, and cost/requirement. Front-loaded with the verb, minimal waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the action and behavioral nuance but omits parameter guidance and does not reference the output schema. While the output schema exists, the description should help the agent understand inputs, which it does not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain what npub, coupon_id, or dpop_token mean. It mentions 'npub' in context but adds no semantic value for parameters, leaving the agent without guidance on how to fill them.
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 action: 'Remove a coupon from this patron's redemption list.' This distinguishes it from siblings like taxsort_delete_coupon (permanent deletion) and taxsort_redeem_coupon (adding a coupon).
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 it is 'cosmetic only' and that the coupon still exists and can be re-redeemed, guiding when to use this tool versus permanent deletion. Also mentions 'Free — requires proof of npub,' providing cost and prerequisite context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_forget_credentialsAInspect
Delete vaulted credentials for a specific service and npub.
For operator credentials, pass the operator's own npub. For patron credentials, pass the patron's npub. Always requires proof of npub ownership — a deletion is as destructive as a write.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | Yes | The Nostr public key (npub1...) whose credentials to forget. | |
| service | Yes | The credential service to forget. | |
| dpop_token | Yes | Raw JSON of a kind-27235 Nostr event signed by npub — not base64, not NIP-98 'Authorization: Nostr <b64>' framing. Its `u` tag must hold THIS tool's exact name (from tools/list), not the endpoint URL; content:"", created_at within 60s of now, and a random `nonce` tag recommended. Or a cached dpop_token phrase. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral traits. It clearly warns that deletion is destructive and that proof of npub ownership is always required. It could go further on irreversibility or side effects, but the destructive/auth context is significantly better than a bare 'delete' statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the primary action. Each sentence earns its place: the purpose, the npub selection rule, and the critical destructive-auth warning. No fluff or redundant schema 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?
The description covers the essential destructive nature and authentication requirement, and an output schema exists so return-value documentation is not needed. However, the presence of sibling tools like taxsort_delete_operator_credential and taxsort_delete_patron_credential creates real ambiguity about which endpoint to call, and the description does not resolve it.
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 has 100% coverage with detailed descriptions, so the baseline is 3. The description adds value by clarifying the operator-versus-patron meaning of the npub parameter and reinforcing the dpop_token proof requirement. This goes beyond simply restating 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 states a clear action ('Delete vaulted credentials') with a specific resource scope ('for a specific service and npub'). It is not a tautology and conveys the tool's core operation, but it does not distinguish it from closely named siblings like taxsort_delete_operator_credential and taxsort_delete_patron_credential.
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 provides useful context about when to pass an operator's npub versus a patron's npub and stresses that proof of ownership is required. However, it does not explain when this tool should be chosen over the similarly-purposed sibling delete/forget tools, leaving the selection decision somewhat ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_get_accountsAInspect
List all accounts in this session with their types and transaction counts.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| dpop_token | No | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral transparency. It indicates a read operation ('list') and scoping ('in this session'), but does not disclose potential side effects, authorization needs, or pagination behavior. Adequate for a simple list tool.
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 a single, concise sentence that directly conveys the tool's purpose. No extraneous information. Perfectly 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?
The description is complete for the tool's simplicity. It specifies the output scope (accounts with types and transaction counts) and the presence of an output schema covers return value details. No gaps given the tool's straightforward nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only npub has a description). The tool description adds no additional meaning to the parameters beyond what the schema provides. For instance, 'session_id' is required but its role is not explained. The description fails to compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (list), resource (accounts), and scope (in this session with types and transaction counts). It effectively distinguishes from sibling tools like taxsort_get_transactions (lists transactions) or taxsort_get_summary (aggregated data).
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 implies when to use (when account-level information is needed) but provides no explicit guidance on when not to use or comparisons with alternatives. The context is clear but lacks exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_get_amount_neighborsAInspect
Fetch transactions with the same amount within ±days of a date. Used by the classifier to detect duplicates from overlapping CSV imports.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | ||
| days | No | ||
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| amount | Yes | ||
| dpop_token | No | ||
| exclude_id | No | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must bear the full load. It states the core behavior (fetching neighbors) but omits details on auth requirements, rate limits, or state changes. The npub parameter's billing mention adds some transparency, but overall it lacks depth.
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, no extraneous words. The first sentence states the action, the second provides context. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description is too brief for a tool with 7 parameters. It doesn't clarify the return format, pagination, or how exclude_id works. The duplicate detection use case adds value, but the description is not complete enough for an agent to use confidently.
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 description adds meaning to amount, date, and days by explaining the neighbor logic, but with only 14% schema description coverage, it fails to explain the other four parameters (exclude_id, dpop_token, session_id, npub's role beyond billing). This is insufficient.
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 fetches transactions with the same amount within ±days of a date. It also gives a specific use case: duplicate detection from CSV imports, which distinguishes it from sibling tools like get_transactions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions the tool is used by the classifier for duplicate detection. This provides context for when to use it, though it does not explicitly state when not to use it or name alternatives. Still, the guidance is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_get_anthropic_keyCInspect
Get the Anthropic API key for FE-driven classification.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| dpop_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description should disclose behavioral traits. It only states the tool gets a key, with no mention of whether it is read-only, authentication needs, rate limits, or consequences. This is insufficient for safe agent usage.
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 a single sentence, making it concise. However, it is overly short for a tool with security implications and two parameters, lacking necessary context. It is adequately structured but insufficiently informative.
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 has an output schema and no annotations, the description should provide context about why to get the key and what the response contains. It fails to do so, leaving critical gaps for an agent to use it 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 50% (npub described, dpop_token not). The description does not add meaning beyond the schema; it fails to clarify dpop_token's purpose and contradicts the npub description's 'Required' label. The description should compensate but does not.
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 gets the Anthropic API key for FE-driven classification, distinguishing it from similar tools like taxsort_get_github_token. However, it does not explicitly differentiate from other get_* tools, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description does not mention prerequisites, when not to use, or how to integrate with other tools. The npub parameter is described as 'required' in the schema description but is not marked as required in the schema, creating confusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_get_api_usage_statsCInspect
Get aggregated API usage statistics for cost analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| dpop_token | No | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits but only states it's a read operation. Missing details on authentication needs, rate limits, data freshness, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short (8 words), which is concise but sacrifices completeness. It lacks structure and additional context that would aid an AI agent.
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 lack of annotations and minimal description, the tool is incomplete. An output schema exists but does not compensate for missing behavioral and usage context.
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 33% (only npub described). The tool description adds no extra meaning for the parameters dpop_token and session_id, failing to compensate for the schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'aggregated API usage statistics' with a purpose 'for cost analysis', which distinguishes it from other 'get' tools like get_accounts or get_transactions.
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?
No guidance on when to use this tool versus alternatives such as get_transactions or get_summary. The description lacks exclusions or context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_get_custom_categoriesBInspect
Get custom categories defined by this user.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| dpop_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It only states the basic action without disclosing traits like read-only nature, authentication requirements (npub is documented as required but not in description), rate limits, or whether pagination is needed. Minimal behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise at one short sentence, which is efficient for a simple retrieval. However, it could benefit from slightly more structure (e.g., listing output or parameters) without sacrificing conciseness.
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 getter with an output schema, the description is minimally adequate but lacks context around parameter usage, output format, and error conditions. Given the sibling tool set and no annotations, more completeness would help agent decision-making.
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 description adds no parameter-level detail beyond the schema. Schema coverage is 50% (only npub has a description), and dpop_token lacks any documentation. The description does not compensate for this gap, leaving the dpop_token purpose unclear.
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 action ('Get') and the resource ('custom categories') scoped to 'this user'. It effectively distinguishes this retrieval tool from sibling tools like taxsort_save_custom_category and taxsort_delete_custom_category.
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?
No guidance on when to use this tool versus alternatives (e.g., when to list vs. get specific categories). No context about prerequisites, such as needing a valid npub or session, or expected behavior when no categories exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_get_github_tokenCInspect
Get the GitHub token for creating issues in the taxsort-mcp repo.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| dpop_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, description only states a read operation. Does not disclose behavior like rate limits, authentication requirements, or side effects. Minimal transparency.
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?
Single sentence, front-loaded and to the point. Could add more detail without becoming verbose.
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 two parameters and an output schema (not shown), the description lacks context on how the token is returned, the role of npub and dpop_token, and any required sequence. Incomplete for reliable agent use.
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?
Description does not explain the parameters; schema covers npub with description but dpop_token has none (50% coverage). Tool description adds no semantic value beyond 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?
Clearly states verb 'Get', resource 'GitHub token', and purpose 'for creating issues in the taxsort-mcp repo'. Distinguishes from sibling tools like taxsort_get_anthropic_key.
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?
No guidance on when to use this tool vs alternatives like taxsort_get_anthropic_key. No prerequisites or when-not-to-use mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_get_import_statsCInspect
Get import statistics for a session.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| dpop_token | No | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; the description does not disclose behavioral traits such as safety, destructiveness, authentication needs, or rate limits, nor does it explain what 'statistics' entails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence clearly states the purpose. Efficient and front-loaded, though slightly too sparse for a tool with multiple parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description fails to explain what the statistics contain, the relationship to sessions, or any required preprocessing (e.g., session must exist). Inadequate for full agent comprehension.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (npub has description), but dpop_token and session_id lack descriptions. The tool description adds no additional meaning beyond the schema for any parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('import statistics') and clarifies scope ('for a session'), clearly distinguishing it from siblings like get_transactions or import_csv.
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?
No guidance on when to use this tool versus alternatives (e.g., import_csv, get_transactions), nor any prerequisites or context about when a session is active.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_get_nostr_profileAInspect
Read an npub's public Nostr profile (NIP-01 kind-0 metadata).
Free, no proof — the data is already public on relays. Returns the latest metadata fields (name, display_name, about, picture, banner, nip05, website, lud16) or an empty profile if none is published.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description fully reveals behavior: returns specific metadata fields or an empty profile if none exists. Since no annotations exist, this description carries the full burden and does so thoroughly.
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 wasted words: first sentence defines the core action, second adds cost, authentication, and return details. Front-loaded and 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?
Given the tool's simplicity (one optional param, no required fields, output schema exists), the description covers everything needed: the data source, public nature, return fields, and fallback behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single optional parameter and no schema description coverage, the description does not elaborate on the npub parameter beyond the tool name. However, the context makes it obvious; 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 clearly states 'Read an npub's public Nostr profile (NIP-01 kind-0 metadata)', specifying the exact resource and action. It distinguishes from sibling tools like taxsort_publish_nostr_profile.
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 provides clear usage context: 'Free, no proof — the data is already public on relays.' This tells the agent no authentication is needed and it's safe to use, though it does not explicitly exclude other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_get_notarization_proofAInspect
Generate a Merkle inclusion proof that a patron's balance was included in a Bitcoin-notarized snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | Yes | The patron's Nostr public key (npub1...). | |
| notarization_id | Yes | The notarization record ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It conveys the core non-mutating behavior (generating a proof from a stored notarization) and the semantic meaning of the proof, but it does not disclose failure modes, such as behavior for an unknown notarization_id or a patron not included in the snapshot, nor any authorization requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single 19-word sentence with the verb and resource front-loaded. Every word carries meaning, and there is no filler, repetition, or boilerplate — an example of genuine economy.
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 2-parameter tool with 100% schema coverage and an output schema present, the description is largely sufficient for correct invocation. The main gaps are unstated edge-case semantics and the absent usage relationship to the npub_proof siblings, which keeps it just short of fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline of 3 applies; the schema already documents npub (Nostr public key, npub1... format) and notarization_id. The description adds only modest connective meaning by mapping 'patron's balance' to npub and the snapshot to notarization_id, with no additional parameter-level detail 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?
States a specific verb ('Generate') and a specific, technically precise resource ('Merkle inclusion proof' of a patron's balance in a 'Bitcoin-notarized snapshot'). The terminology distinguishes it from overlapping siblings such as taxsort_request_npub_proof and taxsort_receive_npub_proof, which suggest different stages of the proof lifecycle, and from taxsort_check_proof_status, which implies status checking rather than generation.
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?
No explicit when-to-use or when-not-to-use guidance is given, and no alternative tools are named. The usage context is implied by the specific wording — call this when you need cryptographic proof of balance inclusion in a notarized snapshot — but an agent must infer exclusions and edge cases on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_get_operator_onboarding_statusAInspect
Report this operator's configuration readiness.
Shows which operator settings are configured, which are missing, and how to deliver each missing value. For patron-level credential status, use get_patron_onboarding_status instead. Free.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Although no annotations are provided, the description implies a read-only operation (reporting readiness) with no side effects. It adds the note 'Free', possibly indicating no cost, but does not detail other behavioral aspects like rate limits or data source.
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 extremely concise at three short sentences. It front-loads the purpose, then enumeration, then alternative usage. Every sentence adds value with no 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?
Given no parameters and an output schema present, the description adequately covers the tool's functionality. It specifies what the output indicates (settings configured/missing and delivery instructions) but could be slightly more explicit about the scope of 'operator settings'.
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, so per the guidelines the baseline is 4. The description does not need to add parameter details since there are none.
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's purpose: 'Report this operator's configuration readiness.' It specifies what it shows (configured, missing, how to deliver missing values) and explicitly distinguishes from the sibling tool 'get_patron_onboarding_status'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when to use an alternative tool ('For patron-level credential status, use get_patron_onboarding_status instead'), providing clear guidance on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_get_patron_credential_fieldsAInspect
List stored patron credential field names (not values).
Returns the names of fields stored for a patron, plus each
field's delivered_at ISO-8601 timestamp when known (null
for secrets vaulted before timestamps were recorded). Values
are never exposed — use this to verify which fields are
configured and how old each one is. Free. Proof of npub
ownership is required: the list of configured fields is itself
sensitive (reveals which integrations a patron has set up).
| Name | Required | Description | Default |
|---|---|---|---|
| npub | Yes | The patron's Nostr public key (npub1...). | |
| dpop_token | Yes | Raw JSON of a kind-27235 Nostr event signed by npub — not base64, not NIP-98 'Authorization: Nostr <b64>' framing. Its `u` tag must hold THIS tool's exact name (from tools/list), not the endpoint URL; content:"", created_at within 60s of now, and a random `nonce` tag recommended. Or a cached dpop_token phrase. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it is thorough: it discloses that values are never exposed, that older vaulted secrets yield null timestamps, that the field list is sensitive, and that the operation is free. This goes well beyond the schema in telling the agent what the call will and will not do.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: purpose comes first, followed by return details, caveats, use case, and prerequisites. Every sentence contributes useful information, with no redundant restatement of tool name 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 100% schema coverage, an output schema, and a read-only listing behavior, the description covers everything an agent needs to call this tool correctly: required proof, expected return fields, timestamp semantics, and sensitivity. Nothing critical 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 baseline is 3. The description adds context around the tool's output and sensitivity rather than new parameter semantics; the npub and dpop_token fields are already fully documented in the input 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 opening line 'List stored patron credential field names (not values)' gives a specific verb, resource, and scope, and immediately distinguishes this from value-returning or credential-mutating siblings. The follow-up clarifies it returns names and timestamps, not secrets, making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states a clear intended use: 'use this to verify which fields are configured and how old each one is.' It also tells the agent not to expect values ('Values are never exposed') and notes that ownership proof is required. It does not explicitly name alternative tools for value retrieval, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_get_patron_onboarding_statusAInspect
Report a patron's credential readiness for this operator.
For set-once services (eXcalibur, TheBrain), shows which patron secrets are configured and which are missing. For dynamic/OAuth2 services (Schwab), reports that no patron credentials are needed. Free. Proof of npub ownership is required because credential presence is sensitive information about the patron's setup.
| Name | Required | Description | Default |
|---|---|---|---|
| dpop_token | Yes | A kind-27235 Nostr event signed by patron_npub for this tool. | |
| patron_npub | Yes | The patron's Nostr public key (npub1...). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the proof-of-ownership requirement, explains why credential presence is sensitive, states that the tool is free, and describes behavior across service types. It does not explicitly say the operation is read-only, but the verb 'Report' and the sensitivity framing strongly imply a non-mutating read.
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 three short paragraphs, each with a distinct job: stating the purpose, describing service-type behavior, and explaining cost/auth rationale. Every sentence adds value 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?
With an output schema present and only two parameters fully covered by the schema, the description supplies everything needed to invoke this tool correctly: behavior, authorization requirements, sensitivity rationale, cost, and service-type distinctions. Nothing critical is missing for an agent to select and use it.
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 schema already documents both parameters and the baseline is 3. The description adds meaning beyond the schema by explaining why dpop_token is required ('Proof of npub ownership is required') and by connecting it to the sensitivity of credential presence, which helps an agent understand the parameter's purpose rather than just its type.
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 first sentence uses a specific verb ('Report') with a clear resource ('patron's credential readiness') and scope ('for this operator'). The rest of the description spells out exactly what is shown for set-once services versus dynamic/OAuth2 services, which clearly distinguishes it from sibling tools like get_operator_onboarding_status and get_patron_credential_fields.
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 provides clear context: use this tool to check whether patron secrets are configured for set-once services and to confirm no credentials are needed for dynamic services. It also states conditions such as proof of npub ownership and that the tool is free, but it does not explicitly name alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_get_pricing_modelAInspect
Get the active pricing model for this operator. Free.
If no model exists, self-initializes a scaffold with all registered tools at 0 sats. No economic data from code.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description discloses a side effect (self-initializes a scaffold if no model exists) and clarifies no economic data comes from code. However, it does not state authentication requirements, idempotency, or potential constraints on usage.
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 concise sentences, front-loaded with the core purpose. No extraneous 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 zero-parameter tool with an output schema, the description covers the core functionality and side effect. Could mention that the output is a pricing model object if not evident from schema, but overall adequate.
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?
There are no parameters, so baseline is 4. The description adds relevant context beyond the empty schema (e.g., self-initialization behavior).
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 action ('Get') and the resource ('active pricing model for this operator'). It distinguishes from sibling tools like 'set' and 'reset'. Additional context about initialization adds clarity.
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?
No guidance on when to use this tool versus alternatives (e.g., when to get vs set or reset). No exclusions or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_get_rulesCInspect
Get all classification rules for the current patron.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| dpop_token | No | ||
| session_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. 'Get' implies a read operation, but the description does not clarify any behavioral traits such as read-only status, side effects, authentication requirements, or what happens if no rules exist. The agent is left to assume safe behavior without confirmation.
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 a single, front-loaded sentence with no unnecessary words. Every word is essential: verb, resource, scope. It is perfectly concise for a simple retrieval 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?
Although an output schema exists (so return format is covered), the description lacks essential context: what constitutes a 'classification rule', how the 'current patron' is identified, and how this tool relates to other rule-related tools. Given the tool complexity and sibling count, the description is incomplete for safe agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only npub has a description). The tool description adds no meaning to any of the three parameters—it does not explain npub, dpop_token, or session_id or how they affect results. An agent must rely solely on the schema, which has sparse descriptions and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and clearly identifies the resource ('all classification rules') with a scope ('for the current patron'). It distinguishes this tool from siblings like taxsort_save_rule, taxsort_delete_rule, and taxsort_apply_rules, which involve modifying or applying rules instead of just retrieving them.
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 provides no guidance on when to use this tool versus alternatives. Given 79 sibling tools, many of which also operate on rules (e.g., taxsort_count_rule_matches, taxsort_get_custom_categories), an agent would not know when retrieval is appropriate or what prerequisites exist. No when-not-to-use or alternative tool mentions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_get_sessionCInspect
Get session details and summary stats.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| dpop_token | No | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits like side effects, authentication requirements, or rate limits. The word 'get' implies a read operation, but this is not explicitly stated.
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 very concise (one sentence), but it lacks front-loading of critical information and could be better structured to include usage context or parameter hints.
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 existence of an output schema helps document return values, but given the number of sibling tools and absence of usage guidelines, the description is not sufficiently complete for an agent to decide when to invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has three parameters, but only 'npub' has a description in the schema. The description adds no additional meaning to any parameter, and with only 33% schema coverage, the description fails to compensate for the lack of 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 states the tool gets session details and summary stats, clearly indicating the verb and resource. However, it does not differentiate from siblings like taxsort_get_summary or taxsort_session_status, which could also retrieve session-related information.
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 provides no guidance on when to use this tool versus alternatives such as taxsort_list_sessions or taxsort_session_heartbeat. There is no mention of context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_get_summaryCInspect
Get a grouped spending summary for tax reporting.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| month | No | ||
| scope | No | tax | |
| group_by | No | taxline | |
| dpop_token | No | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavioral traits, but it only states the basic purpose. It does not mention whether the tool is read-only, any side effects, authentication requirements beyond the required session_id, or potential rate limits.
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 very concise (8 words) but lacks structure and essential details. While brevity is valued, it sacrifices clarity and completeness.
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 6 parameters with minimal schema coverage, no annotations, and an output schema, the description is incomplete. It fails to explain what the summary contains, how grouping works, or the intended use for tax reporting, leaving the user uninformed.
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 very low (17%, only npub described). The tool description adds no parameter information, leaving five parameters (month, scope, group_by, dpop_token, session_id) unexplained. This severely hinders correct invocation.
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 retrieves a grouped spending summary for tax reporting, which is distinct from raw transaction retrieval. However, it lacks specificity about what grouping means and how it differs from similar 'get' tools like taxsort_get_transactions.
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?
No guidance is provided on when to use this tool over siblings. The description does not mention any prerequisites, context, or alternative tools for different use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_get_transactionsBInspect
Get transactions for a session with optional filters.
Returns raw transactions LEFT JOINed with their classifications. Use unclassified_only=true to fetch pages of transactions needing classification by the FE. Use date_from/date_to for date range queries.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| limit | No | ||
| month | No | ||
| offset | No | ||
| search | No | ||
| account | No | ||
| date_to | No | ||
| category | No | ||
| date_from | No | ||
| dpop_token | No | ||
| session_id | Yes | ||
| subcategory | No | ||
| unclassified_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral details. It mentions a LEFT JOIN with classifications but omits rate limits, auth requirements, or any side effects. For a read operation, it is minimally transparent but insufficient for a tool with 13 parameters.
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 three sentences, front-loaded with purpose, and every sentence adds value. No redundant or filler 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?
Despite having an output schema, the description fails to cover most of the 13 parameters or provide usage context for common filters. The presence of a sibling tool for paged transactions suggests additional guidance is needed, which 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 only 8% (only npub has a schema description). The description adds meaning to session_id, unclassified_only, date_from, and date_to, covering only 4 of 13 parameters. Many parameters like limit, offset, search, category are left undocumented, inadequately compensating for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get transactions for a session with optional filters', which provides a specific verb and resource. However, it does not differentiate from the sibling tool 'taxsort_get_transactions_paged' which presumably handles pagination differently.
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 advises when to use unclassified_only and date_from/date_to, but lacks guidance on when not to use this tool or when to prefer alternatives like taxsort_get_transactions_paged. No explicit exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_get_transactions_pagedBInspect
Server-side filtered, grouped, sorted, paginated transactions.
group_sort controls the order of groups (A-Z vs Z-A). sort_col + sort_dir control row order within each group. When group_by='none', only sort_col + sort_dir apply.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| page | No | ||
| month | No | ||
| search | No | ||
| account | No | ||
| category | No | ||
| group_by | No | none | |
| sort_col | No | date | |
| sort_dir | No | asc | |
| page_size | No | ||
| dpop_token | No | ||
| group_sort | No | asc | |
| session_id | Yes | ||
| subcategory | No | ||
| classified_only | No | ||
| unclassified_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose all behavioral traits. It explains the internal sorting/grouping logic (group_sort, sort_col, sort_dir, group_by interaction) which is valuable. However, it omits details about pagination behavior, rate limits, side effects, or the fact that npub is used for credit billing (only in schema's parameter description for npub). The description adds moderate transparency beyond the schema but is not comprehensive.
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 very concise with only 3 sentences. The first sentence provides a high-level summary, followed by specific details on sorting/grouping. No unnecessary words; each sentence adds value. It is well 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?
Given the tool's complexity (16 parameters, output schema exists), the description is incomplete. It fails to explain pagination mechanics, filtering parameters, billing (npub), and many other options. While the output schema may cover return structure, the description should at least cross-reference key parameters. A user would struggle to use this tool correctly without additional documentation.
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 description coverage is only 6% (only npub has a description). The description adds meaning for only 3 parameters (group_sort, sort_col, sort_dir) out of 16, neglecting many important ones like page, page_size, search, filters, etc. Given the low schema coverage, the description should have explained more parameters to aid correct usage.
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 'Server-side filtered, grouped, sorted, paginated transactions', which defines the core purpose. However, it does not distinguish this tool from the sibling 'taxsort_get_transactions', which likely provides simpler transaction retrieval. The explanation of sorting/grouping behavior adds clarity but misses a direct contrast.
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?
No explicit guidelines on when to use this tool versus alternatives like 'taxsort_get_transactions'. The description assumes the user knows when pagination or grouping is needed, providing no situational context or prerequisites beyond the required session_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_import_csvBInspect
Import a CSV file into a session. Content is the raw CSV text. Optional account_name overrides the filename-derived account.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| content | Yes | ||
| filename | Yes | ||
| dpop_token | No | ||
| session_id | Yes | ||
| account_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It describes input format but fails to disclose side effects (e.g., appending vs replacing data), required permissions, error handling, or billing implications (e.g., npub parameter).
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, using one sentence plus a brief note. It is appropriately front-loaded with the main purpose. Could be slightly more structured but 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?
Given 6 parameters (3 required) and no annotations, the description is incomplete. It does not explain the overall workflow (e.g., need a session, what happens with the imported data) or return value (though output schema exists).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17% (npub only). The description adds meaning to 'content' (raw CSV text) and 'account_name' (overrides filename-derived account) but leaves other parameters like session_id and dpop_token unexplained. It partially compensates for low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Import a CSV file') and the target ('into a session'). It is specific and distinguishes from other tools like taxsort_create_session or taxsort_get_transactions.
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 provides minimal guidance on when to use this tool. It mentions optional account_name override but does not specify prerequisites (e.g., session must exist) or alternatives. No explicit when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_list_canonical_identitiesAInspect
Return canonical (tool_id, mcp_name, …) for every tool the wheel exposes.
The authoritative source for any client (Studio, agents, FE) that needs to know how this MCP identifies its tools. Reconcile uses this output to UUID-join against the stored pricing model — no name-based UUID derivation, no guessing.
Includes both ToolIdentity-seeded tools and any UUID recorded by
@paid_tool that is missing from the registry. The latter appear
with registered: false (and in the top-level unregistered
array) so Reconcile can flag deploy drift instead of silently
reporting clean when a live tool was never seeded (#174).
If the operator renames a function or rebrands a slug, the mcp_name in this output changes but tool_id stays. That's the whole point of the canonical-UUID design.
Also diffs the live FastMCP wire surface against the registry.
Tools exposed on the wire but absent from the registry appear in
unregistered so Reconcile can flag deploy drift instead of
silently under-reporting (issue #175).
Free, no side effects.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description thoroughly discloses behavior: it's free with no side effects, includes ToolIdentity-seeded tools plus @paid_tool UUIDs missing from registry (flagged registered:false), exposes unregistered tools in a top-level array for drift detection, and explains the canonical-UUID design including rename/rebrand behavior. This richly compensates for the absence of 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 well-structured with clear paragraphs delineating the output, the authoritative-source rationale, drift detection, and the canonical-UUID design point. It's slightly verbose—the rename/rebrand paragraph and repeated drift-detection theme—but every section earns its place given the complexity of the tool's guarantees.
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 zero-parameter introspection tool with an output schema, the description is thorough: it explains the full output semantics, the drift-detection purpose with issue references, the authoritative-source positioning, and side-effect safety. It completely covers what an agent needs to know to select and interpret this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters and 100% schema coverage, so the schema leaves nothing undocumented. The description goes beyond schema by explaining the output shape (registered:false flag, unregistered array) and the design semantics around tool_id stability versus mcp_name changes, which is meaningful behavioral context for a parameterless 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 clearly states the tool returns canonical tool identities (tool_id, mcp_name, etc.) for every tool the wheel exposes. It explicitly differentiates this from name-based derivation and identifies the authoritative use case for Reconcile. Distinct from all 90+ sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies this is the authoritative source for 'Studio, agents, FE' that need to know how the MCP identifies its tools, and explains it's used by Reconcile for UUID-join against the pricing model. Clear context on when to use, though it doesn't name explicit alternatives/exclusions since this is a unique system-level tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_list_constraint_typesAInspect
List all available constraint types and their parameter schemas.
Returns the type, category, description, and parameter specs for every constraint that can be used in a pricing pipeline. Free — no credits required.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes the return fields and cost, which is sufficient for a simple read-only listing. No contradictions.
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 with three sentences, each adding value: purpose, return fields, and cost. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and the existence of an output schema, the description is mostly complete. It explains what is returned and that it is free. Slightly more context on potential limitations could elevate it.
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 has zero parameters, so baseline 4 applies. The description does not need to add parameter information as none exist.
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 lists all available constraint types and their parameter schemas, specifying the verb 'list' and the resource. It distinguishes itself from sibling tools which focus on other operations.
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 provides context such as 'Free — no credits required' and what is returned, but does not explicitly state when to use this tool versus alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_list_couponsAInspect
List every coupon this operator has minted (newest first).
Each row carries the current times_redeemed counter — the
Studio renders a progress bar from this against total_uses.
RESTRICTED to operator — requires proof.
| Name | Required | Description | Default |
|---|---|---|---|
| dpop_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes the output includes times_redeemed and total_uses, and mentions the sorting order. No annotations exist, so the description adequately conveys it is a read-only list with authentication requirements.
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: purpose with ordering, key field detail, and access restriction. No redundant information; each sentence adds necessary value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers core behavior and a specific field, and notes restriction. However, it omits pagination details and does not explain the dpop_token parameter. The presence of an output schema mitigates the need for return value details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, dpop_token, is not explained in the description. With 0% schema description coverage, the agent must infer its purpose (likely for authentication) from context clues like 'requires proof'.
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?
Clearly states the tool lists every coupon minted by the operator, sorted newest first. Differentiates from related tools by specifying operator scope and restriction, but does not explicitly contrast with sibling taxsort_list_my_coupons.
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?
Notes the tool is restricted to operators requiring proof, indicating when to use. However, it does not provide explicit guidance on when not to use or mention alternative tools for non-operator users.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_list_feedback_issuesCInspect
List feedback issues submitted by this patron.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| dpop_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It only states the tool lists feedback issues, with no mention of read-only nature, side effects, pagination, filtering, or output contents. This is insufficient for a safe and correct 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?
The description is a single concise sentence with no unnecessary words. However, its brevity sacrifices clarity and completeness; a slightly longer description could improve utility without losing conciseness.
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 is incomplete given the tool's complexity. It lacks information about output schema, default behavior, filtering, sorting, or authentication context. Despite an output schema existing, the description does not mention return values, leaving the agent uncertain about what to expect.
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 50% (only npub has a description), but the tool description adds no parameter-specific information beyond what the schema already provides. The dpop_token parameter is entirely undocumented in both schema and description, and the purpose of npub beyond 'credit billing' is unclear.
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 action (list) and resource (feedback issues) and specifies the scope (by this patron). It distinguishes the tool from siblings like taxsort_create_feedback_issue, but does not explicitly differentiate from other list tools or clarify identification of 'this patron'.
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?
No guidance on when to use this tool versus alternatives such as taxsort_report_issue or taxsort_create_feedback_issue. The description lacks context about prerequisites, authentication, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_list_my_couponsAInspect
List the coupons this patron has redeemed on this operator.
Returns both active and exhausted redemptions with a per-row
status (active / window_closed / patron_limit /
total_limit). Free — requires proof of npub.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | Yes | ||
| dpop_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the tool returns both active and exhausted redemptions with a status field, and mentions it is free but requires proof of npub. This provides good insight into the tool's behavior without contradictions.
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 three sentences, each serving a clear purpose: stating the function, detailing output, and noting prerequisites. It is concise but could be more structured with bullet points for readability.
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 low complexity of a list tool and the presence of an output schema, the description covers the essential aspects: what it lists, the status field, and the proof requirement. It does not mention pagination or limits, but these are less critical for a simple listing.
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 has 0% description coverage, so the description must compensate. It mentions 'npub' proof, adding context that the npub parameter is a proof identifier. However, it does not explain the dpop_token parameter or the format of npub, leaving gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'list' and identifies the resource as 'coupons this patron has redeemed on this operator', distinguishing it from sibling tools like taxsort_list_coupons which likely lists all coupons. The detail about return statuses adds clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states it lists redeemed coupons for a patron and mentions the requirement of 'npub' proof. It provides context for when to use this tool, but does not explicitly exclude alternatives or compare with siblings like taxsort_list_coupons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_list_notarizationsCInspect
List recent Bitcoin notarization records.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum records to return (default 20). | |
| status | No | Optional filter (e.g., 'submitted', 'confirmed'). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'List' implies a read operation, but the description does not state whether authentication is required, how records are ordered, what 'recent' means in time terms, or whether the records are scoped to the current user. For a tool with zero annotation coverage, this is a thin 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?
A single five-word sentence with zero wasted words, front-loaded with the verb and resource. It is concise, but borders on under-specification: the qualifier 'recent' is vague and the sentence misses the opportunity to note the status filter or ordering behavior that would help an agent.
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 tool is simple, has an output schema (so return values need not be explained), and both parameters are well documented in the schema. However, with no annotations, the description leaves behavioral context (read-only safety, sorting, scope of 'recent') to inference, and it offers no orientation among the several notarization-related siblings.
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 both parameters: limit ('Maximum records to return (default 20)') and status ('Optional filter...'). The description adds no parameter-level information, which is acceptable given the baseline of 3 when the schema does the heavy lifting.
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 ('List'), resource ('Bitcoin notarization records'), and scope ('recent'). It is clearly a read-oriented enumeration tool and the naming matches sibling conventions (list_*). However, it does not explicitly differentiate itself from closely related siblings like taxsort_get_notarization_proof or taxsort_notarize_ledger, though the list-vs-single distinction is reasonably inferable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. With siblings like taxsort_get_notarization_proof, taxsort_check_proof_status, and taxsort_notarize_ledger in the same domain, an agent gets no help choosing between listing records and fetching a specific proof. No exclusions or alternative conditions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_list_sessionsCInspect
List all sessions owned by the current patron.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| dpop_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states the operation is a listing, but does not mention that it is read-only, requires authentication (implied by npub), or whether results are paginated. This is insufficient for an unannotated tool.
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 a single concise sentence with no waste. However, it is too brief and lacks critical details, missing the opportunity to add value beyond the schema. Conciseness should not come at the expense of completeness.
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 existence of an output schema (per context), the description need not explain return values, but it still fails to provide essential context like the fact that npub is required for billing, the role of dpop_token, or any authentication requirements. The description is too short to be considered complete for this tool with multiple parameters and siblings.
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 50% (only npub has a description). The tool description does not add any parameter information beyond the schema; notably, 'dpop_token' remains unexplained. The description also contradicts the schema by calling npub 'Required' when it has a default and no required flag. The description should compensates for the coverage gap but fails.
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 action ('List'), resource ('all sessions'), and scope ('owned by the current patron'). It effectively distinguishes from sibling tools like 'taxsort_get_session' (singular) and 'taxsort_create_session' (creation).
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?
No explicit when-to-use or when-not-to-use guidance is provided. Given many sibling tools related to sessions, the description should indicate that for a specific session one should use 'taxsort_get_session' or when to create sessions. The lack of such guidance leaves the agent without direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_mint_couponCInspect
Create a new operator-owned discount coupon.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The catchy code patrons type to redeem (operator-scoped uniqueness). | |
| dpop_token | No | ||
| total_uses | No | Aggregate cap across all patrons (default None = unlimited). | |
| valid_from | Yes | ISO-8601 datetime when the coupon becomes active. | |
| valid_until | Yes | ISO-8601 datetime when the coupon expires. | |
| uses_per_patron | No | How many tool calls one patron can claim the discount on (default 1; pass null/None for unlimited within the window). | |
| discount_percent | Yes | Percentage off the base price (0-100). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the creation action and omits side effects, operator-authentication requirements (dpop_token is undocumented), duplicate-name conflict behavior despite the 'operator-scoped uniqueness' constraint in the schema, and reversibility. One bare sentence is insufficient for a mutation with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A seven-word sentence with the verb and object front-loaded and zero wasted words; it is genuinely concise. However, given the tool's 7-parameter complexity and absence of annotations, the brevity borders on under-specification rather than efficient completeness.
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 output schema and detailed parameter descriptions cover return values and inputs, but the description does not compensate for missing annotations: it fails to convey behavioral context such as ownership implications, authentication needs, uniqueness enforcement on creation, or error conditions. For a mutation tool of this complexity with no annotations, the definition is not complete enough.
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 86%, so the baseline of 3 applies; the schema already documents name uniqueness, discount percentage range (0-100), datetime formats, and the default/unlimited semantics of total_uses and uses_per_patron. The description adds nothing about parameters, and the undocumented dpop_token remains unexplained by both description and 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 uses a specific verb ('Create') and a precise resource ('operator-owned discount coupon'), and the 'new' qualifier clarifies this is for fresh coupons rather than existing ones. It is clearly distinguishable from siblings like update_coupon, delete_coupon, redeem_coupon, and list_coupons via the verb, though it does not name any alternative explicitly.
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 single declarative sentence provides no when-to-use conditions, no exclusions, and no alternatives. An agent gets no guidance on when to choose this over update_coupon (for edits), forget_coupon (for cleanup), or list_coupons (for inspection); any usage inference must come from the schema and sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_notarize_ledgerAInspect
Build a Merkle tree of all patron balances and submit the root to Bitcoin via OpenTimestamps.
Operator-only background task. Bitcoin confirmation takes 1-6 hours. Free — no credits required.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It adds key behavioral details: Bitcoin confirmation takes 1-6 hours (asynchronous), no cost, and it's an operator background task. No contradictions.
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 concise sentences: purpose, usage context, and timing/cost. No wasted words, front-loaded with the core action.
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 context of timing and cost, and an output schema present (handles return value explanation), the description fully covers what an agent needs to know.
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 has zero parameters, so no additional parameter info is needed. Baseline for 0 parameters is 4.
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's action ('Build a Merkle tree...submit the root to Bitcoin via OpenTimestamps') and resource (patron balances). It distinguishes this tool from sibling tools, which are predominantly account/balance queries or user-facing operations.
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 'Operator-only background task' and 'Free — no credits required', providing clear context on when to use and who can invoke it. However, it does not explicitly compare to alternatives or specify when NOT to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_oracle_aboutCInspect
Describe the DPYC ecosystem via the Oracle. Free.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only mentions 'Free' regarding cost, but fails to disclose whether the tool is read-only, destructive, or any side effects. Given zero parameters, basic behavioral traits are not addressed.
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 extremely short (two phrases) and front-loaded. Every word serves a purpose, but it could be expanded to include more helpful context without losing conciseness.
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 simplicity (no parameters, output schema exists), the description is minimally adequate. It identifies the subject and method, but lacks detail on the nature of the description (e.g., textual overview) and prerequisites. It does not fully leverage the output schema for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With no parameters and 100% schema coverage, the description adds minimal parameter semantics. It provides context ('via the Oracle', 'Free') but does not explain what the returned output represents, even though an output schema exists.
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 'Describe the DPYC ecosystem via the Oracle' clearly states the verb ('describe') and the resource ('DPYC ecosystem'). It distinguishes itself from sibling oracle tools like taxsort_oracle_get_tax_rate, which focus on specific details. The purpose is specific and clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The term 'Free' hints at cost but provides no usage context or when-not-to-use scenarios. With many sibling tools, explicit usage guidelines are missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_oracle_get_tax_rateAInspect
Get the current DPYC certification tax rate. Free.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only states the tool 'gets' a rate and is free, but omits whether it requires authentication, is read-only, has limits, or any side effects. This is insufficient for full transparency.
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 extremely concise—two short phrases—with no redundancy. Every word serves a purpose.
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 has no parameters and an output schema exists (though not visible), the description is minimally adequate. It identifies the output (tax rate) but does not describe the return format or any constraints. Could be slightly more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the input schema is empty. The description adds context ('DPYC certification tax rate' and 'Free') but no parameter-level detail is needed. Baseline for zero parameters is 4.
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 explicitly states it gets the 'current DPYC certification tax rate' and mentions it is 'free.' This clearly identifies the specific resource and action, distinguishing it from sibling tools like taxsort_check_price or taxsort_get_pricing_model.
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 provides no guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or exclusions. The word 'Free' is a feature, not a usage directive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_oracle_how_to_joinCInspect
Get DPYC onboarding instructions from the Oracle. Free.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description provides no behavioral details beyond stating it is 'Free.' With no annotations, the agent has no information about authentication requirements, side effects, or output format. The existence of an output schema is not leveraged.
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 very short with two sentences. The first sentence is front-loaded and conveys the core purpose. The second sentence ('Free.') is unnecessary and could be integrated. Still, it avoids verbosity.
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 that the tool has no parameters and a simple purpose, the description is minimally adequate. However, it does not explain what 'DPYC' refers to or hint at the output structure (despite an output schema existing). For a tool with no required input, more context about the onboarding process would help.
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 no parameters, and schema coverage is trivially 100%. The description adds the specific onboarding purpose ('DPYC') but does not need to elaborate further. 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 clearly states the action ('Get DPYC onboarding instructions') and the specific source ('from the Oracle'). It distinguishes the tool from siblings, as no other tool explicitly covers onboarding instructions. However, the appended 'Free.' is irrelevant and slightly detracts from clarity.
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?
No guidance is provided on when to use this tool versus alternatives. Sibling tools like 'taxsort_get_operator_onboarding_status' and 'taxsort_get_patron_onboarding_status' exist but are not mentioned or differentiated. The description lacks context on prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_oracle_lookup_memberCInspect
Look up a DPYC community member by npub. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behaviors. It only mentions 'Free', implying no cost, but does not clarify if the operation is read-only, what side effects exist, or any rate limits. Essential behavioral context is missing.
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 a single short sentence, which is concise but lacks necessary detail. It is under-specified for a tool with no annotations.
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?
Although an output schema exists, the description fails to mention what a 'member' lookup returns or any context about DPYC community. The word 'Free' is insufficient. The description should provide more complete guidance given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The sole parameter 'npub' is not explained in the description (e.g., what npub stands for, expected format). The description adds no meaning beyond the input 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 action 'look up' and the resource 'DPYC community member', with the specific identifier 'npub'. It is distinct from sibling tools, which cover other operations like tax rates, accounts, etc.
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 provides clear context for use (looking up a member by npub) but offers no guidance on when to use this tool versus alternatives among the many sibling tools, nor does it state any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_oracle_network_advisoryBInspect
Get active network advisories from the Oracle. Free.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It mentions 'Free' but does not state whether the tool is read-only, requires authentication, or any rate limits. For a mutation-free tool, this is insufficient 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 a single sentence with no waste. It is front-loaded and efficient, though arguably too brief for completeness.
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 tool with no parameters and an output schema, the description is minimally adequate. However, it lacks any usage hints or caveats, leaving the agent without sufficient context to choose it properly among siblings.
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, so baseline is 4. The description adds no parameter info because none exist, which is acceptable.
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 action (get), the resource (active network advisories), and the source (Oracle). It is specific and distinguishes from sibling oracle tools such as taxsort_oracle_about and taxsort_oracle_get_tax_rate, making the purpose 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?
No guidance on when to use this tool versus alternatives. With many sibling tools like taxsort_oracle_about and taxsort_oracle_get_tax_rate, the description should indicate the appropriate context, but it does not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_publish_nostr_profileAInspect
Publish a CLIENT-SIGNED kind-0 profile to relays for an npub.
The wheel never holds a patron nsec. The frontend signs the kind-0 metadata event with the patron's session key or a NIP-07 extension and passes the signed event (JSON) here; the wheel verifies the signature matches the npub, then relays it to public relays. The signature is the authorization — no proof token, no key custody. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | The patron's Nostr public key the event must be signed by. | |
| signed_event | No | A JSON-encoded, client-signed kind-0 event. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden and handles it well. It states that the wheel never holds a patron nsec, verifies the signature against the npub, relays to public relays, uses the signature as authorization, and is free. It does not detail failure behavior for mismatched signatures, but the key security and side-effect traits are clearly disclosed.
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 then provides a compact but informative security and workflow explanation. Every sentence contributes meaning, though the point about signature authorization is slightly redundant with the earlier 'never holds a patron nsec' statement, preventing 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?
The tool's complexity is moderate, and the description covers the essential workflow, security model, and side effects. An output schema exists, so return-value details are not required here. A small gap is that the parameters are semantically required but marked with defaults and not formally required, which the description could have clarified, but overall the definition is adequate 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 baseline is 3. The description reinforces the relationship between npub and signed_event by explaining that the wheel verifies the signature matches the npub, but the core meanings of both parameters are already fully covered by the schema's own descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Publish a CLIENT-SIGNED kind-0 profile to relays for an npub.' This clearly distinguishes the tool from siblings like taxsort_get_nostr_profile by focusing on publication rather than retrieval, and it makes the object (kind-0 metadata event) and destination (relays) explicit.
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 use the tool: after the frontend has signed a kind-0 event with a session key or NIP-07 extension, the signed event should be passed here. It does not explicitly name alternatives or state when not to use it, but the workflow described is sufficient for an agent to recognize the intended invocation path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_purchase_creditsAInspect
Buy credits via Bitcoin Lightning.
Creates a Lightning invoice. Pay it with any Lightning wallet, then call check_payment to confirm. Proof of npub ownership is required so credits land in the correct ledger.
Free — no credits required to call.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | Yes | The Nostr public key (npub1...) the credits will fund. | |
| dpop_token | Yes | Raw JSON of a kind-27235 Nostr event signed by npub — not base64, not NIP-98 'Authorization: Nostr <b64>' framing. Its `u` tag must hold THIS tool's exact name (from tools/list), not the endpoint URL; content:"", created_at within 60s of now, and a random `nonce` tag recommended. Or a cached dpop_token phrase. | |
| amount_sats | No | Satoshis to purchase (default 1000). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses that the tool creates an invoice, requires proof of npub ownership, and is free to call. It does not mention invoice expiration or immediate ledger effects, but it explains enough about the flow and side effects for an agent to invoke it safely.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with the main purpose in the first sentence, the execution flow in the next two, and a final cost-relevant detail. Every sentence earns its place, and there is no redundant phrasing.
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 three parameters, full schema coverage, and an output schema, the description provides enough context to call it correctly. It explains the required ownership proof, the payment workflow, and the follow-up confirmation step. Nothing essential is missing for agent selection and 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 parameter burden is already met by the input schema. The description adds only a high-level mention of npub ownership, which maps to the dpop_token parameter. This is sufficient but does not go beyond the schema in meaningful ways.
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: 'Buy credits via Bitcoin Lightning.' It further clarifies the mechanism by saying it creates a Lightning invoice, so an agent immediately knows this is the tool for purchasing credits, not for checking payment status or redeeming coupons.
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 operational guidance: pay with any Lightning wallet, then call check_payment to confirm. It also states the prerequisite of proving npub ownership. It doesn't explicitly discuss alternatives, but the tool is the obvious entry point for buying credits and mentions the follow-up tool, so the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_receive_credentialsAInspect
Pick up credentials from the Secure Courier.
Completes the CREDENTIAL-DELIVERY flow (the ownership-proof
counterpart is receive_npub_proof).
Call this only after the user confirms they have replied.
Deterministic, one-shot retrieval: name the response you want with
(sender_npub, service, dpop_token) and the tool drains ONLY the
rendezvous relay that channel was pinned to. Every popped DM with the
wrong session phrase is deleted and its sender is NACK'd; the first DM
with the matching phrase is accepted (ACK'd) and the scan stops. If
none match, the queue is drained and a courier_not_found result is
returned. Do NOT poll, loop, or retry.
If a credential_card (ncred1...) is provided, it is redeemed directly without any relay access (dpop_token not required for that path). On success, the payment processor client is reinitialized from the new credentials — no server restart needed.
| Name | Required | Description | Default |
|---|---|---|---|
| service | No | Required. The credential service name (must match the service used in request_credential_channel). | |
| dpop_token | No | Required. The session phrase returned by request_credential_channel for this exact channel. | |
| sender_npub | No | Required. The npub that sent the credentials. | |
| credential_card | No | Optional. An ncred1... card to redeem directly (bypasses the relay drain; dpop_token not needed). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the behavioral burden. It discloses deterministic one-shot retrieval, relay draining, deletion and NACK of wrong-phrase DMs, ACK-and-stop on the first match, courier_not_found on no match, and payment-processor reinitialization. This is exceptionally transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but each sentence earns its place: intro, flow context, precondition, deterministic behavior, failure result, and the alternative credential_card path. The structure front-loads the core purpose and then layers crucial operational constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking annotations, the description covers preconditions, side effects, failure modes, the no-poll rule, and the alternative redemption path. An output schema exists, so detailed return-value documentation is not required here. This is a thorough, self-contained definition.
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% and each parameter already has a description. The tool description adds meaningful relational context by grouping (sender_npub, service, dpop_token) as the response identifier and explaining that credential_card bypasses relay access and makes dpop_token unnecessary, which the schema alone does not convey.
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?
Opens with a specific verb and resource ('Pick up credentials from the Secure Courier') and immediately connects to the CREDENTIAL-DELIVERY flow. It names the ownership-proof counterpart receive_npub_proof, so an agent can distinguish this tool from its sibling without ambiguity.
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 the precondition ('Call this only after the user confirms they have replied'), warns against polling/looping/retrying, and names the alternative flow (receive_npub_proof). It also disambiguates the two invocation modes: relay drain vs credential_card redemption.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_receive_npub_proofAInspect
Receive npub ownership confirmation from a patron.
Completes the npub-OWNERSHIP-PROOF flow (the credential-delivery
counterpart is receive_credentials).
Call this only after the user confirms they have replied.
Deterministic, one-shot retrieval: name the response with
(patron_npub, dpop_token) — the dpop_token being the value
returned by request_npub_proof. The tool drains ONLY the pinned
rendezvous relay that challenge was published on, stopping at the DM
whose phrase matches. Mismatched DMs are deleted and NACK'd (without
revealing the expected phrase). If called before the user replies,
their message will never be found. Do NOT poll, loop, or retry.
The signed DM itself proves npub ownership (the patron's nsec
signed it). On success, returns the dpop_token — the same
token. The calling application MUST remember it and pass it as the
dpop_token parameter on every subsequent paid tool call. The
proof (a hash of the token) is stored in the vault keyed by that
hash — the MCP never stores the raw token itself. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| dpop_token | No | Required. The dpop_token returned by request_npub_proof. | |
| patron_npub | No | Required. The patron's npub to receive proof from. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and meets it: it discloses one-shot deterministic retrieval, the narrow scope ('drains ONLY the pinned rendezvous relay'), destructive side effects ('Mismatched DMs are deleted and NACK'd'), failure semantics, the security storage model (proof stored as a hash key; 'the MCP never stores the raw token itself'), and cost ('Free').
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 first, the critical timing constraint bolded and front-loaded, then mechanism, side effects, failure mode, security, and cost. The density of unique information per sentence is high, 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 high-complexity, destructive, one-shot tool with zero annotations, the description covers every context an agent needs: ordering precondition, side effects, failure behavior, return value, token custody responsibility, storage design, and cost. The output schema covers the exact return shape, so nothing material 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; the description adds flow-level meaning beyond the schema's per-parameter notes by explaining the provenance and lifecycle of dpop_token ('the value returned by request_npub_proof', must be remembered and passed 'on every subsequent paid tool call') and how patron_npub and dpop_token combine as the retrieval key. That contextual semantics is not present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The lead sentence 'Receive npub ownership confirmation from a patron' states a specific verb, resource, and actor, and the description immediately situates it in the npub-OWNERSHIP-PROOF flow, naming receive_credentials as the counterpart and request_npub_proof as the upstream step. This clearly distinguishes it from the ~80 sibling tools without needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-call guidance, bolded: 'Call this only after the user confirms they have replied.' It names the flow partners (request_npub_proof produces the dpop_token; receive_credentials is the counterpart), states the failure consequence of premature calls, and explicitly forbids retries: 'Do NOT poll, loop, or retry.' This is the strongest possible usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_redeem_couponAInspect
Claim a coupon by its name (the code the operator shared).
Looks up the operator's coupon by code, validates the window
and total cap, and records a per-patron redemption row.
Subsequent paid tool calls on this MCP auto-apply the discount
until uses_per_patron is exhausted.
Free — no credits required. Requires proof of npub.
Idempotent: redeeming the same code twice returns the existing
redemption.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| npub | Yes | ||
| dpop_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the full burden. It reveals core behaviors: free, requires npub proof, idempotent, records redemption, auto-applies discount. Lacks details on side effects, authorization beyond npub, or error handling. Adequate but not comprehensive.
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 (76 words), logically organized with clear sentences focusing on purpose, process, and constraints. No redundant or gratuitous text.
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?
Output schema exists, so return values need not be explained. The description covers the redemption flow, validation, idempotency, and auto-application. Slight omission of error scenarios or lifecycle details, but sufficient for a straightforward operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must add meaning. It explains the 'code' and 'npub' parameters but does not mention 'dpop_token'. This partially compensates for the missing schema descriptions, but leaves one parameter undocumented.
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 'Claim a coupon by its name' with a specific verb (claim/redeem) and resource (coupon by code). It distinguishes from sibling tools like mint_coupon, delete_coupon, and list_coupons, establishing a unique purpose.
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 explains when to use (to claim a coupon), prerequisites (requires npub proof), and post-effect (auto-apply discount). It mentions idempotency and free usage but does not explicitly list when not to use; however, context from sibling tools provides implicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_report_api_usageCInspect
Report Anthropic API usage from FE classification for cost tracking.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| calls | Yes | ||
| model | No | ||
| dpop_token | No | ||
| session_id | Yes | ||
| input_tokens | Yes | ||
| output_tokens | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description implies a write operation for cost tracking but does not disclose side effects, authentication needs, or idempotency. The mention of 'credit billing' in npub parameter is not in description itself.
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?
Single sentence is concise but lacks substance given the tool's complexity (7 parameters). Could be more informative without being verbose.
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?
Has output schema but not shown. For a tool with 7 parameters and billing implications, the one-line description is insufficient to guide 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 only 14%, and the description adds no parameter explanations. Parameters like calls, input_tokens, output_tokens are left undefined beyond the schema's bare type.
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 clearly states the verb 'Report' and the resource 'Anthropic API usage' for cost tracking. It distinguishes from many siblings, but taxsort_get_api_usage_stats is a similar tool without differentiation.
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?
No guidance on when to use this tool versus alternatives like taxsort_get_api_usage_stats. Lacks prerequisites or contextual conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_report_issueAInspect
File a field report about this service as a GitHub issue on the operator's repo.
Found a tool's metadata or response wrong or confusing? Report it where the tool lives. The author of record is your npub — no npub / no proof, no issue — and it is stamped into the issue so the report is attributed to you, not the operator. Costs a small fee (a free write to an issue tracker would be abused). The report is PUBLIC and goes to the maintainers' normal triage; nothing is verified here.
Returns the filed issue's repo, number, and url. If this operator has not enabled field reports, returns an "issue reporting not configured" situation and you are not charged.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The details — which tool, what was wrong, what you expected. | |
| npub | Yes | Your Nostr public key (npub1...); the report's author of record. | |
| title | Yes | One-line summary of the problem. | |
| tool_name | No | Optional: the specific tool the report is about (e.g. "schwab_get_option_chain"). | |
| dpop_token | Yes | Raw JSON of a kind-27235 Nostr event signed by npub — not base64, not NIP-98 'Authorization: Nostr <b64>' framing. Its `u` tag must hold THIS tool's exact name (from tools/list), not the endpoint URL; content:"", created_at within 60s of now, and a random `nonce` tag recommended. Or a cached dpop_token phrase. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It discloses that the report costs a small fee, is public, is stamped with the caller's npub, goes to normal maintainer triage, is not verified, and charges nothing when field reports are not configured. This is far beyond a minimal mutation warning.
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 action and use case, then adds consequential facts in compact, scannable sentences. Each sentence contributes a distinct piece of information: purpose, trigger, attribution requirement, cost, publicity, success return, and failure mode.
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, public, attribution-sensitive tool with no annotations, the description is remarkably complete: it covers prerequisites, cost, privacy/publicity, verification behavior, the not-configured error case, and the return value. Parameter details and output structure are already supplied by the schema and output 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?
The input schema already covers 100% of the parameters with detailed descriptions, so the description does not need to repeat parameter formats. It adds useful high-level context about the npub being the author of record and the fee, but no parameter-level semantic detail 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 states a specific verb and resource: file a field report as a GitHub issue about this service on the operator's repo. It also frames the exact trigger ('Found a tool's metadata or response wrong or confusing?'), which separates it from general-purpose sibling tools like taxsort_create_feedback_issue.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly identifies when to use the tool ('Report it where the tool lives') and gives prerequisite conditions: the npub must be provided or there is no issue, and a fee applies. It does not explicitly name alternatives or state when not to use the tool, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_request_adoptionAInspect
Ask a chosen Authority to adopt this operator (deferred courtship).
RESTRICTED to the operator — requires proof the caller controls this
operator's npub. Resolves the Authority's MCP endpoint from the
community registry, mints an inline ownership proof with this
operator's nsec, and delivers the request MCP-to-MCP. The Authority
records it as pending; its owner approves on their own time. Poll
adoption_status for progress; the operator flips to ready
once the Authority provisions it.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | optional message for the Authority owner. | |
| dpop_token | No | operator-npub ownership proof (inline kind-27235 or cached token). | |
| service_url | No | this operator's MCP endpoint (advertised to the Authority). | |
| authority_npub | Yes | npub of the Authority to request adoption from. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does so richly. It discloses that the tool resolves the Authority's MCP endpoint, mints an inline ownership proof with the operator's nsec, delivers the request MCP-to-MCP, and records a pending state until the Authority provisions the operator.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-structured: action first, then restrictions, workflow, and expected outcome. Every sentence adds useful information, and the use of inline code formatting for adoption_status and ready improves scannability.
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 prerequisites, the delegated and asynchronous nature of the request, the expected pending state, and how to monitor completion. An output schema exists, so return-value details are not required. This is complete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the benchmark baseline is 3, but the description adds meaningful context: it explains why dpop_token is needed (proof of npub control), what service_url is used for (advertised endpoint), and that the request targets a chosen authority via authority_npub. This goes beyond the bare schema descriptions without being exhaustive.
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: 'Ask a chosen Authority to adopt this operator.' It also frames this as 'deferred courtship,' distinguishing the request action from status polling and other adoption-related tools. This clearly differentiates it from the sibling taxsort_adoption_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly restricts usage to the operator and requires proof of npub control, giving clear when-to-use conditions. It also directs the caller to 'Poll adoption_status for progress,' naming the specific sibling tool for the follow-up action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_request_credential_channelAInspect
Open a Secure Courier channel for credential delivery.
This is the CREDENTIAL-DELIVERY flow — use it to hand over a service
secret (API keys, tokens). To merely prove you control an npub (the
usual answer to a proof_required error), use request_npub_proof
instead. Note: dynamic/OAuth2 services (e.g. Schwab) need NO couriered
secret — check service_status first.
Sends a welcome DM with a credential template. The recipient must read the DM in their Nostr client, fill in the fields, and reply manually. This is a human-in-the-loop flow.
After calling this tool, STOP and tell the user what to do.
Wait for the user to confirm they have replied before calling
receive_credentials. Do NOT poll or retry — each
receive_credentials call destructively drains the relay
mailbox.
| Name | Required | Description | Default |
|---|---|---|---|
| service | No | Required. The credential service name (e.g., from get_operator_onboarding_status or get_patron_onboarding_status). | |
| sender_npub | No | Required. The npub to send the template to. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full behavioral burden. It discloses that this is a human-in-the-loop flow, that the recipient must manually reply, and that each receive_credentials call destructively drains the relay mailbox. These are non-obvious behavioral traits that an agent needs to know before invoking the tool.
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 each paragraph adds distinct value: purpose, alternative use cases, human-in-the-loop flow, and post-call guardrails. It is somewhat long for a tool description, but the extra length is justified by the multi-step credential-delivery workflow and destructive receive_credentials behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and lack of annotations, the description is complete enough for an agent to call it correctly. It covers the purpose, when to use it, the human workflow, the expected next step, and the destructive consequence of pollng receive_credentials. An output schema also exists to explain return values, so no critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The parameter descriptions in the schema already explain service as a credential service name and sender_npub as the target npub. The tool description adds some contextual value by indicating the secret-delivery nature, but does not materially expand parameter semantics 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 states a specific action: open a Secure Courier channel for credential delivery, hand over service secrets (API keys, tokens), and sends a welcome DM with a credential template. It explicitly distinguishes itself from request_npub_proof, so the agent can clearly identify which tool to use for this flow.
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 provides explicit when-to-use guidance: use for CREDENTIAL-DELIVERY of service secrets, use request_npub_proof instead for merely proving npub control, and check service_status first for dynamic/OAuth2 services. It also gives post-call workflow instructions: STOP, wait for user confimation, then call receive_credentials, and do not poll or retry.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_request_npub_proofAInspect
Request npub ownership proof from a patron via Nostr DM.
This is the npub-OWNERSHIP-PROOF flow — use it when a call returns
proof_required. It proves the caller controls an npub; it does
NOT deliver any service secret. To hand an operator its API keys or
OAuth secrets, use request_credential_channel instead.
Sends a challenge DM that the patron must sign and reply to using their Nostr client. This is a human-in-the-loop flow.
After calling this tool, STOP and tell the user to check their
Nostr client and reply to the challenge. Wait for the user to
confirm they have replied before calling receive_npub_proof.
Do NOT poll or retry — each receive_npub_proof call
destructively drains the relay mailbox.
Returns a dpop_token — the demonstrated-proof-of-possession
token that the calling application MUST remember and pass as the
dpop_token parameter on every subsequent paid tool call. The MCP
does not retain this value across restarts.
Lifecycle: The cached proof expires after the patron's
chosen duration. When it expires, call request_npub_proof
again for a fresh challenge, then wait for the user, then
call receive_npub_proof.
Free.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Optional. A human-readable purpose for the request ("I'm working on your request XYZ and need the Operator to do ABC for you"). Signed into the provenance attestation and shown in the DM, so the recipient sees *why* they are being asked — especially useful when the signer is unknown to them. | |
| verify_at | No | Optional. A free-form statement of WHERE you (the initiating agent) already showed this proof's one-time code to the user — a URL, or "your Claude.ai conversation", "the Grok session". The OAuth 2.0 Device Grant ``verification_uri``, generalized: the user approves only if the code in the DM matches the one you displayed there, so an unsolicited request they've never seen is refused. Signed into the attestation. | |
| patron_npub | No | Required. The patron's npub to request proof from. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden — and it delivers: human-in-the-loop (patron must sign and reply manually), a hard STOP instruction, destructive consequence disclosure ('each receive_npub_proof call destructively drains the relay mailbox'), non-persistence ('The MCP does not retain this value across restarts'), and lifecycle expiry behavior. This exceeds what annotations typically encode.
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?
Seven paragraphs sounds long, but each one earns its place — purpose, when-not-to, call sequencing, destructive warning, token contract, and lifecycle are all distinct facts an agent cannot infer. It is front-loaded with the purpose and flow identity before warnings and lifecycle details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a human-in-the-loop tool with a destructive follow-up and a non-persistent token contract, the description covers every decision point: when to call, what it returns, what to remember, how to sequence with receive_npub_proof, and what happens at expiry. Since an output schema exists, return-value detail needs no further elaboration.
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 rich per-parameter text (reason's provenance attestation, verify_at's OAuth Device Grant analogy), so the schema already does the heavy lifting — baseline 3. The description adds little parameter-specific value, and its claim that patron_npub is 'Required' mildly conflicts with the schema, which marks it optional with a default.
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 + resource + medium ('Request npub ownership proof from a patron via Nostr DM') and names the exact trigger condition ('use it when a call returns proof_required'). It explicitly distinguishes itself from siblings by naming request_credential_channel for the secret-delivery case, so an agent can disambiguate without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit trigger conditions ('use it when a call returns proof_required'), an explicit alternative ('To hand an operator its API keys or OAuth secrets, use request_credential_channel instead'), and a full call sequence with the follow-up tool (STOP... wait... then call receive_npub_proof). It even includes negative instructions ('Do NOT poll or retry'). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_request_unlockCInspect
Request a session unlock after timeout.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| dpop_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description only says 'request a session unlock' but does not disclose side effects, synchronization, authentication requirements, or success/failure behavior. Minimal disclosure for a likely mutating 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?
Single sentence, front-loaded with key info. No fluff, but could add more context without sacrificing conciseness (e.g., what the unlock entails).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, partial schema coverage, and an output schema not described, the description is incomplete. No explanation of dpop_token or response format. Requires more detail for a complete understanding.
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 has 2 params (npub with description, dpop_token without). Description adds no parameter info; dpop_token remains undocumented. Schema coverage is 50%, and description fails to compensate.
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 clearly states 'Request a session unlock after timeout.' Specifies verb (request), resource (session unlock), and context (after timeout). Distinguishes from siblings like taxsort_check_unlock (check status) and taxsort_create_session (create session).
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?
No guidance on when to use vs alternatives (e.g., taxsort_check_unlock for checking unlock status). No prerequisites mentioned (e.g., need an existing session that is locked).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_reset_classificationsBInspect
Delete all classifications but keep the imported transactions.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| dpop_token | No | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description only states the action ('delete all classifications'). It does not disclose irreversibility, required permissions, side effects, or session requirements, which are critical for a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that efficiently conveys the core action and constraint. No redundant 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 destructive tool with three parameters and no annotations, the description is too minimal. It omits context about session dependency, authorization, or the relationship to sibling tools, despite the output schema existing.
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 low (33%), and the description adds no explanation for parameters like 'dpop_token' or 'session_id'. The schema provides a description only for 'npub', but the description does not compensate for the 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 uses a specific verb ('Delete all') and resource ('classifications') and states the scope ('keep the imported transactions'). It clearly distinguishes from sibling tools like 'delete_classification' (singular) and 'clear_transactions' (different resource).
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?
No guidance on when to use this tool versus alternatives such as 'taxsort_delete_classification' for individual deletions or 'taxsort_clear_transactions' for transactions. No prerequisites or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_reset_pricing_modelAInspect
Erase all pricing models and restore a viable default.
Deletes every stored model, then self-initializes a fresh one from the tool registry — all tools at 0 sats with proper UUIDs. Returns the new model.
RESTRICTED to operator — requires proof (nsec-signed).
| Name | Required | Description | Default |
|---|---|---|---|
| dpop_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It details destructive behavior: 'Erase all pricing models', 'Deletes every stored model', then 'self-initializes a fresh one'. Also mentions authentication requirement and return value. Discloses key traits adequately.
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?
Description is concise (three sentences) with front-loaded action statement. Uses bold for emphasis ('RESTRICTED') and avoids unnecessary words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Exists output schema presumably documenting return value, so less burden on description. The tool is complex (destructive reset), and description covers main aspects but omits parameter explanation and irreversibility warning. Adequate but with gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description does not explain the 'dpop_token' parameter. While 'requires proof (nsec-signed)' hints at its purpose, the parameter is not directly described. Agents cannot understand what to pass, degrading usability.
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 clearly states verb 'Erase' and 'restore' with resource 'pricing models'. It differentiates from siblings like taxsort_get_pricing_model and taxsort_set_pricing_model by explaining it deletes all stored models and initializes a default. Purpose is specific and distinct.
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?
Description notes it is 'RESTRICTED to operator — requires proof (nsec-signed)', indicating usage context. However, it does not explicitly state when to use vs alternatives like taxsort_set_pricing_model. Provides clear context but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_restore_creditsAInspect
Credit a patron's ledger from a BTCPay-settled invoice.
RESTRICTED to the operator — the operator owns the books and is the only party who can issue a manual credit grant. Patrons who believe they paid but never got credits must escalate to the operator's support, who then invokes this tool on their behalf.
Use cases: cold-start vault races during check_payment, ncred delivery hiccups, patrons closing Top-Off sheets before settle, any infrastructure incident that left an invoice settled at BTCPay but uncredited on the operator's ledger.
Idempotent — if the invoice is already credited (in the patron's
credited_invoices), returns success with credits_granted=0.
| Name | Required | Description | Default |
|---|---|---|---|
| dpop_token | Yes | A kind-27235 Nostr event signed by the OPERATOR's nsec for this tool. Patron proofs are rejected. | |
| invoice_id | Yes | The BTCPay invoice ID to verify and credit. | |
| patron_npub | Yes | The patron's npub whose ledger receives the grant. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden. It does this well by revealing three important behaviors: the tool is restricted to the operator's signed dpop_token, it is idempotent, and if the invoice is already credited it returns success with credits_granted=0. This exceeds the bare schema and gives the agent dependable expectations about repeated or unauthorized calls.
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 action, then organizes the restriction, use cases, and idempotency into clearly separated paragraphs. Every sentence adds operational value, and the bullet-style use-case list is compact yet informative. No filler or redundancy is present.
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?
This is a sensitive mutation-like tool with an authorization restriction, an idempotency guarantee, and several nuanced trigger scenarios. The description fully covers who may call it, why it may be needed, and how it behaves on duplicate calls. Since an output schema exists, return-value details are already structured, so nothing essential is missing for an agent to invoke it 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 invoice_id, patron_npub, and dpop_token clearly. The description adds context about the operator-only auth requirement and idempotency, but it does not materially extend the per-parameter meaning. Baseline 3 is appropriate because the structured schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb-resource pair: 'Credit a patron's ledger from a BTCPay-settled invoice.' It clearly distinguishes this from the 90+ sibling tools by naming the exact recovery scenario and stating the operator-only restriction. The purpose is unambiguous and not just a restatement of the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when the tool is appropriate: cold-start vault races, ncred delivery hiccups, closed Top-Off sheets, and infrastructure incidents where a BTCPay invoice settled but the ledger was never credited. It also gives a firm when-not: only the operator may use it, while patrons must escalate to support. These conditions are specific enough for an agent to decide correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_restore_neon_schemaAInspect
Re-run ensure_schema() on every NeonVault this operator uses.
Diagnostic / recovery tool for the case where the Neon HTTP SQL API
is returning persistent 4xx errors and the operator suspects the
schema isn't there or grants are wrong. Idempotent — uses
CREATE TABLE IF NOT EXISTS so a successful re-run is harmless.
Returns the per-step result. If any step raises, surfaces the Neon
error message inline (0.31.0 reads the SQL error body that earlier
wheels swallowed behind raise_for_status).
RESTRICTED to operator — requires proof (nsec-signed).
| Name | Required | Description | Default |
|---|---|---|---|
| dpop_token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description covers key behaviors: diagnostic tool, idempotent, returns per-step result, surfaces Neon error messages inline, and requires restricted operator access with nsec-signed proof. No contradictions detected.
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 well-structured: purpose, usage context, behavioral details, and restrictions are clearly conveyed without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the presence of an output schema (not shown), the description adequately covers purpose, usage, and behavior. Minor omission: lacks explanation of the dpop_token parameter.
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 has one parameter (dpop_token) with 0% description coverage. The description does not explain this parameter's purpose or usage, leaving a gap despite the tool's critical nature.
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 re-runs ensure_schema() on every NeonVault, specifying it's a diagnostic/recovery tool for persistent 4xx errors. It distinguishes itself from sibling tools by focusing on schema restoration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use (persistent 4xx errors, schema/grants suspicion) and notes idempotency for safe re-running. It lacks explicit guidance on when not to use or alternatives, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_save_classificationsBInspect
Bulk write classifications from the FE.
classifications is a JSON array of objects, each with:
id: raw_transaction_id
category, subcategory (required)
confidence, reason, merchant, description_override (optional)
classified_by: 'ai' | 'rule' | 'manual' (default 'ai')
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| dpop_token | No | ||
| session_id | Yes | ||
| classifications | No | [] |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description labels the operation as a 'write' but does not disclose whether classifications are overwritten or merged, reversal possibilities, or billing implications beyond the npub note. Lacks detail on side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loads the purpose, and then details the classifications format with bullet points. No unnecessary words. Could split into sections but 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 4 parameters and an output schema, the description only addresses one parameter (classifications) and its structure. It omits return values, effects on existing data, and billing details. Incomplete for a write tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is low (25%). The description explains the 'classifications' parameter structure in detail, adding significant value. However, it does not document 'npub', 'dpop_token', or 'session_id', leaving their semantics unclear despite the schema being sparse.
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's verb ('write') and resource ('classifications'), indicating a bulk write operation. It distinguishes from sibling tools like taxsort_delete_classification and taxsort_reset_classifications by focusing on saving.
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 does not explicitly state when to use this tool versus alternatives (e.g., individual classification updates). It implies bulk saving but provides no guidance on prerequisites or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_save_custom_categoryCInspect
Add a custom category/subcategory (e.g. Personal / Auto Gas).
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| category | Yes | ||
| dpop_token | No | ||
| subcategory | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description should disclose behavioral traits. It indicates a write operation but does not mention idempotency, overwrite behavior, or required credentials, leaving important gaps.
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 (one sentence) but sacrifices completeness. It fits the tool's simplicity but could benefit from additional context without being verbose.
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 presence of an output schema and sibling tools, the description lacks details on return values, error handling, and parameter usage. It is insufficient for an agent to correctly invoke the tool without inferring much.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25%, and the description adds no explanation of the four parameters. The example hints at category and subcategory structure but does not explicitly link to schema fields, providing minimal value.
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 action ('Add a custom category/subcategory') and provides an example, making it distinct from sibling tools like taxsort_get_custom_categories and taxsort_delete_custom_category.
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?
No explicit guidance on when to use this tool vs alternatives or prerequisites. Usage is implied by the tool name and context, but lacks details like authentication requirements via npub.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_save_ruleAInspect
Create a classification rule.
Provide description_pattern (regex matched case-insensitively against the transaction description), category, and subcategory. Optionally add amount_operator (lt, lte, gt, gte, eq, neq) and amount_value to filter by amount. When the compound constraint matches, category, subcategory, and optionally description (new_description) are written.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| category | Yes | ||
| dpop_token | No | ||
| session_id | No | ||
| subcategory | Yes | ||
| amount_value | No | ||
| amount_operator | No | ||
| new_description | No | ||
| description_pattern | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description mentions the matching and writing behavior but does not disclose side effects (e.g., overwriting existing rules), authentication requirements (e.g., npub), or output format. Partially transparent but incomplete.
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 concise sentences, no redundancy. All critical information about the rule creation is front-loaded, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers core functionality but lacks context on authentication (npub required for billing) and error handling. Output schema exists but description doesn't reference it. Adequate but with gaps for a 9-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 11% (only npub described). The description adds meaning to key parameters (description_pattern as regex, amount_operator values, new_description as optional rewrite) but omits details for npub, dpop_token, session_id, etc. Moderate value added.
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 'Create a classification rule' with a specific verb and resource. It distinguishes from siblings like taxsort_apply_rules, taxsort_delete_rule, and taxsort_get_rules by focusing on creation.
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?
No guidance on when to use this tool versus alternatives (e.g., taxsort_apply_rules for applying rules). The description only explains what the tool does, not when it should be chosen.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_service_statusBInspect
Check the health and configuration of this service. Free.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It indicates a read-only operation but lacks details on authentication, rate limits, or whether it can be called freely.
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?
Description is one short sentence, very concise. The word 'Free.' adds minimal value but does not detract significantly.
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 simplicity (no params, output schema exists), the description is minimally adequate. It states the purpose but lacks scope or typical usage context.
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?
No input parameters, so baseline score of 4 applies. The description adds no further parameter information, which is acceptable given zero parameters.
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 states 'Check the health and configuration of this service', which is a specific verb and resource. However, it does not differentiate from sibling status tools like taxsort_adoption_status or taxsort_session_status.
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?
No guidance on when to use this tool versus alternatives. The description only states the operation and that it is 'Free', but does not provide context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_session_heartbeatCInspect
Presence heartbeat. Returns who else is active in this session.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| dpop_token | No | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It reveals the tool returns active participants but fails to disclose side effects, read safety, authentication requirements, or any billing implications. The minimal text leaves behavioral traits largely unknown.
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, no filler, and front-loaded with the core concept. However, extreme brevity sacrifices useful detail, so not a perfect 5. It earns its keep but could be more informative without increasing length significantly.
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 heartbeat tool with an output schema, the description covers the basic return value but lacks parameter details and usage context. It is minimally viable but leaves gaps that could mislead an agent, especially regarding when and how to call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only npub described), well below 50%, so the description must compensate. It adds no parameter information whatsoever. The undocumented dpop_token and session_id parameters remain opaque, severely hindering correct invocation.
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 'Presence heartbeat. Returns who else is active in this session,' using specific verb 'Returns' and defined resource 'active participants'. It distinguishes from siblings like taxsort_session_status and taxsort_create_session by focusing on heartbeat functionality.
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?
No guidance is provided on when to use this tool versus alternatives (e.g., taxsort_session_status). The context of periodic calling is implied by 'heartbeat' but not explicit, and there are no when-not-to-use or prerequisite instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_session_statusAInspect
Check operator readiness. Returns the operator lifecycle state and clear guidance on what to do next. Free.
Lifecycle states:
ready: Operator is warm and fully operational — vault AND pricing model verified. Proceed with tool calls.
warming_up: Operator is initializing (cold start). Try a tool call — it will warm up on demand.
misconfigured: Persistence rejected a query with a permanent SQL error (permission denied, missing relation). Paid tools will fail until the operator repairs the database — retrying does not help.
quota_exceeded: The persistence provider (Neon) answered HTTP 402 — the operator's database has exhausted its compute/storage quota, so the books are locked for billing. Paid tools fail; retrying does NOT help. The operator's Authority must restore capacity (upgrade the plan or wait for the quota reset). Free tools remain available.
not_registered: Operator has no Authority relationship yet. Call register_operator first.
no_identity: Operator nsec is not configured. Deployment issue.
| Name | Required | Description | Default |
|---|---|---|---|
| patron_npub | No | Optional. If supplied, the response includes an ``upstream_oauth`` block with the patron's stored OAuth token expiry (runtime-derived from vault state) so a client can refresh proactively rather than reactively after a stale-token failure. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full behavioral burden — and it delivers. It discloses the tool is free, enumerates all six lifecycle states, reveals that paid tools fail while free tools remain available in failure states, explains the root causes (permanent SQL errors, Neon HTTP 402 quota exhaustion), and states that retrying will not help for misconfigured and quota_exceeded. This is far richer than a typical status-tool description and gives the agent real operational understanding.
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 lead sentence delivers the purpose in three words, and each list item earns its place: state name, meaning, consequence, and recommended action. The single-word 'Free.' conveys a cost fact that would otherwise be missing. The bulleted structure is scannable and every sentence adds distinct information with zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has zero required parameters and an output schema, so return-value details are already covered by structured data. The non-obvious operational complexity — the six lifecycle states and their downstream effects on other tools — is fully enumerated with remediation guidance. Nothing an agent needs to correctly interpret and act on this status check 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 description need not compensate. The single optional patron_npub parameter is fully documented in the schema, including its effect (adding an upstream_oauth block with stored token expiry) and the proactive-refresh rationale. The description itself adds no parameter detail, which is acceptable at this coverage level; 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?
The opening line 'Check operator readiness' names a specific verb and resource, and the lifecycle-state enumeration defines exactly what the tool reports and the actionable meaning of each value. It is clearly distinguishable from siblings like taxsort_service_status and taxsort_session_heartbeat by being specifically about operator lifecycle readiness, though it never names those alternatives explicitly.
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?
Every lifecycle state carries an explicit directive: 'Proceed with tool calls,' 'Try a tool call — it will warm up on demand,' 'Call register_operator first,' and 'retrying does NOT help' for the two permanent-failure states. It also routes the agent by distinguishing free vs paid tool availability per state. However, it does not explicitly state when to choose this tool over sibling status tools, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_set_account_typeCInspect
Set an account's type: bank (checking/savings), card (credit/debit), investment, or loan.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| dpop_token | No | ||
| session_id | Yes | ||
| account_name | Yes | ||
| account_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavioral traits. It indicates mutation ('Set') but does not explain side effects, idempotency, authentication requirements, or potential errors. For example, does it overwrite the existing type? Are there any destructive effects?
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 a single, front-loaded sentence with no fluff. It efficiently conveys the primary action and allowed types. Could be slightly more structured to include parameter roles, but remains concise.
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 5 parameters (3 required) and no annotations, the description is incomplete. It does not mention the output schema existence, error conditions, or prerequisites. An agent would lack sufficient context to use this tool reliably without additional information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20% (only 'npub' has a description). The description lists allowed account types, which adds some value, but does not explain the other parameters (session_id, account_name) or their formats/constraints. The parameter 'account_type' lacks an enum definition in the schema, so the description compensates partially.
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 action ('Set an account's type') and lists valid account types (bank, card, investment, loan). This distinguishes it from sibling tools like taxsort_get_accounts (read) or taxsort_delete_account_transactions (delete). However, it could be more specific about what 'bank' and 'card' subtypes mean.
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?
No guidance on when to use this tool versus alternatives. There are no prerequisites, when-not-to-use instructions, or mentions of related tools. For instance, whether the account must exist first or if this updates an existing type is not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_set_pricing_modelAInspect
Set the active pricing model. RESTRICTED to operator.
Requires a valid proof (Schnorr-signed kind-27235 event) proving the caller holds the operator's nsec.
| Name | Required | Description | Default |
|---|---|---|---|
| dpop_token | No | ||
| model_json | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses the authentication requirement (operator proof) but does not mention other behavioral aspects like side effects or idempotency. No annotations to supplement.
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?
Extremely concise—two sentences with no wasted words. Purpose 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?
Lacks essential details about the model_json parameter and output behavior. With no annotations or schema descriptions, more context is needed 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?
No parameter descriptions in schema (0% coverage) and description does not explain the required model_json parameter. Agent lacks guidance on format or content.
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?
Clearly states the action is to set the active pricing model. Distinguishes from sibling tools like get and reset.
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?
Specifies that usage is restricted to operators and requires a Schnorr-signed proof. Does not explicitly mention alternatives but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_update_couponAInspect
Patch a coupon's editable fields.
Pass only the fields you want to change. To set a cap to
unlimited (NULL in the schema), pass clear_uses_per_patron=true
or clear_total_uses=true. Renaming the code is allowed —
existing patron redemption rows survive (they key on coupon id).
RESTRICTED to operator — requires proof.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| coupon_id | Yes | ||
| dpop_token | No | ||
| total_uses | No | ||
| valid_from | No | ||
| valid_until | No | ||
| uses_per_patron | No | ||
| clear_total_uses | No | ||
| discount_percent | No | ||
| clear_uses_per_patron | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses key behaviors: patch operation, clearing caps via boolean flags, renaming is allowed and preserves patron redemption data, and access restriction requires proof. With no annotations, this is thorough, though it could mention idempotency or behavior for sending unchanged fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, each adding distinct value: purpose, usage pattern, special behavior, and access restriction. It is well-structured and front-loaded with the core action.
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 10-parameter schema with 0% description coverage and the presence of an output schema, the description covers main editing behavior, special clearing, renaming effects, and access. Missing a description of dpop_token and the specific editable fields reduces completeness slightly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains the clear_uses_per_patron and clear_total_uses flags and mentions renaming the 'name' field, but does not describe other parameters like total_uses, discount_percent, or dpop_token. This partial coverage places it at a 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 'Patch a coupon's editable fields,' providing a specific verb and resource. It distinguishes from sibling tools like mint_coupon and delete_coupon by focusing on updating existing coupons.
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 advises to pass only changed fields and explains special clear flags, plus notes the access restriction to operators. It implies when to use this tool (for modifying a coupon) and when not (e.g., for creating or deleting), but doesn't explicitly name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_update_operator_credentialAInspect
Add or update a single operator secret field.
Merges into the operator's stored credentials without touching the
others — the field-level counterpart to re-delivering the whole
bundle over Secure Courier. Use it to rotate one secret (a reissued
btcpay_api_key, say) without restating the six you did not
change, where any field omitted from a courier reply is destroyed.
The value is never echoed back. RESTRICTED to the operator — requires proof (nsec-signed kind-27235 or a cached dpop_token phrase); patron proofs are rejected.
| Name | Required | Description | Default |
|---|---|---|---|
| field | Yes | The operator credential field to set. Must be declared in the operator's credential template. | |
| value | Yes | The value to store. | |
| dpop_token | Yes | Operator proof for this tool. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden; it discloses non-destructive merge semantics, non-echoing of the value, proof requirements, and patron rejection. It even explains the danger of the alternative bundle flow. This is sufficient for a privileged secret-update tool.
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 short paragraphs with no filler: each sentence carries purpose, merge semantics, usage case, or auth constraint. The critical secret-update/rotation guidance and warning about destroyed fields is front-loaded and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers what the tool does, when to use it, how it mutates, the proof gate, and the secret-token semantics. Output shape is not described but an output schema exists, so nothing needed for a correct call is missing. It is complete for a sensitive single-field update tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, baseline is 3; the description adds meaning by labeling field as an operator secret, explaining value is never echoed back, and tying dpop_token to 'operator proof' and 'patron proofs rejected'. It reinforces the parameter roles without adding syntax that is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a concrete action phrase ('Add or update a single operator secret field') and then clarifies the merge behavior ('without touching the others'). This immediately distinguishes it from the delete/patron siblings, so an agent knows exactly which resource is being mutated.
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 frames the tool as a rotation/partial-update path: use it when you need to change one secret instead of re-delivering the whole bundle, and it warns that restating an entire courier reply destroys omitted fields. It also states the operator-only restriction and that patron proofs are rejected. It stops short of naming the exact sibling tool to use for patron updates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_update_patron_credentialAInspect
Add or update a single patron credential field.
Merges into existing stored credentials without affecting other fields. Useful for setting an account identifier after OAuth, changing a default brain, etc. Free. Proof of npub ownership is required — this is a write to the patron's sensitive credential vault.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | Yes | The patron's Nostr public key (npub1...). | |
| field | Yes | The credential field name to set. | |
| value | Yes | The value to store. | |
| dpop_token | Yes | Raw JSON of a kind-27235 Nostr event signed by npub — not base64, not NIP-98 'Authorization: Nostr <b64>' framing. Its `u` tag must hold THIS tool's exact name (from tools/list), not the endpoint URL; content:"", created_at within 60s of now, and a random `nonce` tag recommended. Or a cached dpop_token phrase. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that this is a write to a sensitive credential vault, requires proof of npub ownership, is free, and merges without affecting other fields. It does not explicitly state whether an existing field is overwritten or whether the change is reversible, which keeps it from a 5.
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?
Five short sentences, each earning its place: purpose, merge behavior, use cases, cost, and security requirement. The most important identifying information is front-loaded in the first sentence.
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 sensitive write tool with no annotations, the description covers what, why, merge semantics, cost, and auth. It is missing explicit routing to alternatives like delete_patron_credential or get_patron_credential_fields for adjacent needs, but an output schema exists and parameter coverage is complete, so the gap is minor.
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 schema already documents npub, dpop_token, field, and value. The description mentions credential fields and merge behavior but adds no parameter-level meaning beyond what the schema properties provide, 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?
The opening line, 'Add or update a single patron credential field,' states a specific verb and resource, and the 'single patron credential' scope distinguishes it from sibling credential tools like delete_patron_credential, get_patron_credential_fields, and update_operator_credential without needing to inspect their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete use cases ('setting an account identifier after OAuth, changing a default brain') and clarifies merge semantics, so an agent knows when it applies. It does not explicitly name alternatives or state when not to use this tool, stopping short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taxsort_verify_passphraseBInspect
Verify a passphrase to unlock a timed-out session.
| Name | Required | Description | Default |
|---|---|---|---|
| npub | No | Required. Your Nostr public key (npub1...) for credit billing. | |
| dpop_token | No | ||
| passphrase | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the basic action without mentioning auth requirements, rate limits, or consequences of success/failure. The action likely changes state, but this is not clarified.
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 a single, front-loaded sentence with no wasted words. It efficiently conveys the core purpose.
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 sensitivity of unlocking a session, the description lacks essential context such as error handling, idempotency, or post-unlock behavior. The presence of an output schema mitigates some need for return value explanation, but significant gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 33% schema description coverage, the description fails to add meaning to the parameters. It does not explain npub, dpop_token, or the expected format of passphrase, leaving the agent underinformed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'verify', the resource 'passphrase', and the purpose 'to unlock a timed-out session'. This distinguishes it from sibling tools like taxsort_check_unlock or taxsort_request_unlock, which have different actions.
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 implies usage when a session is timed out and needs unlocking via passphrase verification, but it does not explicitly compare with alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
26 tool updates
- Changed
taxsort_account_statement3 fields changed- added
Input schema / properties / days / descriptionAdded value: +"Number of days of daily usage history to include (default 30)." - added
Input schema / properties / dpop_token / descriptionAdded value: +"Raw JSON of a kind-27235 Nostr event signed by npub —\nnot base64, not NIP-98 'Authorization: Nostr <b64>' framing. Its\n`u` tag must hold THIS tool's exact name (from tools/list), not\nthe endpoint URL; content:\"\", created_at within 60s of now, and a\nrandom `nonce` tag recommended. Or a cached dpop_token phrase." - added
Input schema / properties / npub / descriptionAdded value: +"The patron's Nostr public key (npub1...)."
- Changed
taxsort_account_statement_infographic3 fields changed- added
Input schema / properties / days / descriptionAdded value: +"Number of days of daily usage history to include (default 30)." - added
Input schema / properties / dpop_token / descriptionAdded value: +"Raw JSON of a kind-27235 Nostr event signed by npub —\nnot base64, not NIP-98 'Authorization: Nostr <b64>' framing. Its\n`u` tag must hold THIS tool's exact name (from tools/list), not\nthe endpoint URL; content:\"\", created_at within 60s of now, and a\nrandom `nonce` tag recommended. Or a cached dpop_token phrase." - added
Input schema / properties / npub / descriptionAdded value: +"The Nostr public key (npub1...) whose statement to render."
- Changed
taxsort_check_balance2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Raw JSON of a kind-27235 Nostr event signed by npub —\nnot base64, not NIP-98 'Authorization: Nostr <b64>' framing. Its\n`u` tag must hold THIS tool's exact name (from tools/list), not\nthe endpoint URL; content:\"\", created_at within 60s of now, and a\nrandom `nonce` tag recommended. Or a cached dpop_token phrase." - added
Input schema / properties / npub / descriptionAdded value: +"The Nostr public key (npub1...) whose balance to check."
- Changed
taxsort_check_payment3 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Raw JSON of a kind-27235 Nostr event signed by npub —\nnot base64, not NIP-98 'Authorization: Nostr <b64>' framing. Its\n`u` tag must hold THIS tool's exact name (from tools/list), not\nthe endpoint URL; content:\"\", created_at within 60s of now, and a\nrandom `nonce` tag recommended. Or a cached dpop_token phrase." - added
Input schema / properties / invoice_id / descriptionAdded value: +"The invoice ID returned by purchase_credits." - added
Input schema / properties / npub / descriptionAdded value: +"The Nostr public key (npub1...) that purchased the invoice."
- Changed
taxsort_check_price2 fields changed- added
Input schema / properties / tool_id / descriptionAdded value: +"Either the tool's UUID (from the pricing model) or a\nbare capability string (e.g. ``\"deal_scenario\"``). FE\ncallers usually have the capability name; this resolves\nboth so the FE doesn't need to derive UUIDs locally." - added
Input schema / properties / tool_kwargs / descriptionAdded value: +"Optional JSON object with tool call parameters\nfor ad valorem / categorical-multiplier pricing preview\n(e.g. '{\"amount_sats\": 5000}' or\n'{\"difficulty\": \"sovereign\", \"mode\": \"live\"}')."
- Changed
taxsort_check_proof_status2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Required. The dpop_token phrase returned by\n``request_npub_proof`` / ``receive_npub_proof``." - added
Input schema / properties / patron_npub / descriptionAdded value: +"Required. The patron's npub (npub1...)."
- Changed
taxsort_delete_operator_credential2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Operator proof for this tool." - added
Input schema / properties / field / descriptionAdded value: +"The operator credential field to remove (templated or not)."
- Changed
taxsort_delete_patron_credential3 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Raw JSON of a kind-27235 Nostr event signed by npub —\nnot base64, not NIP-98 'Authorization: Nostr <b64>' framing. Its\n`u` tag must hold THIS tool's exact name (from tools/list), not\nthe endpoint URL; content:\"\", created_at within 60s of now, and a\nrandom `nonce` tag recommended. Or a cached dpop_token phrase." - added
Input schema / properties / field / descriptionAdded value: +"The credential field name to remove." - added
Input schema / properties / npub / descriptionAdded value: +"The patron's Nostr public key (npub1...)."
- Changed
taxsort_forget_credentials3 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Raw JSON of a kind-27235 Nostr event signed by npub —\nnot base64, not NIP-98 'Authorization: Nostr <b64>' framing. Its\n`u` tag must hold THIS tool's exact name (from tools/list), not\nthe endpoint URL; content:\"\", created_at within 60s of now, and a\nrandom `nonce` tag recommended. Or a cached dpop_token phrase." - added
Input schema / properties / npub / descriptionAdded value: +"The Nostr public key (npub1...) whose credentials to forget." - added
Input schema / properties / service / descriptionAdded value: +"The credential service to forget."
- Changed
taxsort_get_notarization_proof2 fields changed- added
Input schema / properties / notarization_id / descriptionAdded value: +"The notarization record ID." - added
Input schema / properties / npub / descriptionAdded value: +"The patron's Nostr public key (npub1...)."
- Changed
taxsort_get_patron_credential_fields2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Raw JSON of a kind-27235 Nostr event signed by npub —\nnot base64, not NIP-98 'Authorization: Nostr <b64>' framing. Its\n`u` tag must hold THIS tool's exact name (from tools/list), not\nthe endpoint URL; content:\"\", created_at within 60s of now, and a\nrandom `nonce` tag recommended. Or a cached dpop_token phrase." - added
Input schema / properties / npub / descriptionAdded value: +"The patron's Nostr public key (npub1...)."
- Changed
taxsort_get_patron_onboarding_status2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"A kind-27235 Nostr event signed by patron_npub for this tool." - added
Input schema / properties / patron_npub / descriptionAdded value: +"The patron's Nostr public key (npub1...)."
- Changed
taxsort_list_notarizations2 fields changed- added
Input schema / properties / limit / descriptionAdded value: +"Maximum records to return (default 20)." - added
Input schema / properties / status / descriptionAdded value: +"Optional filter (e.g., 'submitted', 'confirmed')."
- Changed
taxsort_mint_coupon6 fields changed- added
Input schema / properties / discount_percent / descriptionAdded value: +"Percentage off the base price (0-100)." - added
Input schema / properties / name / descriptionAdded value: +"The catchy code patrons type to redeem\n(operator-scoped uniqueness)." - added
Input schema / properties / total_uses / descriptionAdded value: +"Aggregate cap across all patrons (default None =\nunlimited)." - added
Input schema / properties / uses_per_patron / descriptionAdded value: +"How many tool calls one patron can claim the\ndiscount on (default 1; pass null/None for unlimited\nwithin the window)." - added
Input schema / properties / valid_from / descriptionAdded value: +"ISO-8601 datetime when the coupon becomes active." - added
Input schema / properties / valid_until / descriptionAdded value: +"ISO-8601 datetime when the coupon expires."
- Changed
taxsort_publish_nostr_profile2 fields changed- added
Input schema / properties / npub / descriptionAdded value: +"The patron's Nostr public key the event must be signed by." - added
Input schema / properties / signed_event / descriptionAdded value: +"A JSON-encoded, client-signed kind-0 event."
- Changed
taxsort_purchase_credits3 fields changed- added
Input schema / properties / amount_sats / descriptionAdded value: +"Satoshis to purchase (default 1000)." - added
Input schema / properties / dpop_token / descriptionAdded value: +"Raw JSON of a kind-27235 Nostr event signed by npub —\nnot base64, not NIP-98 'Authorization: Nostr <b64>' framing. Its\n`u` tag must hold THIS tool's exact name (from tools/list), not\nthe endpoint URL; content:\"\", created_at within 60s of now, and a\nrandom `nonce` tag recommended. Or a cached dpop_token phrase." - added
Input schema / properties / npub / descriptionAdded value: +"The Nostr public key (npub1...) the credits will fund."
- Changed
taxsort_receive_credentials4 fields changed- added
Input schema / properties / credential_card / descriptionAdded value: +"Optional. An ncred1... card to redeem directly\n(bypasses the relay drain; dpop_token not needed)." - added
Input schema / properties / dpop_token / descriptionAdded value: +"Required. The session phrase returned by\nrequest_credential_channel for this exact channel." - added
Input schema / properties / sender_npub / descriptionAdded value: +"Required. The npub that sent the credentials." - added
Input schema / properties / service / descriptionAdded value: +"Required. The credential service name (must match\nthe service used in request_credential_channel)."
- Changed
taxsort_receive_npub_proof2 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Required. The dpop_token returned by request_npub_proof." - added
Input schema / properties / patron_npub / descriptionAdded value: +"Required. The patron's npub to receive proof from."
- Changed
taxsort_report_issue5 fields changed- added
Input schema / properties / body / descriptionAdded value: +"The details — which tool, what was wrong, what you expected." - added
Input schema / properties / dpop_token / descriptionAdded value: +"Raw JSON of a kind-27235 Nostr event signed by npub —\nnot base64, not NIP-98 'Authorization: Nostr <b64>' framing. Its\n`u` tag must hold THIS tool's exact name (from tools/list), not\nthe endpoint URL; content:\"\", created_at within 60s of now, and a\nrandom `nonce` tag recommended. Or a cached dpop_token phrase." - added
Input schema / properties / npub / descriptionAdded value: +"Your Nostr public key (npub1...); the report's author of record." - added
Input schema / properties / title / descriptionAdded value: +"One-line summary of the problem." - added
Input schema / properties / tool_name / descriptionAdded value: +"Optional: the specific tool the report is about\n(e.g. \"schwab_get_option_chain\")."
- Changed
taxsort_request_adoption4 fields changed- added
Input schema / properties / authority_npub / descriptionAdded value: +"npub of the Authority to request adoption from." - added
Input schema / properties / dpop_token / descriptionAdded value: +"operator-npub ownership proof (inline kind-27235 or cached token)." - added
Input schema / properties / note / descriptionAdded value: +"optional message for the Authority owner." - added
Input schema / properties / service_url / descriptionAdded value: +"this operator's MCP endpoint (advertised to the Authority)."
- Changed
taxsort_request_credential_channel2 fields changed- added
Input schema / properties / sender_npub / descriptionAdded value: +"Required. The npub to send the template to." - added
Input schema / properties / service / descriptionAdded value: +"Required. The credential service name (e.g.,\nfrom get_operator_onboarding_status or get_patron_onboarding_status)."
- Changed
taxsort_request_npub_proof3 fields changed- added
Input schema / properties / patron_npub / descriptionAdded value: +"Required. The patron's npub to request proof from." - added
Input schema / properties / reason / descriptionAdded value: +"Optional. A human-readable purpose for the request\n(\"I'm working on your request XYZ and need the Operator to do\nABC for you\"). Signed into the provenance attestation and shown\nin the DM, so the recipient sees *why* they are being asked —\nespecially useful when the signer is unknown to them." - added
Input schema / properties / verify_at / descriptionAdded value: +"Optional. A free-form statement of WHERE you (the\ninitiating agent) already showed this proof's one-time code to\nthe user — a URL, or \"your Claude.ai conversation\", \"the Grok\nsession\". The OAuth 2.0 Device Grant ``verification_uri``,\ngeneralized: the user approves only if the code in the DM matches\nthe one you displayed there, so an unsolicited request they've\nnever seen is refused. Signed into the attestation."
- Changed
taxsort_restore_credits3 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"A kind-27235 Nostr event signed by the OPERATOR's nsec\nfor this tool. Patron proofs are rejected." - added
Input schema / properties / invoice_id / descriptionAdded value: +"The BTCPay invoice ID to verify and credit." - added
Input schema / properties / patron_npub / descriptionAdded value: +"The patron's npub whose ledger receives the grant."
- Changed
taxsort_session_status1 field changed- added
Input schema / properties / patron_npub / descriptionAdded value: +"Optional. If supplied, the response includes an\n``upstream_oauth`` block with the patron's stored OAuth\ntoken expiry (runtime-derived from vault state) so a\nclient can refresh proactively rather than reactively\nafter a stale-token failure."
- Changed
taxsort_update_operator_credential3 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Operator proof for this tool." - added
Input schema / properties / field / descriptionAdded value: +"The operator credential field to set. Must be declared\nin the operator's credential template." - added
Input schema / properties / value / descriptionAdded value: +"The value to store."
- Changed
taxsort_update_patron_credential4 fields changed- added
Input schema / properties / dpop_token / descriptionAdded value: +"Raw JSON of a kind-27235 Nostr event signed by npub —\nnot base64, not NIP-98 'Authorization: Nostr <b64>' framing. Its\n`u` tag must hold THIS tool's exact name (from tools/list), not\nthe endpoint URL; content:\"\", created_at within 60s of now, and a\nrandom `nonce` tag recommended. Or a cached dpop_token phrase." - added
Input schema / properties / field / descriptionAdded value: +"The credential field name to set." - added
Input schema / properties / npub / descriptionAdded value: +"The patron's Nostr public key (npub1...)." - added
Input schema / properties / value / descriptionAdded value: +"The value to store."
1 tool update
- Added
taxsort_delete_operator_credential
1 tool update
- Added
taxsort_update_operator_credential
1 tool update
- Changed
taxsort_request_npub_proof2 fields changed- added
Input schema / properties / reasonAdded value: +{ + "default": "", + "type": "string" +} - added
Input schema / properties / verify_atAdded value: +{ + "default": "", + "type": "string" +}
1 tool update
- Added
taxsort_report_issue
84 tool updates
- First observed
taxsort_account_statement - First observed
taxsort_account_statement_infographic - First observed
taxsort_adoption_status - First observed
taxsort_apply_rules - First observed
taxsort_ask_advisor - First observed
taxsort_ask_tax_researcher - First observed
taxsort_check_authority_balance - First observed
taxsort_check_balance - First observed
taxsort_check_payment - First observed
taxsort_check_price - First observed
taxsort_check_proof_status - First observed
taxsort_check_unlock - First observed
taxsort_clear_transactions - First observed
taxsort_count_rule_matches - First observed
taxsort_create_feedback_issue - First observed
taxsort_create_session - First observed
taxsort_create_share_token - First observed
taxsort_delete_account_transactions - First observed
taxsort_delete_classification - First observed
taxsort_delete_coupon - First observed
taxsort_delete_custom_category - First observed
taxsort_delete_patron_credential - First observed
taxsort_delete_rule - First observed
taxsort_forget_coupon - First observed
taxsort_forget_credentials - First observed
taxsort_get_accounts - First observed
taxsort_get_amount_neighbors - First observed
taxsort_get_anthropic_key - First observed
taxsort_get_api_usage_stats - First observed
taxsort_get_custom_categories - First observed
taxsort_get_github_token - First observed
taxsort_get_import_stats - First observed
taxsort_get_nostr_profile - First observed
taxsort_get_notarization_proof - First observed
taxsort_get_operator_onboarding_status - First observed
taxsort_get_patron_credential_fields - First observed
taxsort_get_patron_onboarding_status - First observed
taxsort_get_pricing_model - First observed
taxsort_get_rules - First observed
taxsort_get_session - First observed
taxsort_get_summary - First observed
taxsort_get_transactions - First observed
taxsort_get_transactions_paged - First observed
taxsort_import_csv - First observed
taxsort_list_canonical_identities - First observed
taxsort_list_constraint_types - First observed
taxsort_list_coupons - First observed
taxsort_list_feedback_issues - First observed
taxsort_list_my_coupons - First observed
taxsort_list_notarizations - First observed
taxsort_list_sessions - First observed
taxsort_load_share_token - First observed
taxsort_mint_coupon - First observed
taxsort_notarize_ledger - First observed
taxsort_oracle_about - First observed
taxsort_oracle_get_tax_rate - First observed
taxsort_oracle_how_to_join - First observed
taxsort_oracle_lookup_member - First observed
taxsort_oracle_network_advisory - First observed
taxsort_publish_nostr_profile - First observed
taxsort_purchase_credits - First observed
taxsort_receive_credentials - First observed
taxsort_receive_npub_proof - First observed
taxsort_redeem_coupon - First observed
taxsort_report_api_usage - First observed
taxsort_request_adoption - First observed
taxsort_request_credential_channel - First observed
taxsort_request_npub_proof - First observed
taxsort_request_unlock - First observed
taxsort_reset_classifications - First observed
taxsort_reset_pricing_model - First observed
taxsort_restore_credits - First observed
taxsort_restore_neon_schema - First observed
taxsort_save_classifications - First observed
taxsort_save_custom_category - First observed
taxsort_save_rule - First observed
taxsort_service_status - First observed
taxsort_session_heartbeat - First observed
taxsort_session_status - First observed
taxsort_set_account_type - First observed
taxsort_set_pricing_model - First observed
taxsort_update_coupon - First observed
taxsort_update_patron_credential - First observed
taxsort_verify_passphrase
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Verifiable US tax oracle for AI agents: cited, machine-checkable federal and state tax computation
Hosted MCP server for Mini Accountant: invoices, expenses, customers, analytics, tax estimates.
MCP server for the Fail Modes taxonomy — a knowledge base of AI system failure modes
Personal knowledge base MCP server with semantic search, auto-categorization, metadata extraction
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceMCP server for personal finance management. Enables natural language expense logging, budgeting, recurring charge detection, and statement import with deterministic local calculations.-
- AlicenseNot gradedqualityBmaintenanceMCP server that turns bank transactions into a financial digest including cash-flow forecast, spending breakdown, fee detection, and receipt reconciliation, exposing deterministic engines as JSON-RPC tools.Apache 2.0
- AlicenseNot gradedqualityBmaintenanceA sovereign, MIT-licensed MCP server for US tax operations, enabling offline-capable and self-hostable tax workflow management.MIT
- AlicenseAqualityCmaintenanceAccounting automation MCP server for Japanese tax firms. Two-stage classifier (keyword + Claude AI) with TaxRuleEngine for consumption tax, withholding, invoice system, and confidence-based routing.122MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Most tools have clearly distinct purposes and thorough descriptions. However, the sheer number (84) and some similarly named tools (e.g., check_balance vs check_authority_balance) could cause minor confusion for an agent.
All tools share the 'taxsort_' prefix, but the naming pattern is inconsistent: some use verb_noun (check_balance), while others use noun_noun (account_statement) or other structures. This mixed convention reduces predictability.
84 tools is excessive for typical MCP server coherence. While the domain is broad, many tools seem administrative (e.g., get_anthropic_key) and could be consolidated. The high count likely overwhelms agents.
The tool set covers the core tax classification workflow (import, classify, summarize) plus auxiliary systems (payments, credentials, coupons, notarization). Minor gaps exist (e.g., no CSV export), but overall coverage is comprehensive.