Skip to main content
Glama

Server Details

FastMCP server for posting formatted content to X (Twitter) — Tollbooth-monetized, DPYC-native

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
lonniev/excalibur-mcp
GitHub Stars
3
Server Listing
eXcalibur MCP

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.1/5 across 72 of 72 tools scored. Lowest: 2.6/5.

Server CoherenceA
Disambiguation5/5

Each tool targets a distinct operation and domain (account, posts, coupons, credentials, scheduling, oracle, etc.), with clear differentiation even for similar-sounding tools like check_balance vs check_authority_balance or list_coupons vs list_my_coupons. There is no ambiguity.

Naming Consistency5/5

All tools follow a consistent verb_noun snake_case pattern (e.g., create_post, delete_coupon, list_posts), with no mixing of styles. The excalibur_ prefix is uniform.

Tool Count1/5

With 72 tools, the server far exceeds the typical well-scoped range (3–15). While the functionality is broad, the sheer number feels excessive for a single MCP server, leading to an extreme mismatch.

Completeness5/5

The tool surface covers the full lifecycle for core domains: CRUD for posts, snippets, coupons, credentials; complete flows for OAuth, npub proof, scheduling, notarization, and payments. No obvious gaps are present.

Available Tools

78 tools
excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days of daily usage history to include (default 30).
npubYesThe patron's Nostr public key (npub1...).
dpop_tokenYesRaw 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

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

With no annotations, the description carries the burden. It discloses key behaviors: it is free (no credits consumed), requires proof of npub ownership to prevent scraping, and returns specific data. It does not explicitly state read-only behavior, but the content and the return-value description strongly imply it.

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

Conciseness5/5

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

Five sentences, each with a clear role: what it does, what it returns, what it is not, cost, and auth requirement. Front-loaded with the primary verb and object; no fluff or repetition.

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

Completeness5/5

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

Given the tool's moderate complexity and the rich input schema plus output schema, the description covers the essential context: purpose, return contents, exclusion of tax balance, cost, and authentication. It is complete enough for an agent to invoke correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema thoroughly documents all parameters (days, npub, dpop_token) including detailed dpop_token format and requirements. The description adds contextual flavor (e.g., 'proof of npub ownership') but does not add parameter-level semantics beyond the schema.

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

Purpose5/5

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

The description uses a specific verb ('Generate') and resource ('patron's account statement'), and clearly lists what's included (purchase history, credit tranches, per-tool usage, daily logs). It also distinguishes itself from related tools by explicitly stating it is the patron's spending account, not the operator's Authority tax balance.

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

Usage Guidelines4/5

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

It gives clear context by contrasting with the Authority tax balance, implying when this statement tool is appropriate versus a balance-checking tool. However, it does not name alternative tools explicitly, 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.

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days of daily usage history to include (default 30).
npubYesThe Nostr public key (npub1...) whose statement to render.
dpop_tokenYesRaw 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

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses significant behaviors: it costs 1 api_sat per call, and proof is verified by debit_or_deny before cost is incurred. It also describes the content of the SVG (balance hero, metrics cards, health gauge, tranche table, tool usage breakdown). While it doesn't detail error cases or rate limits, the most important behavioral traits (cost and verification flow) are clearly communicated.

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

Conciseness5/5

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

The description is exceptionally concise: two sentences that front-load the core purpose, followed by a compact list of return contents and cost/proof details. Every sentence earns its place, and there is zero fluff or repetition. It serves as a model of efficient, informative tool documentation.

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

Completeness5/5

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

Given the tool's complexity (generates an SVG, incurs a cost, requires proof verification), the description covers all critical aspects: what it produces, how it relates to the sibling data tool, the cost, and the verification step. The output schema is separate, so return-value details are already available. The description is complete for an agent to decide when and how to invoke this tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already thoroughly documents all three parameters (days, npub, dpop_token) with detailed descriptions. The tool description itself does not add parameter-level semantics beyond what the schema provides. Per the scoring guide, a baseline of 3 is appropriate when schema coverage is high and the description doesn't need to compensate.

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

Purpose5/5

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

The description starts with a specific verb and resource: 'Generate a visual SVG infographic of your account statement.' It clearly distinguishes from the sibling excalibur_account_statement by stating it returns the same data but rendered as an SVG graphic. This makes the tool's purpose immediately clear and differentiates it from the likely data-only variant.

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

Usage Guidelines4/5

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

The description explicitly references the sibling tool excalibur_account_statement, saying 'Returns the same data as account_statement, rendered as a dark-themed SVG graphic.' This implies when to use this tool (when a visual infographic is needed) versus the alternative (raw data). It also provides practical usage context by mentioning the cost and proof verification. However, it doesn't explicitly state exclusions or conditions when not to use the tool.

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

excalibur_adoption_statusBInspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
dpop_tokenNo
authority_npubYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

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

Given no annotations, the description must disclose behavior. It mentions 'free' and 'polls the Authority MCP-to-MCP' and lists possible statuses (pending/approved/rejected/provisioned). However, it does not discuss idempotency, permissions, or whether the operation is read-only.

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

Conciseness4/5

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

The description is concise with three sentences and a bullet list. The main purpose is front-loaded. However, it could be slightly more structured by adding parameter explanations.

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

Completeness2/5

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

Despite having an output schema and only 2 parameters, the description lacks essential context: no parameter descriptions, no authentication requirements, no explanation of the polling behavior or expected response format. The tool's purpose is clear but incomplete for reliable agent usage.

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

Parameters1/5

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

Schema parameter coverage is 0%, and the description does not explain any parameters. 'authority_npub' is implied by 'chosen Authority' but not explicitly described, and 'dpop_token' is entirely omitted. This is a critical gap.

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

Purpose5/5

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

The description clearly states the verb 'check', the resource 'operator's adoption-request status', and the scope 'at a chosen Authority'. It distinguishes from siblings like excalibur_request_adoption and excalibur_get_operator_onboarding_status.

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

Usage Guidelines3/5

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

The description implies usage (checking adoption status) but does not provide explicit when-to-use or when-not-to-use guidance, nor mentions alternatives among the many sibling tools.

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

excalibur_begin_oauthAInspect

Start the OAuth2 authorization flow.

Returns an authorization URL. Open it in a browser to log in and authorize. Then call check_oauth_status with the same npub to complete. Free. Proof of npub ownership is required so an observer cannot DOS your account by initiating OAuth flows in your name.

Do NOT call this pre-emptively. If a session may still be valid, attempt the live tool call first and only begin OAuth when it fails with upstream_auth_refresh_needed. A 'pending' check_oauth_status is not evidence that an existing session has lapsed.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubYesYour DPYC patron npub (npub1...).
dpop_tokenYesRaw 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

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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 reveals that the tool is free, requires proof of npub ownership, and explains the anti-DOS rationale. It also clarifies that a 'pending' check_oauth_status does not indicate a lapsed session. These details go well beyond a basic function statement and provide security-conscious transparency.

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

Conciseness4/5

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

The description is well-structured and front-loaded with the purpose. It contains several sentences of necessary guidance (flow, security, usage conditions). While slightly verbose, each sentence earns its place and avoids redundancy. It is not excessively long for the complexity of the OAuth flow.

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

Completeness5/5

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

Given the complexity of an OAuth flow and the presence of an output schema, the description is remarkably complete. It covers the authorization URL, the follow-up step, cost, security/privacy considerations, and when to invoke the tool. The mention of 'upstream_auth_refresh_needed' and the pending-status caveat addresses edge cases, making this fully sufficient for an agent to use correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds no new details about parameter syntax or semantics beyond what the schema already documents. It mentions using the 'same npub' but the schema already defines both parameters comprehensively. The description does not need to compensate, thus a 3 is appropriate.

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

Purpose5/5

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

The description opens with a clear action verb and resource: 'Start the OAuth2 authorization flow.' It unambiguously states the tool's primary function and distinguishes it from the related 'check_oauth_status' by explaining the sequential relationship. This exceeds a vague purpose statement and clearly differentiates from sibling tools.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use and when-not-to-use instructions: 'Do NOT call this pre-emptively... attempt the live tool call first and only begin OAuth when it fails with upstream_auth_refresh_needed.' It also names the alternative (check_oauth_status) and explains the completion flow, offering strong guidance.

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

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals a critical behavioral trait: when the balance reaches zero, patron top-ups cannot be certified and the operator must call purchase_credits. It also notes the operation is free. However, it does not explicitly state that it is read-only, though the verb 'check' implies it.

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

Conciseness5/5

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

The description is extremely concise, consisting of four sentences, each adding essential information. The first sentence states the high-level purpose, the second describes the return value, the third explains the consequence of a zero balance, and the fourth clarifies ownership. No wasted words.

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

Completeness4/5

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

Given the tool has no parameters and an output schema exists, the description provides sufficient context: it explains the return value (sats available), the significance of the balance, and the next step if zero. It could marginally improve by explicitly stating it is a read-only operation, but overall it is complete.

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

Parameters4/5

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

There are zero parameters, so the baseline is 4. The description does not need to add parameter information since none exist. It correctly avoids mentioning parameters.

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

Purpose5/5

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

The description clearly states the tool checks the operator's tax balance at the Authority, specifying it returns sats available for certifying patron credit purchases. It distinguishes itself from sibling tools like excalibur_check_balance by explicitly noting this is the operator's own funding, not a patron balance.

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

Usage Guidelines4/5

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

The description explains when to use this tool: to check sats available for patron credit certification. It also provides guidance on what to do when the balance reaches zero (call purchase_credits). However, it does not explicitly mention when not to use it or provide alternatives, leaving some room for improvement.

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

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubYesThe Nostr public key (npub1...) whose balance to check.
dpop_tokenYesRaw 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

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

With no annotations, the description carries the full burden and does so well: it discloses that the operation is free, requires proof of npub ownership, and explains the security rationale against enumeration. This goes beyond a simple read operation and gives the agent actionable behavioral expectations.

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

Conciseness5/5

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

The description is compact and front-loaded: one line for the core action, then a clarifying distinction, then cost and auth constraints. No filler or redundant repetition of schema details.

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

Completeness5/5

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 operation is a simple balance check, the description covers all essential context: what the balance is, which sibling tool to use for the other balance type, cost, and authentication. No critical gaps remain.

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

Parameters3/5

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

Schema coverage is 100% and both parameters have detailed descriptions. The tool description adds the context that npub ownership proof is required, which reinforces the dpop_token's purpose, but does not substantially improve on the schema's own parameter explanations.

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

Purpose5/5

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

The description opens with 'Check a patron's credit balance at this operator', naming a specific verb and resource. It immediately distinguishes this from the operator-side balance check by pointing to 'authority_check_balance', making the tool's scope unmistakable.

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

Usage Guidelines5/5

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

Explicitly states when to use this tool (patron spending balance) and when not to ('For the operator's own balance... use authority_check_balance instead'). It also notes the free/no-credit requirement, which helps an agent decide cost implications.

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

excalibur_check_oauth_statusAInspect

Check whether the OAuth2 authorization flow has completed.

Call after opening the authorization URL from begin_oauth and completing the login in your browser. Free. Proof of npub ownership is required: OAuth status exposes which upstream services a patron has connected.

A 'pending' result here does NOT prove an existing session has lapsed — it only reports this authorization attempt. To find out whether a session still works, attempt the live call; fall back to begin_oauth only on an explicit upstream_auth_refresh_needed error.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubYesThe same Nostr public key (npub1...) used in begin_oauth.
dpop_tokenYesRaw 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

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

With no annotations provided, the description carries full responsibility. It discloses that the tool exposes which upstream services a patron has connected, requires proof of npub ownership, and clarifies the meaning of 'pending.' While it doesn't mention error conditions or rate limits, the provided behavioral nuances are valuable and go beyond a basic read-operation description.

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

Conciseness4/5

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

The description is front-loaded with the primary purpose and then provides focused usage guidance. The second paragraph is somewhat dense but every sentence contributes critical nuance about result interpretation and fallback behavior. It is appropriately sized for the complexity of an OAuth status check.

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

Completeness5/5

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

Given the OAuth flow complexity and the presence of an output schema, the description is complete. It covers the prerequisite (begin_oauth), the required proof of npub ownership, the meaning of 'pending,' and explicit fallback logic. This gives an agent all necessary context to use the tool correctly without redundant return-type details.

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

Parameters3/5

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

Schema description coverage is 100%, with both npub and dpop_token already well-documented. The description adds a brief security context ('Proof of npub ownership is required') but doesn't further explain the parameters since the schema handles them. This matches the baseline of 3 for high schema coverage.

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

Purpose5/5

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

The first sentence clearly states the tool's function: 'Check whether the OAuth2 authorization flow has completed.' It uses a specific verb and resource, and explicitly references the begin_oauth tool to establish a clear sequence, distinguishing it from sibling tools like excalibur_begin_oauth and excalibur_session_status.

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

Usage Guidelines5/5

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

The description provides precise when-to-use instructions: call after opening the authorization URL from begin_oauth and completing browser login. It also gives explicit exclusions and fallback logic, noting that a 'pending' result does not imply session lapsed and directing the agent to attempt the live call, falling back to begin_oauth only on an explicit upstream_auth_refresh_needed error. This is exemplary usage guidance.

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

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubYesThe Nostr public key (npub1...) that purchased the invoice.
dpop_tokenYesRaw 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_idYesThe invoice ID returned by purchase_credits.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

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

With no annotations, the description carries the burden. It discloses the auth requirement ('Proof of npub ownership is required') and its purpose, plus the free cost. However, it does not mention whether the operation is read-only, any side effects, or behavior on failure/pending statuses. The 'check' verb implies read-only, but not explicitly.

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

Conciseness5/5

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

The description is two short paragraphs, front-loaded with the main purpose and followed by essential usage and auth context. Every sentence earns its place with no verbosity.

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

Completeness4/5

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

Given the tool's simplicity and the presence of an output schema, the description covers the essential pieces: purpose, timing, cost, and auth. It doesn't discuss error states or return value interpretation, but those are less critical given the output schema and the 'check' semantics.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds marginal context: it links invoice_id to purchase_credits and explains the npub/dpop_token auth purpose. But it doesn't add syntax-level detail beyond what the schema already provides.

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

Purpose5/5

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

The description opens with 'Check the payment status of a Lightning invoice' — a specific verb and resource that clearly distinguishes it from sibling tools like check_balance or check_price. It leaves no ambiguity about what the tool does.

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

Usage Guidelines4/5

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

It explicitly states when to call: 'Call after paying the invoice from purchase_credits,' and provides cost context ('Free — no credits required'). It does not explicitly mention alternatives or when not to use, but the usage context is clear enough.

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

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubNo
tool_idYesEither 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_tokenNo
tool_kwargsNoOptional 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

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

With no annotations provided, the description carries the full burden. It explicitly states that the operation is free ('Free — no credits required') and uses 'Preview' and 'Shows' to indicate a read-only, non-mutating behavior. This is valuable context beyond what a schema would provide, though edge cases and side effects are not detailed.

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

Conciseness5/5

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

The description is three concise sentences with no fluff. The first sentence states the core purpose, the second elaborates on what is shown, and the third adds a key behavioral note about cost. Every sentence earns its place.

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

Completeness4/5

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

Given the tool's simplicity and the presence of an output schema, the description adequately covers the purpose, key behavior, and cost implications. It does not explain return values (not needed due to output schema) but provides enough context for an agent to understand when and how to use it. Missing details about parameter formats are partly covered by the schema.

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

Parameters3/5

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

Schema description coverage is 50%; tool_id and tool_kwargs have useful descriptions in the schema, but npub and dpop_token are undocumented. The description adds some context by mentioning constraint effects, which aligns with tool_kwargs usage, but it does not explain the parameters explicitly or compensate for the undocumented ones. Overall it neither enhances nor detracts from the schema.

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

Purpose5/5

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

The description clearly states the tool's purpose with a specific verb ('Preview') and resource ('the effective cost of a tool call'). It also lists what the preview includes (base cost, constraint effects like discounts, free trials, surge pricing). This distinguishes it from sibling tools like get_pricing_model, which returns the pricing model configuration rather than a call-specific cost.

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

Usage Guidelines3/5

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

The description conveys that this tool is used to preview costs before making a tool call, but it does not explicitly state when to use it versus alternatives. There is no mention of exclusions or alternative tools for similar purposes. The context is clear enough for basic use but lacks explicit guidance.

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

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dpop_tokenNoRequired. The dpop_token phrase returned by ``request_npub_proof`` / ``receive_npub_proof``.
patron_npubNoRequired. The patron's npub (npub1...).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

With no annotations provided, the description takes on the burden. It clearly states 'Free, no side effects — does not evict the cache or touch relays,' which is valuable safety information. It doesn't explain potential edge cases like missing tokens or cache misses, but for a simple check tool the disclosed behavior is largely sufficient.

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

Conciseness5/5

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

The description is three sentences: purpose, use-case, and safety. It is front-loaded with the main action, every sentence adds distinct value, and there is no redundant text.

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

Completeness5/5

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

Given the tool's low complexity, the description covers purpose, usage scenario, side-effect safety, and its relationship to a sibling tool. The input schema is fully documented and an output schema exists, so the description provides sufficient context for an agent to select and invoke this tool effectively.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds minimal param semantics beyond the schema, only implying the dpop_token is used for paid calls. It does not elaborate on parameter formats or relationships beyond what the schema already documents.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Check whether a previously-cached dpop_token is still valid.' It clearly distinguishes itself from the sibling 'check_oauth_status' by stating it mirrors that tool but for the npub-proof flow, making the purpose unambiguous.

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

Usage Guidelines5/5

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

Explicitly provides usage context: 'a calling agent can ask "will my next paid call accept this dpop_token?" before burning credits on a guaranteed failure.' It also mentions the alternative 'check_oauth_status' and positions this tool as the right choice for the npub-proof flow, offering both when-to-use and exclusion guidance.

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

excalibur_create_postCInspect

Store a new post (draft or scheduled). Returns its post_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
docYesThe editable Doc — a JSON object whose consumed key is ``blocks``, a list of block objects. A minimal static post is one block: ``{"blocks": [{"text": "gm. stack sats.", "flags": []}]}``. Blocks are joined with a blank line between them to form ``text_cache``. Each block: - ``text`` (str): the block's copy (for a dynamic block, a prompt). - ``flags`` (list): editor highlight regions, each ``{"start": int, "end": int, "note": str, "colorIdx": int}`` (char offsets into ``text``) — pass ``[]`` when there are none. - ``dynamic`` (bool, optional): when true ``text`` is a prompt the server resolves with an LLM at post time; ``fallback`` (str) is posted if it fails, and ``domains``/``maxFetches``/``runtimeLimit`` bound its web access. Voice/bans live in your separate Voice profile and the schedule in ``publish_at``/``recurrence``/``cease_at`` — neither belongs in ``doc``.
npubNoRequired. Your Nostr public key (npub1...) for credit billing.
titleNoOptional human label for the post; the list falls back to the first body line when it is blank.
statusNo``draft`` or ``scheduled``.draft
cease_atNoISO-8601 stop time for recurrence; null = open-ended.
tweet_urlNo
dpop_tokenNo
publish_atNoISO-8601 first/next publish time; required when status='scheduled'.
recurrenceNo``{"freq": "daily|weekly|monthly", "interval": n}`` or null.
text_cacheNoComposed text (blocks joined) for scheduler + list excerpts.
client_req_idNoIdempotency key — re-sending the same id returns the same post without a second charge.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior2/5

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

With no annotations, the description carries the full burden. It only says 'Store a new post' and returns post_id, but does not disclose potential credit charges, the need for authentication via npub, idempotency behavior, or side effects beyond storing.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that clearly conveys the primary action and return value. No unnecessary words.

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

Completeness2/5

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

Despite a rich schema, the minimal description omits critical context such as the need for npub for credit billing, the requirement of publish_at for scheduled posts, and idempotency via client_req_id. The output schema exists, but the description itself is too sparse for a complex creation tool.

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

Parameters3/5

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

Schema description coverage is 82%, so most parameters have detailed descriptions. The tool description itself adds no parameter semantics, 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.

Purpose4/5

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

The description clearly states the tool stores a new post (draft or scheduled) and returns the post_id. The word 'new' distinguishes it from update_post, though it does not explicitly name sibling alternatives.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives like excalibur_post_nostr_message or excalibur_update_post. It does not mention prerequisites such as npub being required or that scheduled posts need publish_at.

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

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
coupon_idYes
dpop_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

The description fully discloses the cascading deletion to patron redemptions, the no-op behavior for chain steps referencing the deleted coupon, and the operator restriction. With no annotations provided, this transparency is critical and well-executed.

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

Conciseness5/5

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

The description is extremely concise, consisting of three short sentences. It front-loads the main action and uses additional sentences to add necessary behavioral and access context without unnecessary words.

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

Completeness4/5

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

The description covers the core functionality, side effects, and access restrictions. An output schema exists (per context signals), so return values are not needed. Minor omissions like error handling or prerequisites are acceptable given the tool's simplicity.

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

Parameters1/5

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

The description does not mention or explain the two parameters (coupon_id and dpop_token) despite 0% schema coverage. The meaning of coupon_id is implicit from the tool name, but dpop_token remains unexplained, leaving the agent with insufficient guidance.

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

Purpose5/5

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

The description clearly states 'Delete a coupon' with a specific verb and resource, distinguishing it from other coupon tools like excalibur_mint_coupon, excalibur_list_coupons, and excalibur_update_coupon. The mention of cascading behavior and operator restriction further clarifies the tool's unique role.

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

Usage Guidelines3/5

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

The description indicates the tool is restricted to operators, providing some usage context. However, it does not explicitly compare with similar siblings like excalibur_forget_coupon or state when to use this tool over alternatives, leaving some ambiguity.

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

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldYesThe operator credential field to remove (templated or not).
dpop_tokenYesOperator proof for this tool.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

With no annotations, the description carries the full transparency burden. It discloses idempotency (already-absent fields report `removed: false`), auth requirements (nsec-signed kind-27235 or cached dpop_token), and the destructive nature ('as destructive as a write'). It also explains the keyed-on-vaulted behavior, going well beyond a minimal statement.

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

Conciseness5/5

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

The description is front-loaded with a clear purpose, then uses exactly four additional sentences to cover distinctions, use cases, edge cases, auth, and destructive warnings. No filler — every sentence earns its place.

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

Completeness5/5

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

Given the tool's complexity (destructive, auth-gated, field-level vs row-level), the description addresses all critical aspects: what, when, auth requirements, idempotency, and return behavior (`removed: false`). Since an output schema exists, return-structure details are unnecessary. It is thorough for both new and returning agents.

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

Parameters4/5

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

The schema already describes both parameters at 100% coverage, so the baseline is 3. The description adds extra semantic nuance: for `field`, it clarifies that stored-but-untemplated fields are first-class and deletion is keyed on what is vaulted, not template declarations. For `dpop_token`, it details accepted proof types and rejects patron proofs. This pushes it above baseline, though not to a 5 since it doesn't provide exhaustive parameter syntax.

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

Purpose5/5

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

The description opens with 'Remove a single operator secret field' — a specific verb and resource that clearly differentiates it from `forget_credentials` (which wipes the whole row) and other siblings. The focus on field-level deletion and the use-case example make 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.

Usage Guidelines5/5

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

Explicitly states it is the 'field-level counterpart to forget_credentials' and gives a concrete scenario (retiring a leftover after an SDK cutover) where this tool is preferred over full re-delivery. Also notes that patron proofs are rejected, which sets the audience boundary.

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

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubYesThe patron's Nostr public key (npub1...).
fieldYesThe credential field name to remove.
dpop_tokenYesRaw 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

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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 that this is a write to a sensitive credential vault, requires ownership proof, is free, and does not affect other fields. This is solid behavioral transparency, though it omits details like error handling or idempotency.

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

Conciseness5/5

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

Two sentences, each earning its place: the first states the purpose, the second adds scope, cost, and authentication requirements. Front-loaded and free of fluff.

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

Completeness4/5

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

The description covers purpose, side-effect scope, cost, and a key prerequisite. The presence of an output schema covers return values. For a simple single-field delete, this is adequately complete, though it could mention irreversibility or what happens if the field does not exist.

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

Parameters3/5

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

The input schema has 100% description coverage for all three parameters, so the description adds no additional parameter-level meaning. It indirectly references the dpop_token requirement but does not explain any parameter beyond what the schema already provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description opens with 'Remove a single patron credential field' – a specific verb and resource. It clarifies scope ('Deletes one field... without affecting other fields') and explicitly uses 'patron' to distinguish from sibling tools like delete_operator_credential.

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

Usage Guidelines3/5

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

The description implies when to use (removing a single field) and includes a prerequisite ('Proof of npub ownership is required'), but does not mention alternatives or exclusions. Sibling tools like delete_operator_credential and forget_credentials are not referenced, leaving the agent to infer the correct choice from the name alone.

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

excalibur_delete_postAInspect

Delete a stored post. Default is a soft delete (status='archived'); pass hard=True to remove the row permanently.

ParametersJSON Schema
NameRequiredDescriptionDefault
hardNo
npubNoRequired. Your Nostr public key (npub1...) for credit billing.
post_idYes
dpop_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

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

No annotations provided, so description carries full burden. It discloses the core behavioral difference between soft and hard delete, but lacks details on reversibility, authentication requirements, or cascading effects. Adequate but not thorough.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose, second sentence explains the key parameter. No unnecessary words. Efficient and clear.

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

Completeness3/5

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

Given the availability of an output schema, return values are covered. However, the description omits authentication context (despite 'npub' and 'dpop_token' parameters) and prerequisites. For a delete tool, this is a moderate gap.

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

Parameters2/5

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

With only 25% schema description coverage, the description is needed to explain parameters. It explains 'hard' well but does not describe 'npub', 'dpop_token', or 'post_id' beyond implication. Insufficient compensation for low coverage.

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

Purpose5/5

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

The description clearly states the action (delete), the resource (stored post), and distinguishes between soft and hard deletion. It differentiates from sibling tools like excalibur_delete_coupon or excalibur_delete_snippet by specifying the resource.

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

Usage Guidelines3/5

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

The description explains when to use hard vs soft delete with the 'hard' parameter, but does not provide guidance on prerequisites (e.g., ownership, authentication) or alternatives (e.g., update tool). No explicit when-not-to-use info.

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

excalibur_delete_snippetBInspect

Delete one of your saved snippets by id. Free and owner-scoped.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubNoRequired. Your Nostr public key (npub1...).
dpop_tokenNo
snippet_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It states the destructive nature ('Delete') and owner-scoping, but omits crucial details: whether deletion is irreversible, any side effects, permission requirements beyond npub, or error handling. The lack of annotation support makes this description insufficient.

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

Conciseness4/5

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

The description is extremely concise, front-loading the action and ownership. However, it may be too brief, omitting important behavioral and parameter details. Every sentence earns its place, but more could be added without verbosity.

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

Completeness2/5

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 does not explain what the tool returns (e.g., success message, deleted snippet). It lacks constraints, idempotency, and error scenarios. Given the simplicity of a delete operation, the description is incomplete for reliable agent use.

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

Parameters2/5

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 does not add meaning to the snippet_id parameter beyond 'by id', nor does it clarify format or constraints. Since coverage is low, the description should compensate but fails to do so.

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

Purpose5/5

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

The description clearly states the action (delete) and the resource (saved snippets by id). The phrase 'Free and owner-scoped' further specifies who can use it and at what cost. This distinguishes it from sibling tools like excalibur_save_snippet and excalibur_get_snippet.

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

Usage Guidelines3/5

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

The description implies usage for deleting one's own snippets ('owner-scoped'), but does not explicitly state when to use this tool versus alternatives. No 'when not to use' or direct comparisons to siblings are provided, leaving the agent to infer appropriateness.

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

excalibur_fetch_dynamic_blockAInspect

Redeem a resolve_dynamic_block claim check (free, proof-gated).

Poll this with the claim_check from resolve_dynamic_block until status == "done" (the resolved fragment is result.text). While the job runs it returns {"status": "running", "poll_after_seconds": N}; on failure {"status": "error", ...} (the start fare is refunded); an unknown or aged-out claim returns {"status": "expired", ...}. Owner-scoped — only the npub that started the job can redeem it. Also acts as the watchdog: a stalled job is re-kicked when polled.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubNoRequired. Your Nostr public key (npub1...).
dpop_tokenNo
claim_checkYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Since no annotations are provided, the description carries full burden. It discloses polling behavior, status transitions, owner-scoping, and watchdog re-kick of stalled jobs. It lacks mention of rate limits or potential side effects but covers key behavioral traits.

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

Conciseness5/5

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

The description is a short, well-structured paragraph that front-loads the primary purpose and then details statuses and behavior. Every sentence adds value, with no unnecessary words.

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

Completeness4/5

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

With output schema present, the description covers polling protocol, status meanings, and watchdog behavior. It is nearly complete for a polling tool, though it omits details like maximum poll intervals or timeouts.

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

Parameters3/5

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

Schema description coverage is only 33% (npub only). The description adds context for claim_check by linking it to resolve_dynamic_block, but does not explain npub or dpop_token beyond schema descriptions. It provides some added value but not full compensation.

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

Purpose5/5

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

The description clearly states the tool's purpose: redeeming a claim check from resolve_dynamic_block. It specifies it is free and proof-gated, and explicitly contrasts with the initial resolve_dynamic_block call, distinguishing it from siblings.

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

Usage Guidelines4/5

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

The description provides clear when-to-use guidance: poll with the claim_check until status is 'done'. It outlines different response statuses and mentions owner-scoping and watchdog behavior. It does not explicitly state when not to use, but the context is sufficient.

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

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubYes
coupon_idYes
dpop_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

With no annotations, the description takes on full burden. It discloses key traits: cosmetic-only effect, re-redeemability, and authentication requirement. This goes beyond a simple action statement, though it omits idempotency or error handling details.

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

Conciseness5/5

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

Two sentences, no fluff. The most critical information (what it does, cosmetic nature, requirement) is front-loaded. Every sentence adds value.

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

Completeness4/5

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

Given an output schema (handling return values), the description covers the effect and prerequisite for a simple mutation. It lacks mention of edge cases (e.g., coupon not in list) but is sufficient for typical use.

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

Parameters2/5

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

Schema coverage is 0%, so description must explain parameters. It only mentions npub as 'proof', ignoring coupon_id and dpop_token. This leaves significant gaps in understanding parameter purpose, especially for dpop_token.

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

Purpose5/5

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

The description clearly states the action ('Remove a coupon from this patron's redemption list') and specifies the resource and scope. It distinguishes itself from sibling tools like delete_coupon by emphasizing the cosmetic nature and that the coupon still exists.

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

Usage Guidelines3/5

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

The description provides context ('cosmetic only', 'requires proof of npub') but does not explicitly guide when to use this tool versus alternatives like delete_coupon or redeem_coupon. The usage is implied, not explicit.

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

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubYesThe Nostr public key (npub1...) whose credentials to forget.
serviceYesThe credential service to forget.
dpop_tokenYesRaw 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

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

No annotations are provided, so the description carries full burden. It explicitly states 'always requires proof of npub ownership' and 'a deletion is as destructive as a write', disclosing destructive and auth requirements. The detailed dpop_token schema further describes exact token requirements.

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

Conciseness5/5

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

Two short paragraphs front-load the core action ('Delete vaulted credentials') and immediately follow with usage details. Every sentence provides necessary information without redundancy.

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

Completeness5/5

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

For a destructive tool with no annotations and a detailed auth parameter, the description covers what, when, and how. It explains the two credential contexts and the required proof, while the output schema presumably covers return values.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3; description enriches npub semantics by explaining operator vs patron credential use. It also reinforces the dpop_token requirement via the 'always requires proof' note, adding meaning beyond raw parameter names.

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

Purpose5/5

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

Description clearly states 'Delete vaulted credentials for a specific service and npub', using a specific verb and resource. It distinguishes from generic 'delete' siblings by scoping to service/npub and explaining operator/patron variants.

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

Usage Guidelines4/5

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

The description provides clear usage context by specifying which npub to pass for operator vs patron credentials. It doesn't explicitly mention alternatives like delete_operator_credential or delete_patron_credential, but the instructions imply it handles both cases.

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

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the read-only nature, public data source, and return fields including empty profile case. However, it does not explain handling of default empty npub or potential errors.

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

Conciseness5/5

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

The description is very concise with two sentences, front-loaded with the main purpose, and every sentence adds value without redundancy.

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

Completeness4/5

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

Given the simple one-parameter tool with output schema, the description sufficiently covers what the tool does and returns. It lacks error information but is adequate for a straightforward read operation.

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

Parameters3/5

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

Schema coverage is 0%, so description must add context. It explains npub is a Nostr public key, but doesn't clarify the default empty value or expected format. More detail on the parameter's role would be helpful.

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

Purpose5/5

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

The description clearly states the tool reads a public Nostr profile for a given npub, specifies NIP-01 kind-0 metadata, and distinguishes from sibling write tools like excalibur_publish_nostr_profile and other read tools like excalibur_get_x_profile.

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

Usage Guidelines3/5

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

The description mentions that the tool is free and requires no proof, but does not explicitly state when to use it versus alternatives or exclude cases. The differentiation from siblings is implicit through naming and context.

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

excalibur_get_notarization_proofAInspect

Generate a Merkle inclusion proof that a patron's balance was included in a Bitcoin-notarized snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubYesThe patron's Nostr public key (npub1...).
notarization_idYesThe notarization record ID.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior2/5

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 does not state whether the operation is read-only or has side effects, nor does it mention any prerequisites or error conditions. The word 'Generate' could suggest mutation, though it likely just computes a proof, leaving the safety profile unclear.

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

Conciseness5/5

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

The description is a single, concise sentence that directly conveys the tool's purpose without any redundant or extraneous information. It is front-loaded and easy to parse.

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

Completeness3/5

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

The tool is relatively simple with two well-documented parameters and an output schema. However, the description omits important context such as the requirement that a notarization must already exist, and it doesn't clarify the relationship to 'request_npub_proof' or 'receive_npub_proof'. This leaves some practical gaps, though the presence of an output schema mitigates the need to describe return values.

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

Parameters3/5

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

The input schema already provides complete descriptions for both parameters (npub and notarization_id), covering 100% of the schema. The description adds no additional semantic information beyond what the schema fields already state, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's function: generating a Merkle inclusion proof for a patron's balance in a Bitcoin-notarized snapshot. It uses a specific verb ('Generate'), identifies the resource ('Merkle inclusion proof'), and provides context, making it distinct from sibling tools like list_notarizations or request_npub_proof.

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

Usage Guidelines3/5

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

The usage is implied by the name and parameter requirements (a notarization_id and npub) but not explicitly stated. It does not mention when to use this tool instead of alternatives, nor any prerequisites like an existing notarization. The description leaves the agent to infer the appropriate context.

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

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Although no annotations are provided, the description discloses the tool's behavior: it shows which settings are configured/missing and how to deliver missing values. This adds context beyond the name, but does not explicitly state whether it is read-only or any other traits. Given its simple nature, it is fairly transparent.

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

Conciseness5/5

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

The description is three short sentences: first states purpose, second details output, third gives alternative. No fluff, every sentence earns its place.

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

Completeness5/5

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

Given no parameters and the existence of an output schema, the description sufficiently explains what the tool does and what it returns (configured/missing settings and delivery guidance). It is complete for a status tool.

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

Parameters3/5

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

The tool has zero parameters, so schema coverage is 100%. The description does not need to add parameter meaning, and the baseline of 3 is appropriate as no additional insight is required.

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

Purpose5/5

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

The description clearly states the tool 'reports configuration readiness' for the operator, specifying verb+resource. It distinguishes itself from the sibling tool 'get_patron_onboarding_status' by noting the different scope (operator vs. patron-level).

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

Usage Guidelines5/5

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

The description explicitly tells when to use this tool (for operator configuration readiness) and when not (for patron-level credential status, directing to 'get_patron_onboarding_status'). This provides clear guidance on alternatives.

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

excalibur_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).

ParametersJSON Schema
NameRequiredDescriptionDefault
npubYesThe patron's Nostr public key (npub1...).
dpop_tokenYesRaw 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

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

With no annotations provided, the description carries full responsibility for behavioral disclosure. It reveals that the tool is free, requires proof of npub ownership, never exposes values, and returns null delivered_at timestamps for vaulted secrets before timestamp recording—details beyond the schema and annotations.

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

Conciseness5/5

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

The description is compact and front-loaded with the main purpose. Each sentence earns its place: clarifying 'not values,' describing output timestamps, noting the free tier, and explaining the auth requirement and sensitivity. No redundancy or fluff.

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

Completeness5/5

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

Given the tool's low parameter count and the presence of an output schema, the description is remarkably complete. It covers purpose, output semantics, cost, authentication prerequisites, and the sensitivity rationale. There is no missing critical context typically needed for safe invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so a baseline of 3 is appropriate. The description adds a brief note that npub ownership proof is required, which relates to dpop_token, but this is more behavioral context than parameter semantics. The schema's own dpop_token description is already highly detailed.

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

Purpose5/5

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

The description opens with a precise verb and resource: 'List stored patron credential field names (not values).' It clearly distinguishes this read-only listing tool from sibling mutation tools like excalibur_delete_patron_credential and excalibur_update_patron_credential, and specifies the output scope (field names plus delivered_at timestamps).

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

Usage Guidelines4/5

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

The description states an explicit use case: 'use this to verify which fields are configured and how old each one is.' It also implies a when-not by noting 'Values are never exposed,' but it does not explicitly name alternative tools for retrieving values, so it falls short of full when/when-not coverage.

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

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dpop_tokenYesA kind-27235 Nostr event signed by patron_npub for this tool.
patron_npubYesThe patron's Nostr public key (npub1...).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool is free, requires proof of npub ownership via dpop_token, and mentions that credential presence is sensitive information. It also describes the different behavior for set-once vs dynamic services. This goes beyond the schema and gives the agent a clear picture of the tool's operation.

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

Conciseness5/5

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

The description is three sentences, each earning its place. It front-loads the primary purpose, then provides behavior details, and ends with cost and authentication notes. No filler or repetition of schema information.

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

Completeness5/5

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

Given the tool's simplicity (2 params, output schema provided), the description fully covers the necessary context: what it does for each service type, the cost, and authentication requirements. It does not need to explain return values because the output schema exists.

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

Parameters4/5

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

The schema already covers 100% of the parameters with descriptions, so the baseline is 3. The description adds meaningful context by explaining that dpop_token is proof of ownership and that it is required because the information is sensitive, which enhances understanding of why the parameter exists.

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

Purpose5/5

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

The description opens with a clear verb and object: 'Report a patron's credential readiness for this operator.' It then differentiates between set-once and dynamic/OAuth2 services, which distinguishes it from sibling tools like excalibur_get_operator_onboarding_status and excalibur_check_oauth_status.

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

Usage Guidelines4/5

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

The description explains when the tool is relevant by distinguishing between service types, indicating that for set-once services it shows configured/missing secrets, and for dynamic services it reports no credentials needed. It also notes that proof of npub ownership is required, which is a usage prerequisite. However, it does not explicitly name alternative tools or state when not to use this tool.

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

excalibur_get_postCInspect

Read one stored post by id (owner-scoped).

ParametersJSON Schema
NameRequiredDescriptionDefault
npubNoRequired. Your Nostr public key (npub1...) for credit billing.
post_idYes
dpop_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior2/5

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 whether the operation is read-only, safe, or idempotent. Error conditions (e.g., post not found) and authorization requirements beyond 'owner-scoped' are absent.

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

Conciseness4/5

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

The description is a single sentence with no wasted words. However, it could benefit from brevity-relevant details (e.g., auth hint) without becoming verbose.

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

Completeness2/5

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, return format is covered, but the description lacks usage guidance, behavioral disclosure, and parameter elaboration. The tool is simple, yet the description feels incomplete for an AI agent to invoke correctly in all contexts.

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

Parameters2/5

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

Schema description coverage is only 33% (npub documented). The description adds no semantics for post_id or dpop_token beyond implying post_id is the identifier. The phrase 'by id' does not clarify format or constraints.

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

Purpose5/5

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

The description 'Read one stored post by id (owner-scoped)' clearly states the action (Read), the resource (stored post), and the scope (by id, owner-scoped). It distinguishes from sibling tools like list_posts (multiple posts) and create/delete (write operations).

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

Usage Guidelines2/5

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 versus alternatives. The phrase 'owner-scoped' hints at access restrictions, but does not state when to choose get_post over list_posts, nor any prerequisites or limitations.

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

excalibur_get_post_metricsAInspect

Patron: raw metrics snapshot series for one owned post.

Returns the append-only post_metrics_snapshot rows (impressions, likes, clicks, cadence_key, t_offset, link_placement, snippet_ids) ordered by capture time. Empty when the post has not been harvested yet.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubNoYour npub (npub1...).
post_idYesThe post UUID whose snapshot series to return.
dpop_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

With no annotations, the description carries the burden. It discloses that data is append-only, ordered by capture time, and empty if not yet harvested. This is strong behavioral context, though it skips auth details (but 'Patron' implies ownership).

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

Conciseness5/5

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

The description is concise: three sentences that front-load the purpose and add only essential behavioral details. No redundancy or filler.

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

Completeness4/5

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

With an output schema present, the description doesn't need to detail return shape. It adds ordering, emptiness semantics, and ownership, providing enough context for a simple read-only getter.

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

Parameters2/5

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

Schema description coverage is 67%, and the description adds no parameter details. The post_id is well-described in schema, but dpop_token is undocumented in both schema and description, leaving a gap.

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

Purpose5/5

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

The description clearly states the tool returns an append-only snapshot series for one owned post, listing specific fields and ordering. This specific verb+resource+scope distinguishes it from siblings like post_performance.

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

Usage Guidelines4/5

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

It provides clear context: use for raw metric snapshots of one owned post, and notes that an empty result means the post hasn't been harvested yet. It doesn't explicitly name alternatives, but the context is unambiguous.

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

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Despite no annotations, the description fully discloses key behavioral traits: it is free, self-initializes a scaffold if no model exists, and explicitly states 'No economic data from code.' This is comprehensive for a getter.

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

Conciseness5/5

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

Two sentences, no filler. First sentence states purpose, second clarifies a special case. Front-loaded and efficient.

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

Completeness5/5

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

Given zero parameters and existence of an output schema, the description covers the essential behavioral aspects (initialization, cost, data source). No further info needed for a low-complexity tool.

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

Parameters4/5

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

No parameters exist, so schema coverage is 100%. The description does not add parameter info beyond the schema, but the baseline for zero-parameter tools is 4.

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

Purpose5/5

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

Clearly states 'Get the active pricing model for this operator', which is a specific verb-noun combination. Distinguishes from sibling tools like set_pricing_model and reset_pricing_model by being the getter operation.

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

Usage Guidelines4/5

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

Implicitly clear when to use: querying the pricing model. Mentions free cost and self-initialization behavior, but does not explicitly state when not to use or list alternatives. However, the description provides enough context.

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

excalibur_get_scheduler_logAInspect

Read recent scheduler-tick outcomes.

Each process_scheduled_posts run — fired by the Cloudflare cron Worker or a manual trigger — records its summary. This surfaces them so the FE debug log can show what the Worker is doing: the per-tick heartbeat (proof it ran) and per-post outcomes (posted / skip+error reasons like insufficient_balance or oauth_token_expired).

Owner-scoped: the operator sees every tick in full; any other proven patron sees the global heartbeat (processed count + run_at) plus only the per-post entries for THEIR OWN posts. Free; npub proof required. Returns {runs:[{run_at, summary}], scope}.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubNoYour npub (npub1...).
limitNoHow many recent runs to return (1..100).
dpop_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

With no annotations, the description discloses key behaviors: the tool is owner-scoped, requires npub proof, and returns different data based on user role. It also describes the return structure and auth requirement ('Free; npub proof required'). No contradictory information.

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

Conciseness4/5

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

The description is well-structured and front-loaded. It explains the tool's purpose, use case, scope rules, and return format. Every sentence adds value, though slightly verbose in places. Overall, it is concise for the amount of information conveyed.

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

Completeness4/5

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

The description is nearly complete for a read tool with three parameters and no output schema. It explains what the tool does, who can use it, what data is returned, and auth requirements. Sibling tool comparison is absent but not critical given the clear purpose.

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

Parameters3/5

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

The schema already covers two of three parameters with descriptions (npub and limit). The description adds context about how npub determines scope but does not elaborate on dpop_token. Given 67% schema coverage, the description provides marginal additional value beyond schema.

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

Purpose5/5

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

The description clearly states the tool reads 'recent scheduler-tick outcomes' from 'process_scheduled_posts' runs, distinguishing it from siblings like excalibur_process_scheduled_posts and excalibur_scheduler_status. It specifies the output is for debugging and shows heartbeat per tick and per-post outcomes.

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

Usage Guidelines4/5

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

The description explains when to use the tool (to debug worker behavior) and what it shows. It lacks explicit when-not-to-use or alternative tools, but the context signals and sibling list provide implicit guidance. The scope differentiation (owner vs other patrons) is clearly stated.

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

excalibur_get_snippetAInspect

Read one of your saved snippets by id (full row incl. doc block document). Free and owner-scoped. Returns {"success": true, "snippet": …} or snippet_not_found.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubNoRequired. Your Nostr public key (npub1...).
dpop_tokenNo
snippet_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

With no annotations, the description carries full burden. It discloses that the operation is read-only ('Read'), free, and owner-scoped. It also specifies the return format (success with snippet or error) but does not detail potential errors or side effects beyond 'snippet_not_found'. This is reasonably transparent for a read operation.

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

Conciseness5/5

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

The description is two sentences long with no redundancy. It efficiently conveys purpose, scope, and return format. Every sentence adds value.

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

Completeness3/5

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 (indicated) and 3 parameters, the description covers core purpose and return format. However, it lacks parameter details and does not mention sibling tools or alternatives. It is functional but not fully comprehensive.

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

Parameters2/5

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

Schema coverage is only 33%, and the description does not add any extra meaning to the parameters. The snippet_id parameter lacks format details in both schema and description. The npub and dpop_token parameters are not explained beyond the schema defaults. For low coverage, the description should compensate, but it does not.

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

Purpose5/5

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

The description clearly states the tool reads a saved snippet by ID, and distinguishes it from sibling tools like excalibur_save_snippet, excalibur_delete_snippet, and excalibur_list_snippets. The verb 'read' and resource 'snippet' are specific, and the scope 'owner-scoped' adds clarity.

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

Usage Guidelines3/5

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

The description mentions 'Free and owner-scoped', implying it should be used by the owner for their own snippets. However, it does not explicitly state when to use this tool versus alternatives like excalibur_list_snippets or excalibur_get_post. No direct exclusions or scenarios are provided.

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

excalibur_get_voiceAInspect

Read your saved writing Voice — a profile blurb plus a list of "banned construction" chips ({text, on}) the editor passes to refine_post_region. Owner-scoped; priced by the operator's pricing model (use check_price). When you have not saved a Voice yet this returns an empty one ({"voice": {"profile": "", "bans": []}}) so the editor can seed its own defaults, not an error.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubNoRequired. Your Nostr public key (npub1...).
dpop_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

With no annotations, the description carries full burden. It discloses that an empty Voice is returned if none saved, that it is owner-scoped, and that pricing applies. It does not detail authentication or error states but covers the key behavioral traits for a read operation.

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

Conciseness5/5

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

The description is three sentences long, front-loaded with the core action, and contains no verbose or redundant phrases. Every sentence adds value: purpose, return behavior, and pricing context.

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

Completeness4/5

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

Given the tool has an output schema, the description does not need to details return fields but explains the empty case and structure. It covers ownership and pricing adequately. Minor gap: no mention of error scenarios, but acceptable given output schema exists.

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

Parameters2/5

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

Schema coverage is 50% (npub has a description; dpop_token does not). The description does not add meaning for either parameter, missing a chance to explain dpop_token or clarify usage. With moderate coverage, the description should compensate but fails to do so.

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

Purpose5/5

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

The description clearly states the tool reads a saved writing Voice, including its components (profile blur and banned chips). It distinguishes from siblings like excalibur_save_voice and mentions owner-scoping and default empty return, making the purpose specific and unambiguous.

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

Usage Guidelines4/5

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

The description provides usage context: owner-scoped and priced via check_price. It implies when to use (when needing to read the Voice) but does not explicitly exclude alternatives or state when not to use it. The guidance is clear but lacks direct comparison with other tools.

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

excalibur_get_x_profileAInspect

Fetch the connected X account's handle and name for this patron (free).

Uses the patron's vaulted X OAuth token to call X's /users/me. Returns {connected: true, username, name, profile_image_url} when connected, or the OAuth situation (connected absent) when X isn't linked yet. Used to show the real @handle on the editor's tweet-card preview.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubNoRequired. Your Nostr public key (npub1...).
dpop_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

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 use of vaulted OAuth token, X API call, and return format including the unconnected state. However, it omits potential issues like token expiration, rate limits, or error conditions.

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

Conciseness5/5

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

Three sentences, each earning its place: first states purpose, second explains mechanism and return format, third gives concrete use case. No unnecessary words.

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

Completeness4/5

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

Given the low complexity and presence of output schema (return format explicitly listed), the description covers purpose, input (vaguely), mechanism, output, and use case. It lacks prerequisite guidance (e.g., OAuth must be linked) but is otherwise sufficient.

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

Parameters2/5

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

Schema coverage is 50%: only `npub` is described as 'Required. Your Nostr public key'. The description does not clarify `dpop_token` at all, leaving it undocumented. The description fails to compensate for the missing parameter documentation.

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

Purpose5/5

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

The description clearly states the tool fetches the connected X account's handle and name, specifying the resource (X account) and the action (fetch). It distinguishes itself from siblings like excalibur_get_nostr_profile (Nostr profile) and excalibur_check_oauth_status (OAuth status check).

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

Usage Guidelines3/5

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

The description implies usage for tweet-card preview and mentions OAuth token, indicating a prerequisite, but lacks explicit when-not-to-use or alternatives. It does not guide the agent to check OAuth status first or compare with similar tools.

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

excalibur_harvest_metricsAInspect

Operator-only: one cadence-aware metrics harvest sweep.

Drains due metrics_harvest_job rows (t+15m … t+28d), fetches X non_public_metrics / organic_metrics under each patron's OAuth context, and appends post_metrics_snapshot rows. A missed cadence is permanent data loss — failed jobs retry up to 5 attempts then land in the dead-letter queue; pass requeue_dead_id to retry one. Also runs as phase 3 of every process_scheduled_posts tick.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubNoThe OPERATOR's npub (npub1...); this tool is operator-only.
dpop_tokenNo
requeue_dead_idNoOptional dead-letter job UUID to requeue before the sweep.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

With no annotations provided, the description carries full responsibility and does so richly. It discloses the tool's draining behavior (mutating job rows), the data loss risk on missed cadence, the retry mechanism (5 attempts), dead-letter queue handling, the ability to requeue via requeue_dead_id, and the OAuth context requirement. These are significant behavioral traits beyond simple operation.

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

Conciseness5/5

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

The description is compact but dense: a one-line summary, a detailed operation sentence, a failure-mode sentence, and an integration sentence. Every sentence adds critical information (scope, process, risk, retry, automation context) without fluff or repetition.

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

Completeness5/5

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

Given the tool's complexity and the presence of an output schema, the description is remarkably complete. It covers the full operational flow, error handling, dead-letter queue, manual requeue option, and integration with process_scheduled_posts. No missing critical context is apparent.

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

Parameters3/5

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

Schema description coverage is 67% (npub and requeue_dead_id are described; dpop_token is not). The description adds context for requeue_dead_id as a dead-letter job UUID, but does not clarify dpop_token's purpose. This is above 50% coverage, so baseline 3 applies, with only marginal added value for parameters.

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

Purpose5/5

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

The description clearly states the tool performs a 'cadence-aware metrics harvest sweep' and details its specific actions: draining due metrics_harvest_job rows, fetching non_public_metrics/organic_metrics under OAuth context, and appending post_metrics_snapshot rows. It distinguishes itself from siblings by noting it runs as phase 3 of process_scheduled_posts, separating it from single-post metric fetchers.

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

Usage Guidelines4/5

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

The description explicitly marks the tool as 'Operator-only' and describes its cadence-aware batch behavior, implying when it should be used (for harvest sweeps) vs. per-post metric retrieval. It also mentions it runs automatically as phase 3 of process_scheduled_posts, giving context on manual vs. automatic usage. However, it does not explicitly list alternative tools or exclusion criteria.

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

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Despite no annotations being provided, the description fully discloses behavior: it notes 'Free, no side effects,' explains that renamed functions change mcp_name but keep tool_id, and details the registered:false/unregistered semantics for deployment drift detection. It even references issue numbers (#174, #175) for context. This is rich behavioral disclosure that carries the entire burden absent annotations.

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

Conciseness4/5

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

The description is well-structured with clear paragraphs covering purpose, consumers, canonical-UUID design, and wire-surface diffing, ending with 'Free, no side effects.' It's slightly verbose with some redundancy ('flag deploy drift' appears twice, the canonical-UUID point is reiterated), but each sentence earns its place and there's no fluff.

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

Completeness5/5

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

For a zero-parameter tool with an output schema present, the description is thorough. It explains the return structure (registered flags, unregistered array), the semantics of tool_id stability across renames, and the drift-detection value. Given no params to document and an output schema exists, the description fully covers what an agent needs to use this correctly.

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

Parameters4/5

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

The tool has zero parameters and 100% schema coverage (effectively empty schema, nothing to document). With 0 params, the baseline is 4. The description adds value by explaining what the output contains (registered:false, unregistered array) which orients expectations even though no parameter semantics are needed.

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

Purpose5/5

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

The description clearly states the tool returns canonical (tool_id, mcp_name, ...) for every exposed tool, which is a specific verb+resource+deliverable. It distinguishes itself from siblings by directly positioning it as the authoritative source for identity resolution, unlike list_coupons, list_posts, etc. which list domain data.

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

Usage Guidelines5/5

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

The description names concrete consumers ('Studio, agents, FE') and specific use cases ('Reconcile uses this output to UUID-join against the stored pricing model'). It explicitly states when NOT to use it ('no name-based UUID derivation, no guessing') and explains what the authoritative-canonical design solves. This gives an agent clear decision context for when this tool is the appropriate choice.

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

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

No annotations are provided, so the description carries full burden. It discloses the tool is free and does not consume credits, which is valuable beyond the obvious 'list' operation. It does not mention authentication or potential errors, but given the simplicity, this is adequate.

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

Conciseness5/5

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

The description is two sentences: first states the purpose, second adds details about output. No redundant words, front-loaded for quick understanding.

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

Completeness5/5

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

The tool is simple with no parameters and an output schema. The description explains what is returned and that it is free. This is complete for a query tool of this nature.

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

Parameters4/5

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

The input schema has zero parameters, and schema coverage is 100%. The description does not need to add parameter meaning, and it briefly lists what each constraint includes (type, category, etc.), adding context beyond the schema.

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

Purpose5/5

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

The description clearly states the tool lists all available constraint types and their parameter schemas, specifying what data is returned (type, category, description, parameter specs). It distinguishes itself from sibling tools by focusing on constraint enumeration for pricing pipelines.

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

Usage Guidelines4/5

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

The description indicates the tool is for listing constraints usable in a pricing pipeline, providing clear context. While it does not explicitly mention when not to use it or alternatives, there are no closely related sibling tools that might cause confusion.

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

excalibur_list_couponsBInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dpop_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

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

With no annotations provided, the description carries full burden. It discloses ordering and the auth restriction, but does not mention read-only nature, rate limits, or other behavioral details. Adds some value beyond the name.

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

Conciseness5/5

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

Three short sentences with no redundancy. Purpose, data field, and restriction are efficiently conveyed. Highly concise and well-structured.

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

Completeness3/5

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, return values are not needed. However, the description lacks details on error conditions, pagination, or the meaning of 'requires proof'. For a simple list tool, it is adequate but not thorough.

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

Parameters1/5

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

The only parameter (dpop_token) has 0% schema description coverage, and the tool description does not explain its purpose or usage. The description adds no value for parameter semantics.

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

Purpose4/5

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

Clearly states it lists coupons minted by the operator, ordered newest first. Provides context about the 'times_redeemed' field. However, does not distinguish from the sibling tool 'excalibur_list_my_coupons', which likely has a different scope.

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

Usage Guidelines3/5

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

Mentions 'RESTRICTED to operator – requires proof', indicating a prerequisite. No explicit when-to-use or when-not-to-use guidance, and no alternatives referenced. The constraint is noted but not elaborated.

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

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubYes
dpop_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses that both active and exhausted redemptions are returned, and explains the status field values. It also notes it is free, providing clear behavioral context.

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

Conciseness5/5

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

The description is concise with three sentences, front-loaded with the main action, and each sentence adds value without redundancy.

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

Completeness5/5

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

Given the presence of an output schema, the description sufficiently covers purpose, usage, behavior, and parameter requirement, providing complete context for a simple list tool.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It mentions the npub parameter as required, but does not explain the dpop_token parameter. This partially adds meaning but lacks full parameter documentation.

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

Purpose5/5

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

The description clearly states the verb 'list' and resource 'coupons', and specifies the scope 'this patron has redeemed on this operator', distinguishing it from similar tools like 'excalibur_list_coupons'.

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

Usage Guidelines4/5

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

The description mentions the prerequisite 'requires proof of npub', which guides usage, but does not explicitly state when not to use or list alternatives.

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

excalibur_list_notarizationsBInspect

List recent Bitcoin notarization records.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum records to return (default 20).
statusNoOptional filter (e.g., 'submitted', 'confirmed').

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior2/5

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

There are no annotations, so the description has the full burden of behavioral disclosure. It only states 'List recent,' implying a read-only operation, but does not disclose scope (e.g., own records vs all), ordering, pagination behavior, authentication requirements, 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.

Conciseness5/5

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

The description is a single, front-loaded sentence that uses every word meaningfully: verb, object, and scope. No redundancy or filler.

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

Completeness3/5

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

For a simple list tool with an output schema and complete parameter schema, the description covers the core purpose but leaves gaps in usage guidance and behavioral context. It does not explain what qualifies as 'recent' or how this tool relates to other notarization lookup tools, which would be expected given the lack of annotations.

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

Parameters3/5

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

The input schema has 100% coverage: both 'limit' and 'status' have descriptions with defaults and examples. The description adds no parameter semantics, but the baseline is 3 because the schema fully documents them.

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

Purpose5/5

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

The description uses a specific verb 'List' and a clear resource 'Bitcoin notarization records,' with 'recent' scoping. This distinguishes it from sibling tools like exacalibur_get_notarization_proof, which targets a single proof, and exacalibur_notarize_ledger, which creates a record.

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

Usage Guidelines2/5

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

No when-to-use guidance is provided, and no alternatives are mentioned. The description does not indicate when to choose this tool over related ones like exacalibur_get_notarization_proof or exacalibur_check_proof_status, nor any exclusions.

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

excalibur_list_postsAInspect

List your stored posts, server-side sorted, filtered, and offset-paginated.

Optional status filter — a single status or a comma-separated set (e.g. draft,scheduled), matched as set membership. sort_col is one of created|updated|status|scheduled (default created); sort_dir is asc|desc. search is a case-insensitive regular expression matched against the post text. date_from/date_to accept bare YYYY-MM-DD (UTC-calendar day, end-inclusive) or an ISO instant (patron-local midnight from the FE — exclusive upper bound when instant). Bound the date_field column, one of created|updated|scheduled|sent (default created). template_id filters to the sent occurrences a recurring template fired. sent_hour (0–23) with time_zone (IANA) keeps only posts whose last_sent_at local wall hour in that zone matches — used by the Performance time-of-day chart deep-link. page is 0-indexed; page_size is 1..100. Each row carries is_recurring, has_dynamic, and template_id (set on sent occurrences). Returns {posts:[…], total, page, page_size} reflecting the filtered set.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubNoRequired. Your Nostr public key (npub1...) for credit billing.
pageNo
searchNo
statusNo
date_toNo
sort_colNocreated
sort_dirNodesc
date_fromNo
page_sizeNo
sent_hourNo
time_zoneNo
date_fieldNocreated
dpop_tokenNo
template_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

With no annotations provided, the description carries the full burden — and it excels. It discloses precise edge-case semantics: UTC-calendar day is end-inclusive while ISO instants impose an exclusive upper bound, status is set-membership matched, sent_hour matches local wall-hour in a timezone, and page is 0-indexed. It also reveals the filter-reflected total behavior in the return contract — substantive behavioral detail far beyond what structured fields could convey.

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

Conciseness4/5

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

The description is front-loaded with an excellent one-sentence summary before diving into parameter details, and every sentence earns its place given the tool's complexity. However, the body is a dense wall-of-text with minor grammatical slips ('Bound the date_field column' should be 'Bounds...'), and the sent_hour sentence crams three clauses into one long construction.

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

Completeness4/5

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

For a 14-parameter tool with zero annotations and minimal schema help, the description is remarkably complete: it covers defaults, allowed values, edge cases, timezone behavior, and result shape across all meaningful dimensions. The output schema existing means the return value explanation is unnecessary. Minor deduction for the unaddressed dpop_token parameter and silence on pagination edge cases (e.g., behavior past the last page).

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

Parameters5/5

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

With schema coverage at a paltry 7% (only npub documented), the description carries the entire semantic burden and succeeds admirably. It explains 12 of 14 parameters with exact allowed values (created|updated|status|scheduled), defaults, validation constraints (page_size 1..100, sent_hour 0-23), date-format disambiguation (bare YYYY-MM-DD vs ISO instant), and matching rules (regex, set membership, wall-hour equality). Only dpop_token is left undocumented in both schema and prose.

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

Purpose4/5

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

The opening sentence — 'List your stored posts, server-side sorted, filtered, and offset-paginated' — uses a specific verb+resource and clearly scopes the tool to user posts with rich server-side processing. It implicitly distinguishes itself from sibling list tools (list_coupons, list_snippets, list_notarizations) by resource type, though it never explicitly names alternatives or contrasts itself the way the get_calls example does.

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

Usage Guidelines3/5

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

There is no explicit when-to-use or when-not-to-use guidance, and no alternative tools are named (e.g., nothing like 'for a single post, use get_post'). However, the extensive parameter semantics strongly imply the tool's use cases (time-of-day deep-links, template filtering, date-range queries), giving clear contextual usage context without ever stating exclusions or alternatives.

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

excalibur_list_snippetsAInspect

List your saved post snippets, server-side sorted, filtered, and offset-paginated. sort_col is one of favorite|created|updated|name (default favorite); sort_dir is asc|desc. search is a case-insensitive regular expression matched against the snippet name or body. date_from/date_to accept bare YYYY-MM-DD (UTC-calendar day, end-inclusive) or an ISO instant (patron-local midnight from the FE). Bound the date_field column, one of created|updated (default created). page is 0-indexed; page_size is 1..200. Free, owner-scoped. Returns {snippets:[…], total, page, page_size} reflecting the filtered set.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubNoRequired. Your Nostr public key (npub1...).
pageNo
searchNo
date_toNo
sort_colNofavorite
sort_dirNodesc
date_fromNo
page_sizeNo
date_fieldNocreated
dpop_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

With no annotations provided, the description carries the full burden. It thoroughly discloses behavior: server-side sorting/filtering, sort column and direction options, case-insensitive regex search, date parsing rules (including end-inclusive behavior), date field binding, pagination specifics (0-indexed page, page_size range), and the return shape. It also notes 'Free, owner-scoped,' which is useful context.

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

Conciseness4/5

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

The description is front-loaded with its primary purpose and contains dense, relevant information. However, it is a single lengthy paragraph that could benefit from bullet points or section breaks for readability. Every sentence earns its place, but the structure is slightly overwhelming.

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

Completeness5/5

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

Given there are no annotations, low schema coverage (10%), and an output schema that is not shown, the description provides a complete picture for a list operation. It covers all parameters, return shape, filtering semantics, pagination, and scope, making it quite complete for the task.

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

Parameters5/5

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

Schema description coverage is only 10% (only npub has an inline description). The description compensates fully by explaining every meaningful parameter: sort_col, sort_dir, search, date_from/date_to, date_field, page, page_size, and even mentions dpop_token indirectly as part of the auth context. It provides valid values, defaults, and semantic details like case-insensitivity and date formats.

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

Purpose5/5

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

The description clearly states the tool's function: 'List your saved post snippets, server-side sorted, filtered, and offset-paginated.' It uses a specific verb and resource, and the context of listing snippets clearly distinguishes it from sibling tools like excalibur_get_snippet, excalibur_save_snippet, and excalibur_delete_snippet.

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

Usage Guidelines4/5

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

The description provides clear context on when to use the tool—for listing, searching, and paginating through saved post snippets—and adds scope details ('owner-scoped'). However, it does not explicitly name alternative tools or say when not to use it, so it lacks explicit exclusion guidance.

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

excalibur_mint_couponBInspect

Create a new operator-owned discount coupon.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe catchy code patrons type to redeem (operator-scoped uniqueness).
dpop_tokenNo
total_usesNoAggregate cap across all patrons (default None = unlimited).
valid_fromYesISO-8601 datetime when the coupon becomes active.
valid_untilYesISO-8601 datetime when the coupon expires.
uses_per_patronNoHow many tool calls one patron can claim the discount on (default 1; pass null/None for unlimited within the window).
discount_percentYesPercentage off the base price (0-100).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior2/5

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

With no annotations, the description carries full burden for behavioral disclosure. It mentions 'operator-owned' but does not explain side effects, permissions, idempotency, or error behavior. The description is too vague for a mutation tool, providing minimal context beyond the basic action.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with zero wasted words. It efficiently conveys the core purpose without redundancy, making it appropriately concise.

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

Completeness2/5

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

Despite having 7 parameters and an output schema, the description is minimal and lacks critical contextual details such as ownership implications, authentication requirements, or lifecycle context. Compared to similar tools, this description under-delivers for a creation tool with no annotations.

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

Parameters3/5

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

Schema description coverage is 86%, which is high, so the baseline is 3. The description itself adds no parameter-specific details beyond what the schema already provides, so it does not exceed the baseline.

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

Purpose5/5

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

The description 'Create a new operator-owned discount coupon' clearly specifies a creation action, the resource (discount coupon), and ownership (operator-owned). It distinguishes from sibling tools like 'excalibur_update_coupon' and 'excalibur_delete_coupon' 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.

Usage Guidelines3/5

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

The description implies usage via the verb 'Create' but does not explicitly state when to use this tool versus alternatives like 'excalibur_update_coupon' or 'excalibur_redeem_coupon'. It lacks explicit context about prerequisites or scenarios where this tool is appropriate.

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

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Given no annotations, the description fairly discloses the key behavioral traits: it's a background task, Bitcoin confirmation takes 1-6 hours, and it's free. However, it doesn't mention idempotency or potential side effects.

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

Conciseness5/5

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

Three concise sentences with zero wasted words, efficiently conveying purpose, usage context, and cost.

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

Completeness4/5

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

The description explains the purpose, timing, and who can use it. With an output schema available, it doesn't need to detail return values, but could mention what triggers the task or if it's idempotent.

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

Parameters4/5

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

No parameters exist, so the baseline of 4 applies; the description adds no parameter info which is acceptable.

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

Purpose5/5

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

The description clearly states the tool builds a Merkle tree of patron balances and submits the root to Bitcoin via OpenTimestamps, with a specific verb and resource, distinguishing it from the many sibling tools.

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

Usage Guidelines4/5

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

It specifies it's an operator-only background task, indicating who should use it, but lacks explicit guidance on when not to use or alternatives.

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

excalibur_oracle_aboutCInspect

Describe the DPYC ecosystem via the Oracle. Free.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior1/5

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

No annotations are provided, so the description must fully disclose behavioral traits. It only says 'Free', which hints at no cost but does not address side effects, authentication needs, rate limits, or whether the description is static or dynamic. This is insufficient for a tool with no annotations.

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

Conciseness3/5

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

The description is extremely concise with no wasted words, but it is under-specified. It could be expanded to add more clarity without becoming verbose. A sentence that explains what the output contains would improve it.

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

Completeness2/5

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, the description is minimal. It does not explain what the Oracle provides or what the output format is. While the output schema may fill gaps, the description should offer more context for users to understand the tool's purpose.

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

Parameters3/5

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

There are no parameters, and schema coverage is trivially 100%. The description adds no meaning beyond the schema, which already declares no parameters. A baseline of 3 is appropriate because the schema covers everything.

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

Purpose4/5

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

The description states 'Describe the DPYC ecosystem via the Oracle', which clearly indicates the verb 'describe' and the resource 'DPYC ecosystem'. However, it lacks specificity about what aspect of the ecosystem is covered, and the term 'Oracle' is not explained. It distinguishes from sibling tools like excalibur_oracle_get_tax_rate or excalibur_oracle_lookup_member, but could be more precise.

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

Usage Guidelines2/5

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. Among many sibling oracle tools (e.g., excalibur_oracle_how_to_join, excalibur_oracle_network_advisory), the description provides no context for when to choose this one.

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

excalibur_oracle_get_tax_rateBInspect

Get the current DPYC certification tax rate. Free.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior2/5

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

With no annotations provided, the description carries the full burden. It only mentions 'Free' which hints at no cost, but lacks details on read-only nature, idempotency, or any side effects. For a tool with no annotations, more behavioral context is expected.

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

Conciseness5/5

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

The description is extremely concise with a single sentence. Every word is meaningful and there is no extraneous content.

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

Completeness3/5

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

Given the simplicity (no parameters, simple output), the description is adequate but could be improved by stating what the tax rate is applied to or any prerequisite conditions. The mention of 'Free' adds value, but more context like 'read-only' or 'call anytime' would enhance completeness.

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

Parameters4/5

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

The input schema has zero parameters, so there is no need for parameter descriptions. According to the baseline rule for 0 parameters, a score of 4 is appropriate as the description doesn't need to add extra meaning.

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

Purpose4/5

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

The description clearly states the tool's function: getting the current DPYC certification tax rate. The word 'Free' provides additional context. However, it does not explicitly distinguish this tool from sibling tools like excalibur_oracle_network_advisory or excalibur_check_price.

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

Usage Guidelines2/5

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. There is no mention of prerequisites, typical contexts, or situations where a different tool would be more appropriate.

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

excalibur_oracle_how_to_joinBInspect

Get DPYC onboarding instructions from the Oracle. Free.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior2/5

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

With no annotations provided, the description carries full burden. It only mentions the tool returns instructions and is 'Free', but does not disclose any behavioral traits like whether it requires authentication or how it behaves.

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

Conciseness5/5

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

Extremely concise: 6 words in one sentence. Front-loaded with the key action and resource. No unnecessary words.

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

Completeness4/5

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

Given zero parameters and an output schema, the description adequately identifies the tool's purpose. However, it could briefly clarify what 'DPYC' stands for or what type of instructions are provided.

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

Parameters4/5

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

No parameters exist, so baseline is 4. The description adds no parameter meaning but is not required to.

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

Purpose4/5

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 'DPYC onboarding instructions from the Oracle'. It distinguishes itself from sibling Oracle tools like 'oracle_about' and 'oracle_lookup_member' by focusing on onboarding instructions.

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

Usage Guidelines2/5

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

No guidelines on when to use this tool versus alternatives. The description does not mention 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.

excalibur_oracle_lookup_memberBInspect

Look up a DPYC community member by npub. Free.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior2/5

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

With no annotations, the description must disclose behavior. It only mentions it's free, but omits authentication requirements, rate limits, error handling (e.g., invalid npub, member not found), and whether it has 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.

Conciseness4/5

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

The description is a single concise sentence, front-loaded with the core action. However, it could include additional context without becoming verbose, so it doesn't achieve absolute efficiency.

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

Completeness3/5

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

Given the tool's simplicity (one parameter, lookup), the description covers the basics. However, it lacks context on input validation, response format (though output schema exists), and edge cases. It is minimally viable but not complete.

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

Parameters2/5

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

Schema coverage is 0% (no description for npub). The description merely repeats the parameter name without explaining what an npub is or its expected format (e.g., hex, bech32). This fails to compensate for the missing schema documentation.

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

Purpose5/5

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

The description clearly states the action 'Look up', the resource 'DPYC community member', the key identifier 'npub', and adds a bonus feature 'Free'. It effectively distinguishes from sibling tools like excalibur_oracle_about or excalibur_get_nostr_profile.

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

Usage Guidelines2/5

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. With a large set of sibling tools, the agent would benefit from conditions like 'Use this for DPYC members, use excalibur_get_nostr_profile for general Nostr profiles.'

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

excalibur_oracle_network_advisoryBInspect

Get active network advisories from the Oracle. Free.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only mentions that the tool is 'Free', implying no cost, but provides no information on idempotency, side effects, permissions, or error handling. This is insufficient for informed invocation.

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

Conciseness5/5

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

The description is extremely concise, consisting of two short sentences. Key information (action, resource, cost) is front-loaded with no filler. Every word earns its place.

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

Completeness3/5

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

Given the absence of parameters and the presence of an output schema, the description does not need to explain return values. However, it fails to clarify what 'network advisories' entail or how the output is structured, leaving some contextual gaps for a tool with many siblings.

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

Parameters4/5

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

The tool has zero parameters, so the schema coverage is trivially 100%. Per the baseline rule, a score of 4 is appropriate since there is no need for the description to add parameter semantics.

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

Purpose4/5

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

The description clearly states the action (get) and resource (active network advisories), identifying the tool's primary function. It distinguishes from sibling oracle tools like 'oracle_about' and 'oracle_get_tax_rate', but does not define what constitutes a 'network advisory', leaving some ambiguity.

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

Usage Guidelines2/5

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. The description lacks any conditions, prerequisites, or exclusions, forcing the agent to rely solely on the tool name and context.

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

excalibur_post_nostr_messageAInspect

Publish a public Nostr note (kind 1) authored by your proven npub.

eXcalibur cannot sign a note as you — a Nostr event must be signed by the key it claims to come from, and eXcalibur never holds your nsec. So for this one note it mints a fresh, ephemeral "scribe" keypair, signs with it, and p-tags YOUR npub as the author. The p-tag renders the note as a real mention and places it in your own Nostr mentions, so you can see — and disown — anything published in your name.

The author is always your proven npub from this session (the same npub you pass for billing); it is never a free-form argument, so no caller can scribe as anyone else.

The note publishes to the DPYC relay set. The call succeeds if at least one relay accepts it; the response lists every relay's accept/reject and the accepted/attempted counts so you can see the note's real reach — a one-relay publish never reads as a clean broadcast.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubNoRequired. Your PROVEN Nostr public key (npub1...). You are recorded as the note's author.
messageYesThe note text to publish.
dpop_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

With no annotations, the description carries the full burden and delivers exceptionally: it discloses that eXcalibur cannot sign as the user, mints an ephemeral scribe keypair, p-tags the user's npub, publishes to the DPYC relay set, and succeeds if at least one relay accepts. It also explains the response contents and the disowning ability.

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

Conciseness4/5

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

The description is four paragraphs and somewhat repetitive about the author being the proven npub, but each sentence carries meaningful behavioral or contextual information. It is not bloated with irrelevant details, though a more condensed version could earn a 5.

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

Completeness4/5

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

The description thoroughly covers signing, authorship provenance, relay behavior, and the success/failure condition, which is impressive for a complex tool. Minor gaps include no explanation of dpop_token, no explicit statement about zero-relay failure behavior, and no mention of prerequisites like authentication or billing.

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

Parameters3/5

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

The schema description already covers npub and message, and the description adds valuable context for npub (proven, session-bound, billing correlation, never free-form). However, dpop_token is completely unexplained in both schema and description, and with 67% coverage, the description does not fully compensate for that gap.

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

Purpose5/5

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

The description opens with 'Publish a public Nostr note (kind 1) authored by your proven npub,' which is a specific verb+resource+scope. It clearly distinguishes this from sibling tools like excalibur_post_tweet or excalibur_create_post by specifying Nostr note, kind 1, and the author constraint.

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

Usage Guidelines3/5

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

The description explains constraints and mechanics, but never explicitly says when to use this tool versus alternatives such as excalibur_post_tweet or excalibur_create_post. It implies usage through the name and context, but provides no exclusions or direct comparisons to sibling tools.

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

excalibur_post_performanceBInspect

Patron: derived reach scores across your harvested post corpus.

Computes escape velocity (t+15m vs rolling median), breakout ratio (final reach ÷ rolling-median final reach; suppressed below 5 posts), link-placement cohort medians, and snippet/voice attribution from the durable snapshot store — signals that come from owning the curve, not proxying a single X endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubNoYour npub (npub1...).
dpop_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

With no annotations, the description carries full responsibility. It discloses the data source (durable snapshot store), a data limitation (suppressed below 5 posts), and clarifies that it is derived rather than a direct API proxy. This is substantial behavioral context, though it omits auth requirements or 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.

Conciseness3/5

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

The description is relatively short (two sentences) and the first sentence front-loads the purpose. However, the second sentence is dense with jargon and includes marketing fluff like 'owning the curve', which does not add functional clarity. Some phrases could be simplified without loss of meaning.

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

Completeness3/5

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

The description covers key computational aspects and mentions a suppression threshold, and an output schema exists so return values need not be described. Yet it is vague about the overall output structure, data freshness, and prerequisites beyond having a harvested corpus, leaving some gaps for a complex analytics tool.

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

Parameters2/5

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

The description provides no information about the two parameters (npub, dpop_token) and does not explain dpop_token's role. Schema coverage is only 50% (npub described, dpop_token not), so the description fails to compensate for the gap, leaving the token parameter ambiguous.

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

Purpose4/5

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

The description clearly states the tool computes derived reach scores across a harvested post corpus, enumerating specific metrics (escape velocity, breakout ratio, link-placement cohort medians, snippet/voice attribution). The verb+resource are present, and the mention of 'not proxying a single X endpoint' distinguishes it from direct metric tools, though it could be more explicit about the overall 'post performance' scope.

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

Usage Guidelines3/5

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

The description implies usage for aggregated, derived analytics across multiple posts and contrasts with 'proxying a single X endpoint', giving a sense of when it's appropriate. However, it does not explicitly name alternative tools or state when to use this instead of excalibur_get_post_metrics or excalibur_harvest_metrics, and no exclusions are mentioned.

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

excalibur_post_performance_infographicCInspect

Patron: SVG infographic of post performance (gold-steel theme).

Mirrors account_statement_infographic — a dark-themed SVG of corpus size, median t+15m impressions, top posts, and link-placement cohorts.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubNoYour npub (npub1...).
dpop_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions it 'Mirrors account_statement_infographic' and lists included metrics (corpus size, median t+15m impressions, etc.), but it does not state whether the tool is read-only, whether it requires OAuth or patron credentials, what side effects occur, or how the SVG is returned. The 'Patron:' prefix hints at access restrictions but is ambiguous.

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

Conciseness5/5

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

The description is extremely concise: two sentences that front-load the purpose and then add relevant detail about theme and content. Every sentence contributes value, with no redundant filler or vague jargon.

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

Completeness3/5

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

The description gives a good overview of the output content and theme, but it omits critical context about authentication, prerequisites, and parameter usage. While the presence of an output schema reduces the need to describe return values, the tool still requires npub and dpop_token, and the description doesn't explain how these are used or why they are needed. This leaves the tool somewhat incomplete for an agent to invoke confidently.

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

Parameters2/5

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

The description provides no explanation of the 'npub' and 'dpop_token' parameters beyond what the schema already gives for npub. The 'dpop_token' parameter is entirely undocumented in both the schema and description, leaving a significant gap. Since schema coverage is only 50%, the description should have clarified the role of the token but did not.

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

Purpose4/5

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

The description clearly states this tool produces an 'SVG infographic of post performance' with a specific gold-steel theme, which identifies the resource and output type. It also references the sibling 'account_statement_infographic' to give context, but it doesn't explicitly state the action verb (e.g., 'generate' or 'create') nor directly contrast with 'excalibur_post_performance' for data vs. infographic.

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

Usage Guidelines2/5

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

The description implies similarity to 'account_statement_infographic' but provides no explicit guidance on when to use this tool versus alternatives like 'excalibur_post_performance' or other infographic tools. There is no mention of scenarios, prerequisites (e.g., being a patron), or exclusions, leaving the agent to infer usage context.

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

excalibur_post_tweetAInspect

Post a text tweet with markdown formatting converted to Unicode rich text.

Accepts standard markdown inline formatting and converts it to Unicode Mathematical Alphanumeric Symbols that render as styled text on X:

**bold**          -> bold
*italic*          -> italic
***bold italic*** -> bold italic
`monospace`       -> monospace
ParametersJSON Schema
NameRequiredDescriptionDefault
npubNoRequired. Your Nostr public key (npub1...) for credit billing.
textYesTweet content with optional markdown formatting.
dpop_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

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

With no annotations provided, the description carries the transparency burden. It discloses the markdown-to-Unicode conversion behavior and gives examples, which is valuable. However, it omits any mention of authentication requirements, credit billing, or the fact that tweeting is a permanent public action. The npub billing detail appears only in the schema, not the description.

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

Conciseness5/5

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

The description is compact and front-loaded, leading with the core purpose and following with a concise explanation and examples. Every sentence earns its place, and the use of a code block makes the markdown conversion rules clear without unnecessary verbosity.

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

Completeness4/5

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

The tool has an output schema, so return values need no description. The main behavior (markdown conversion) is thoroughly explained. However, for a mutation tool with billing implications, one might expect mention of prerequisites like authentication or credit balance, though the npub parameter in the schema hints at billing. The description is mostly complete for its intended use case.

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

Parameters3/5

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

Schema description coverage is 67% (npub and text described, dpop_token not). The description adds meaningful semantics for the 'text' parameter by explaining markdown formatting and showing conversion examples. However, it provides no help for the undocumented dpop_token, and the npub description is already in the schema. Overall, the description adds some value but does not fully compensate for the coverage gap.

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

Purpose5/5

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

The description uses a specific verb ('Post') with a clear resource ('text tweet') and adds the unique behavior of converting markdown to Unicode Mathematical Alphanumeric Symbols. This clearly distinguishes it from sibling tools like excalibur_post_tweet_image (image tweet) and excalibur_create_post.

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

Usage Guidelines3/5

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

The description implies usage for text tweets requiring markdown formatting, but it does not explicitly state when to choose this tool over alternatives like excalibur_create_post or excalibur_post_nostr_message. No exclusions or alternative comparisons are provided.

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

excalibur_post_tweet_imageAInspect

Post a tweet with a hero banner image to X/Twitter.

Provide either an image_url (fetched and attached) or banner_svg (rendered to PNG and attached). Text supports the same markdown formatting as post_tweet.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubNoRequired. Your Nostr public key (npub1...) for credit billing.
textYesTweet content with optional markdown formatting.
image_urlNoURL of an image to attach to the tweet.
banner_svgNoSelf-contained SVG markup string, converted to PNG.
dpop_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It reveals that image_url is fetched and attached, and banner_svg is rendered to PNG, adding value beyond the schema. However, it does not disclose authentication requirements, side effects, or behavior when both image parameters are provided, which is a gap for a mutating tool.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the primary purpose and immediately followed by actionable image option instructions. Every sentence earns its place without fluff.

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

Completeness4/5

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

Given the tool has 5 parameters, an output schema, and a large sibling set, the description provides the core workflow and references post_tweet for formatting. It does not mention the npub billing requirement (though the schema does) or what happens if both image_url and banner_svg are supplied, but overall it is sufficiently complete for an agent to invoke correctly.

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

Parameters4/5

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

Schema description coverage is high (80%), so the baseline is 3. The description adds meaningful semantics for the two image parameters by explaining they are 'fetched and attached' and 'rendered to PNG and attached', which goes beyond the schema's simple 'URL of an image to attach' and 'SVG markup string'. It does not explain dpop_token, but that is a minor gap.

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

Purpose5/5

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

The description states 'Post a tweet with a hero banner image to X/Twitter' with a specific verb and resource, clearly distinguishing itself from the sibling post_tweet by the hero banner image addition. It also specifies the two image source options, making the purpose unambiguous.

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

Usage Guidelines4/5

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

The description gives clear usage instructions: 'Provide either an image_url (fetched and attached) or banner_svg (rendered to PNG and attached)' and references post_tweet for formatting. It clearly implies this is the image-attaching variant, but does not explicitly state when not to use it or compare it to alternatives beyond the format reference.

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

excalibur_process_scheduled_postsAInspect

Launch a publisher for every due post (operator-only).

Selects scheduled posts whose publish_at has arrived, claims each atomically, and starts one background publisher per post. It does NOT publish: composing content, billing the owner, posting to X and recording the outcome all belong to the publisher, which runs on the async job queue and so may take the minutes a dynamic block needs. This call returns as soon as the work is dispatched — expect it to be fast even when the publishing itself is slow, and read per-post outcomes from get_scheduler_log or the post rows.

Requires the operator's npub proof; the trigger itself is free. Returns {kind: "tick", processed, launched, contended}.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubNoThe OPERATOR's npub (npub1...); this tool is operator-only.
dpop_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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 that the tool claims posts atomically, starts background publishers, returns immediately, and that the actual publishing may take minutes. It also specifies the return format and the operator requirement. This is highly transparent.

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

Conciseness5/5

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

The description is succinct and front-loaded with the core action. Each sentence adds essential information (operator-only, atomic claim, async behavior, outcome retrieval, return format). No unnecessary words or repetition.

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

Completeness5/5

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

Given the tool's complexity and the presence of an output schema (implied by description of return format), the description covers all critical aspects: purpose, prerequisites, behavior, outcomes, and caveats. It is complete for an agent to select and invoke correctly.

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

Parameters3/5

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

Schema coverage is 50%, with only npub having a description. The description adds value by stating 'Requires the operator's npub proof', reinforcing the schema. However, dpop_token is undocumented in both the schema and description. The description compensates partially but not fully for the low coverage.

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

Purpose5/5

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

The description clearly states the tool launches a publisher for every due post, operator-only. It specifies the action (selecting, claiming, starting publishers) and distinguishes from the actual publishing process, which is done by a separate publisher. This differentiates it from sibling tools that handle other tasks.

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

Usage Guidelines4/5

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

The description explains when to use the tool (for due scheduled posts) and what it does not do (publishing). It also mentions that outcomes can be read from get_scheduler_log or post rows, providing guidance for follow-up. While it does not explicitly list alternatives, the context is sufficient for an AI agent to understand usage.

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

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubNoThe patron's Nostr public key the event must be signed by.
signed_eventNoA JSON-encoded, client-signed kind-0 event.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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 well: it discloses the server never holds the nsec, verifies the event signature against the npub, relays to public relays, and that authorization comes purely from the signature. It stops short of describing failure modes or relay selection, but the core behaviors are transparent.

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

Conciseness5/5

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

The description is concise and front-loaded with the main purpose. The three sentences each add essential information: what it does, how the signed event is provided, and why the signature is sufficient. No wasted words.

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

Completeness4/5

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

Given the tool's moderate complexity and the presence of an output schema, the description covers the key aspects: the publishing flow, the security model, and the authorization mechanism. It does not explain return values or error cases, but the output schema likely handles that, and the description is adequate for a straightforward publish action.

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

Parameters3/5

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

Schema description coverage is 100%, so both npub and signed_event are already clearly described in the schema. The description adds context about the signature-checking relationship between them, but does not offer significant new parameter-level semantics beyond that.

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

Purpose5/5

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

The description clearly states the tool publishes a client-signed kind-0 Nostr profile to relays for a given npub. It uses a specific verb ('publish') and resource ('kind-0 profile'), and the client-signed nature distinguishes it from other Nostr publishing tools like excalibur_post_nostr_message.

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

Usage Guidelines4/5

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

The description explains the expected workflow: the frontend signs the kind-0 event and passes it here, with the server verifying the signature. It also clarifies the security constraint ('The wheel never holds a patron nsec'), implying this tool is for scenarios where key custody is avoided. However, 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.

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubYesThe Nostr public key (npub1...) the credits will fund.
dpop_tokenYesRaw 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_satsNoSatoshis to purchase (default 1000).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

With no annotations, the description carries the full burden. It discloses that the tool creates an invoice (not immediate credit), requires proof of npub ownership, and is free. It also indicates that payment is confirmed via check_payment, which is important behavioral context not in the schema.

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

Conciseness5/5

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

The description is compact and front-loaded: first sentence states the purpose, followed by a concise workflow and cost note. 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.

Completeness5/5

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

The description covers the entire flow: creates invoice, payment via any wallet, follow-up with check_payment, and the auth requirement. It also notes the cost. Output schema exists, so return details are not needed. Given the tool's simplicity, this is complete.

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

Parameters3/5

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

Schema coverage is 100% and parameter descriptions are already detailed. The tool description reinforces that dpop_token is proof of ownership but does not add syntax or format details beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description states 'Buy credits via Bitcoin Lightning' with a specific verb and resource. It clearly distinguishes from siblings by explaining it creates a Lightning invoice and leads to a check_payment workflow, unlike balance checks or other tools.

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

Usage Guidelines4/5

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

It gives clear context on when to use: to purchase credits, and it names check_payment as the next step, implying a workflow. It also notes 'Free — no credits required to call,' which clarifies a prerequisite. However, it does not explicitly mention alternatives 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.

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
serviceNoRequired. The credential service name (must match the service used in request_credential_channel).
dpop_tokenNoRequired. The session phrase returned by request_credential_channel for this exact channel.
sender_npubNoRequired. The npub that sent the credentials.
credential_cardNoOptional. An ncred1... card to redeem directly (bypasses the relay drain; dpop_token not needed).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

With no annotations, the description carries full burden and delivers: wrong-session DMs are deleted and sender NACK'd, scanning stops at first match, queue is drained on no match, coupon card bypasses relay, and the payment client is reinitialized without restart. This is rich, specific behavioral disclosure.

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

Conciseness5/5

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

The description is front-loaded with a one-sentence purpose, then flows logically through call conditions, deterministic behavior, failure handling, and optional card path. Every sentence earns its place; the detail is necessary for a destructive one-shot operation.

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

Completeness5/5

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

For a complex, side-effect-heavy tool with no annotations, the description covers when to call, what happens on success/failure, destructive side effects, and the no-retry rule. An output schema exists, so return-value details are not required. It is fully contextual.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds relational meaning by grouping `(sender_npub, service, dpop_token)` as the response identifier and explaining that `credential_card` bypasses relay access and makes `dpop_token` unnecessary. However, the schema says 'Required' in prose but has no actual `required` array, which creates minor ambiguity.

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

Purpose5/5

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

The description clearly states the tool's function ('Pick up credentials from the Secure Courier') and explicitly positions it as completing the CREDENTIAL-DELIVERY flow. It differentiates from the sibling `receive_npub_proof` by naming it as the ownership-proof counterpart.

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

Usage Guidelines4/5

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

It gives explicit timing guidance ('Call this only after the user confirms they have replied') and clear prohibitions ('Do NOT poll, loop, or retry'). It names the counterpart tool, but does not fully enumerate all alternative scenarios or when not to use the tool beyond these constraints.

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

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dpop_tokenNoRequired. The dpop_token returned by request_npub_proof.
patron_npubNoRequired. The patron's npub to receive proof from.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Despite no annotations, description discloses deterministic one-shot retrieval, relay scoping, deletion/NACK of mismatched DMs, proof semantics (signed DM proves ownership), no raw token storage, and free pricing – far beyond baseline.

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

Conciseness5/5

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

Dense and layered: starts with a one-line purpose, then flow context, critical call timing, behavior, and storage facts. No filler; each sentence adds necessary guidance.

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

Completeness5/5

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

Covers prerequisites, timing, failure behavior, security model, return value, and downstream usage expectations. Even with an output schema present, the description provides full operational context for a nuanced one-shot protocol tool.

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

Parameters3/5

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

Schema coverage is 100% with both parameters described. Description reinforces that dpop_token comes from request_npub_proof and that both must be supplied, but adds no new parameter-specific format or constraints beyond schema.

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

Purpose5/5

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

Description clearly states it receives npub ownership confirmation from a patron, names the flow (npub-OWNERSHIP-PROOF), and identifies receive_credentials as the credential-delivery counterpart, differentiating it from siblings.

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

Usage Guidelines5/5

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

Explicit when-to-use: 'Call this only after the user confirms they have replied.' Explicit prohibitions: 'Do NOT poll, loop, or retry.' Explains consequence if called too early and names the alternative tool receive_credentials.

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

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes
npubYes
dpop_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

With no annotations provided, the description fully discloses behavior: it validates the coupon window and cap, records per-patron redemption, auto-applies discount on subsequent calls, requires npub proof, and is idempotent. This is comprehensive.

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

Conciseness5/5

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

The description is a single, well-structured paragraph that starts with the action and provides necessary details (validation, idempotency, cost) without unnecessary words. Every sentence adds value.

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

Completeness5/5

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

Given the tool's complexity (redemption with side effects and auto-application of discount), the description covers the essential behavioral aspects. The existence of an output schema excuses missing return value details. No gaps identified.

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

Parameters4/5

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

The description explains 'code' as the coupon name and 'npub' as required for proof. The dpop_token parameter defaults to '' and is not explained, but overall the key parameters are well-described despite 0% schema coverage, exceeding the baseline for low coverage.

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

Purpose5/5

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

The description clearly states 'Claim a coupon by its name' and outlines the process of looking up a coupon by code, validating constraints, and recording a redemption. It distinguishes from siblings like mint_coupon (creation), list_coupons (listing), etc., and mentions idempotency.

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

Usage Guidelines4/5

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

The description implies usage context: it is free, requires npub, and subsequent paid calls auto-apply discount. It does not explicitly list when not to use but contrasts well with sibling tools, making the appropriate use case clear.

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

excalibur_refine_post_regionAInspect

Refine a flagged region of a post with an LLM — server-side.

The operator's LLM key stays in the vault and never leaves the server. Send the flagged region, the surrounding full_text, an optional instruction (what to change), and the editor's voice profile + bans (JSON array or comma list of banned constructions). Returns {"success": true, "suggestions": [...3 strings...]}.

Paid: the AI cost is metered as a tollbooth fare. The fare is refunded if no LLM key is configured or the upstream call returns nothing.

ParametersJSON Schema
NameRequiredDescriptionDefault
bansNoBanned constructions — JSON array or comma-separated (optional).
npubNoRequired. Your Nostr public key (npub1...) for credit billing.
voiceNoVoice-profile text fed to the model (optional).
regionYesThe flagged span to rewrite.
full_textNoThe whole tweet, for context.
dpop_tokenNo
instructionNoWhat the editor wants changed (optional).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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 discloses server-side processing, that the LLM key never leaves the vault, the metered billing as a tollbooth fare, and refund conditions (no LLM key or empty upstream response). It also clearly states that the tool returns suggestions rather than applying edits directly, which is essential 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.

Conciseness4/5

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

The description is concise and front-loaded with the core purpose. It uses three short paragraphs: what it does, how to use it, and billing/refund policy. Every sentence contributes useful information with no filler. It could be slightly tighter, but it is appropriately sized for a paid, multi-parameter tool.

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

Completeness4/5

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

Given the tool's complexity (paid, 7 parameters, output schema), the description covers the key aspects: input semantics, return value with exact structure, and billing implications. It leaves some gaps, such as the purpose of dpop_token and explicit error handling, but the output schema and sibling context fill some of these. Overall it is complete enough for an agent to invoke the tool correctly.

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

Parameters4/5

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

Schema coverage is 86%, with most parameters described in the schema. The description adds cohesion by explaining how region, full_text, instruction, voice, and bans fit together in the workflow. It also clarifies the bans format and the billing role of npub. While the schema already provides parameter-level details, the description adds cross-parameter context that helps the agent construct a correct request.

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

Purpose5/5

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

The description opens with a clear verb-object: 'Refine a flagged region of a post with an LLM.' It specifies the exact scope (flagged region) and method (LLM, server-side), distinguishing it from siblings like update_post or create_post. It also states the return format, reinforcing the tool's purpose as a suggestion generator rather than a direct editor.

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

Usage Guidelines4/5

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

The description clearly implies when to use this tool: when a post region is flagged and needs LLM-based refinement. It explains what inputs to send and what to expect in return. However, it does not explicitly mention alternatives or exclusions, such as 'for full post edits use update_post' or 'when no LLM key is configured, use something else.' The context is clear but not exhaustive.

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

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesThe details — which tool, what was wrong, what you expected.
npubYesYour Nostr public key (npub1...); the report's author of record.
titleYesOne-line summary of the problem.
tool_nameNoOptional: the specific tool the report is about (e.g. "schwab_get_option_chain").
dpop_tokenYesRaw 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

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

With no annotations, the description carries the full burden and does so thoroughly. It discloses the fee ('Costs a small fee'), public visibility ('The report is PUBLIC'), attribution to npub, lack of verification ('nothing is verified here'), and the return payload (repo, number, url). These are important behavioral traits beyond any structured metadata.

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

Conciseness5/5

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

The description is multi-sentence but each sentence contributes essential information—purpose, trigger condition, npub requirement, fee, publicity, return values, and unconfigured fallback. It is well-structured and front-loaded with the core purpose, with no fluff or redundancy.

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

Completeness5/5

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

Given the tool's complexity (5 params, output schema, fee, auth requirement), the description is comprehensive. It explains return values, error/unconfigured behavior, costs, and attribution while relying on the output schema for structural details. This is complete for an agent to decide when and how to invoke the tool.

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

Parameters4/5

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

The input schema has 100% description coverage, so the baseline is 3, but the tool description adds meaningful context for parameters like npub ('author of record') and the fee implication. The schema itself already extensively documents dpop_token requirements, so the description does not need to repeat those details.

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

Purpose5/5

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

The description opens with 'File a field report about this service as a GitHub issue on the operator's repo,' providing a specific verb and resource. It clearly distinguishes this tool from the many sibling tools by focusing on reporting issues with tool metadata or responses, which no other sibling does.

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

Usage Guidelines5/5

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

It explicitly states when to use the tool: 'Found a tool's metadata or response wrong or confusing?' and describes the expected outcome (GitHub issue on the operator's repo). It also covers the non-configured case with 'issue reporting not configured,' giving clear context for conditional use.

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

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNooptional message for the Authority owner.
dpop_tokenNooperator-npub ownership proof (inline kind-27235 or cached token).
service_urlNothis operator's MCP endpoint (advertised to the Authority).
authority_npubYesnpub of the Authority to request adoption from.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the restriction to the operator, the requirement to prove control of the npub, the use of the operator's nsec to mint an inline ownership proof, the MCP-to-MCP delivery, and the post-condition that the Authority records it as pending. This is substantial behavioral disclosure, though it does not mention potential side effects like external network calls or reversibility.

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

Conciseness4/5

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

The description is dense but every sentence contributes unique information: the action, restrictions, process steps, and follow-up. It is somewhat long, but the complexity of the operation justifies the length. The use of a metaphor ('deferred courtship') adds flavor without being wordy.

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

Completeness4/5

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

Given the tool's complexity (4 parameters, output schema, no annotations), the description covers the purpose, usage context, security implications, process, and expected outcome. It also references the sibling tool 'adoption_status' for progress tracking. The only minor gap is not explicitly stating what happens if the caller is not the operator, but the 'RESTRICTED' flag implies it.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, but the description adds semantic context about parameters. It explains why dpop_token is required ('requires proof the caller controls this operator's npub'), what service_url is ('this operator's MCP endpoint'), and the overall role of authority_npub. This goes beyond the schema by explaining the underlying purpose of each parameter.

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

Purpose5/5

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

The description uses a specific verb ('Ask') and resource ('Authority to adopt this operator') and clearly distinguishes this from siblings like 'adoption_status' by framing the adoption request as a deferred courtship process. It clearly states the action and outcome, making it unambiguous which tool to call.

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

Usage Guidelines4/5

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

The description provides clear context: it is restricted to the operator, describes the flow of resolving the Authority's endpoint, minting a proof, and delivering the request. It explicitly points to 'Poll adoption_status for progress' as a follow-up, which serves as guidance for the next step. It does not explicitly state when not to use it, but the context strongly implies the use case.

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

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
serviceNoRequired. The credential service name (e.g., from get_operator_onboarding_status or get_patron_onboarding_status).
sender_npubNoRequired. The npub to send the template to.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

With no annotations provided, the description carries the full burden. It discloses key behaviors: sends a welcome DM, requires human-in-the-loop action, and warns that `receive_credentials` destructively drains the relay mailbox. It also explicitly says not to poll or retry, providing actionable transparency.

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

Conciseness5/5

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

The description is multi-paragraph but every sentence earns its place: the first line gives the core purpose, later lines add critical alternatives, behavioral flow, and operational warnings. Formatting with bold and line breaks improves readability without waste.

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

Completeness5/5

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

Despite having an output schema, the description goes beyond structured data to explain the human-in-the-loop workflow, the need to wait for user confirmation, and the destructive nature of the downstream receive call. This level of context is complete for a tool with such operational nuance.

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

Parameters3/5

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

Schema coverage is 100% with both parameters already described in the input schema. The description does not add new parameter-level meaning beyond the schema, so the baseline score of 3 is appropriate. The description mentions the source of the service name (e.g., from onboarding status), which slightly reinforces but does not extend the schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Open a Secure Courier channel for credential delivery.' It uses specific verb+resource and immediately distinguishes itself from the sibling `request_npub_proof`, noting that flow is for proving npub control, not credential delivery. The scope is unambiguous.

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

Usage Guidelines5/5

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

Explicitly provides usage guidance: use for delivering service secrets, use `request_npub_proof` instead for npub proof, and check `service_status` for OAuth2 services that need no courier. It also gives step-by-step after-call instructions (stop, inform user, wait for confirmation) and warns against polling or retrying.

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

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoOptional. 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_atNoOptional. 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_npubNoRequired. The patron's npub to request proof from.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

With no annotations, the description carries full burden and does so thoroughly. It discloses the human-in-the-loop nature, the returned dpop_token that must be remembered, the fact that MCP does not retain it across restarts, the lifecycle expiry, and the destructive drain on receive calls. It clearly states what the tool does and does not do, providing complete 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.

Conciseness4/5

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

The description is well-structured with clear sections (purpose, flow, return, lifecycle) and every sentence adds value except for the trailing 'Free.' which appears to be extraneous. It is longer than average, but the complexity of the tool and the need for workflow clarity justify the length. The front-loading of the primary purpose and the clear separation of concepts make it easy to scan.

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

Completeness5/5

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

The description covers purpose, usage trigger, workflow, return value, lifecycle, and safety warnings. It references the output schema implicitly by explaining the dpop_token return. Given the tool's complexity and the lack of annotations, the description provides complete contextual information 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.

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does not add parameter-specific detail beyond the schema, but the schema already thoroughly explains reason, verify_at, and patron_npub. The description's flow-level context (e.g., why verify_at is used) is helpful but not required for parameter understanding. Note: description says patron_npub is Required, but the schema doesn't mark it required—though this is a minor inconsistency, not a contradiction.

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

Purpose5/5

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

The description clearly states the specific verb+resource: 'Request npub ownership proof from a patron via Nostr DM.' It also distinguishes from the sibling tool request_credential_channel, explicitly stating what this tool does NOT do (deliver service secrets) and naming the alternative. This is a specific, well-differentiated purpose.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use guidance: 'use it when a call returns ``proof_required``.' It also provides exclusions with alternatives ('To hand an operator its API keys or OAuth secrets, use ``request_credential_channel`` instead') and detailed workflow steps: stop, ask user, wait for confirmation, then call receive_npub_proof. It also warns against polling/retrying, explaining the destructive nature of receive calls.

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

excalibur_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).

ParametersJSON Schema
NameRequiredDescriptionDefault
dpop_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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 clearly explains the destructive behavior: deleting every stored model and initializing a fresh one, and notes that it returns the new model. This goes beyond a simple mutation statement.

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

Conciseness5/5

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

The description is extremely concise with four short sentences. The most critical information (destructive reset, operator restriction) is front-loaded. Every sentence adds value without any fluff.

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

Completeness4/5

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

The tool is destructive and has an output schema. The description explains the high-level effect and return value. It is fairly complete for a simple tool, though it could detail the default model shape. The operator restriction mitigates need for extensive caveats.

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

Parameters2/5

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

The input schema has one optional parameter 'dpop_token' with 0% schema description coverage. The description does not mention this parameter at all, failing to add meaning beyond the schema. Given the low 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.

Purpose5/5

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

The description clearly states the tool's purpose: erasing all pricing models and restoring a viable default. The verb 'Erase' and resource 'pricing models' is specific, and it is distinct from siblings like 'set_pricing_model' and '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.

Usage Guidelines4/5

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

The description explicitly states the tool is restricted to operators and requires proof (nsec-signed). This provides clear context on when to use it, though it does not explicitly mention when not to use it or list alternatives, which is acceptable given the restriction.

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

excalibur_resolve_dynamic_blockAInspect

Start resolving a dynamic post block with an LLM — returns a CLAIM CHECK.

A dynamic block's prompt is run by the model (with web search + web fetch for live data) and woven into the surrounding post context in the author's voice. The author's instruction governs length — there is no character cap (X supports long-form posts). The operator's LLM key stays in the vault and never leaves the server.

Because that work (paginated fetches + generation) can outlast a client timeout, this returns immediately with a claim check instead of the text: {"success": true, "claim_check": "...", "status": "pending", "poll_after_seconds": N}. Redeem it with the free companion fetch_dynamic_block(claim_check) until status == "done" (then read result.text). (The scheduler resolves blocks directly server-side at fire time and does not use this tool.)

Paid: the AI cost is metered as a tollbooth fare on THIS start call, refunded if no LLM key is configured or the job ultimately fails.

ParametersJSON Schema
NameRequiredDescriptionDefault
bansNoBanned constructions — JSON array or comma-separated (optional).
npubNoRequired. Your Nostr public key (npub1...) for credit billing.
voiceNoVoice-profile text fed to the model (optional).
promptYesThe dynamic block's prompt to run.
contextNoThe surrounding composed post (may contain the ⟨HERE⟩ marker).
dpop_tokenNo
max_fetchesNoAuthor budget for web lookups (search + fetch), 1..25.
allowed_domainsNoAuthor allowlist for web_fetch — JSON array or comma-separated. Blank = fetch any URL the prompt references.
runtime_limit_secondsNoAuthor's time budget for this block in seconds (60–1800). Bounds how long the job may run AND sets the poll cadence; the operator may price it ad valorem.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals the immediate claim-check return, the async nature ('work can outlast a client timeout'), the billing model ('metered as a tollbooth fare... refunded if no LLM key is configured or the job ultimately fails'), and security ('LLM key stays in the vault and never leaves the server'). This is rich, actionable context.

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

Conciseness5/5

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

The description is three tight paragraphs: purpose, async rationale with the claim-check flow, and billing. Every sentence earns its place, and the most critical fact (returns a claim check) is front-loaded. No fluff or repetition.

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

Completeness5/5

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

The description covers the full lifecycle: how to start, the claim-check format, how to poll with the companion tool, when it's not used (scheduler), security, and cost implications. It also clarifies there is no character cap. For a complex async tool, this is comprehensive.

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

Parameters4/5

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

Schema coverage is 89%, so the schema already documents most parameters. The description adds semantic meaning by explaining how prompt, context, and voice interrelate: 'A dynamic block's prompt is run by the model... woven into the surrounding post context in the author's voice.' This helps the agent understand the purpose of these fields beyond their names.

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

Purpose5/5

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

The description opens with 'Start resolving a dynamic post block with an LLM — returns a CLAIM CHECK.' This clearly identifies the verb (start resolving), resource (dynamic post block), and key behavior (returns a claim check), distinguishing it from the sibling fetch_dynamic_block.

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

Usage Guidelines5/5

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

The description explicitly instructs to 'Redeem it with the free companion fetch_dynamic_block(claim_check)' and notes that 'The scheduler resolves blocks directly server-side at fire time and does not use this tool.' This provides clear alternatives and exclusions, telling the agent when to use this tool versus others.

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

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dpop_tokenYesA kind-27235 Nostr event signed by the OPERATOR's nsec for this tool. Patron proofs are rejected.
invoice_idYesThe BTCPay invoice ID to verify and credit.
patron_npubYesThe patron's npub whose ledger receives the grant.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

With no annotations provided, the description carries the full behavioral disclosure burden. It discloses the operator-only access restriction, idempotency (returns credits_granted=0 if already credited), and the context of BTCPay-settled invoices. This gives the agent a clear safety and idempotency profile beyond the basic write operation.

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

Conciseness5/5

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

The description is well-structured with a bold opening sentence, operator restriction callout, bullet-style use cases, and a concise idempotency note. Every sentence adds value, and the length is appropriate for the tool's sensitivity and complexity.

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

Completeness5/5

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

For an operator-restricted credit tool with an output schema, the description covers purpose, authorization requirements, use cases, and repeat-safety. It omits failure modes, but the output schema and clear operator role make this complete enough for an agent to select and invoke correctly.

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

Parameters3/5

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

Schema description coverage is 100%, with detailed descriptions for all three parameters (dpop_token requires an operator-signed Nostr event, invoice_id is the BTCPay invoice, patron_npub is the recipient). The tool description adds no additional parameter-level meaning, so the baseline 3 is appropriate.

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

Purpose5/5

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

The description starts with 'Credit a patron's ledger from a BTCPay-settled invoice,' which uses a specific verb and clearly identifies the resource and source. It distinguishes itself from sibling tools like excalibur_check_payment and excalibur_purchase_credits by focusing on manual restoration of credits.

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

Usage Guidelines5/5

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

The description explicitly states the tool is RESTRICTED to the operator and provides clear escalation guidance for patrons. It lists concrete use cases (cold-start vault races, ncred delivery hiccups, early Top-Off sheet closure) that tell an agent exactly when to invoke this tool versus alternatives.

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

excalibur_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).

ParametersJSON Schema
NameRequiredDescriptionDefault
dpop_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

No annotations provided, so the description carries the full burden. It discloses idempotency, that it runs on all NeonVaults, returns per-step results, surfaces Neon error messages for errors, and requires operator-level authentication. This is comprehensive for a recovery tool.

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

Conciseness4/5

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

The description is concise, with four sentences covering purpose, usage, behavior, and return/error handling. It is well-structured and front-loaded with the primary action. Minor improvement could be more explicit parameter explanation.

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

Completeness4/5

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

Given the tool's complexity as a database recovery operation, the description covers purpose, usage, idempotency, error handling, and restrictions. The output schema exists but is not described, which is acceptable. The only gap is the undocumented dpop_token parameter.

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

Parameters2/5

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

The only parameter, dpop_token, has no description in the schema (0% coverage). The tool description does not explain this parameter, its purpose, or its format, leaving the agent uninformed. The description mentions 'proof (nsec-signed)' but does not connect it to dpop_token.

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

Purpose5/5

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

The description clearly states the tool re-runs ensure_schema() on every NeonVault, specifies it is a diagnostic/recovery tool for persistent 4xx errors, and mentions idempotency. It distinguishes itself from siblings by its specific recovery purpose.

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

Usage Guidelines4/5

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

The description gives clear usage context: when Neon HTTP SQL API returns persistent 4xx errors and schema/grants are suspected. It states it's restricted to operators with nsec-signed proof. However, it does not explicitly state when not to use it or list alternatives.

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

excalibur_save_snippetAInspect

Save a reusable post snippet (opening/footer/CTA). Omit snippet_id to create a new one; pass it to update an existing snippet in place (name/text/ favorite/doc). On update only the fields you pass change — omit favorite (leave it null) to keep it as-is, so a doc-only patch (e.g. toggling a snippet dynamic) doesn't reset it. doc is the same block/flag document a post carries, so the editor is identical for both. Free and owner-scoped. Returns {"success": true, "snippet": …}.

ParametersJSON Schema
NameRequiredDescriptionDefault
docNo
nameNo
npubNoRequired. Your Nostr public key (npub1...).
textNo
favoriteNo
dpop_tokenNo
snippet_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

With no annotations, the description carries full burden. It discloses that the tool is 'Free and owner-scoped', explains update behavior (fields only change if passed, favorite null keeps as-is), and mentions the return format. The doc field is described as 'same block/flag document a post carries'. This provides sufficient behavioral context for an agent.

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

Conciseness5/5

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

The description is three well-organized sentences: first sentence states purpose and create/update distinction, second details update behavior, third clarifies doc and scope. No wasted words; front-loaded with key action.

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

Completeness4/5

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

Given 7 parameters, no annotations, and an output schema, the description covers the core logic, update rules, scope, and return type. It mentions doc parity with posts, aiding context. The only minor gap is dpop_token meaning, but that is likely standard across tools. Overall, it's nearly complete for safe agent invocation.

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

Parameters3/5

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

Schema coverage is only 14% (only npub has a description). The description adds critical semantics for snippet_id (omit to create, pass to update) and favorite (null to keep as-is), and notes doc is identical to post. However, dpop_token, name, and text lack elaboration, partially compensating but not fully covering all params.

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

Purpose5/5

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

The description clearly states 'Save a reusable post snippet (opening/footer/CTA)' and explicitly distinguishes creation (omit snippet_id) from update (pass it). Among siblings like excalibur_create_post and excalibur_get_snippet, this tool is uniquely for snippets with both create and update capabilities, making its purpose well-defined.

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

Usage Guidelines4/5

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

The description provides explicit guidance: omit snippet_id to create, pass it to update, and notes that on update only passed fields change with special handling for favorite. While it doesn't explicitly state when to avoid using this tool, the context and siblings imply its scope is for snippet management, which is clear.

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

excalibur_save_voiceAInspect

Save your writing Voice (replaces the previous one — it is a per-npub singleton). profile is free text. bans is a list of {text, on} objects: text is the construction to avoid, on whether it is an active constraint. Blank/duplicate entries are dropped server-side. Owner-scoped; priced by the operator's pricing model (use check_price). Returns {"success": true, "voice": {...}}.

ParametersJSON Schema
NameRequiredDescriptionDefault
bansNo
npubNoRequired. Your Nostr public key (npub1...).
profileNo
dpop_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

With no annotations, the description fully discloses that the tool is destructive (replaces previous voice), owner-scoped, priced, and drops blank/duplicate ban entries server-side. This provides essential behavioral context.

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

Conciseness5/5

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

The description is concise with 3-4 sentences, front-loads the main purpose, and each sentence adds value. No redundant content.

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

Completeness4/5

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

The description is fairly complete given 4 parameters and an output schema. It covers the singleton behavior, replacement effect, bans details, pricing hint, and return format. Could mention dpop_token briefly, but overall sufficient.

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

Parameters4/5

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

The description adds meaning to 'profile' and 'bans' parameters beyond the sparse schema (25% coverage). It explains bans structure and server-side behavior. Only 'dpop_token' is left undescribed.

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

Purpose5/5

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

The description clearly states the tool saves a writing 'Voice' and highlights it replaces the previous one (per-npub singleton), distinguishing it from read tools like excalibur_get_voice and other save tools like excalibur_save_snippet.

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

Usage Guidelines4/5

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

The description indicates when to use (to set or update the voice), mentions owner-scoped and priced nature, and advises using check_price for pricing. It lacks explicit when-not-to-use, but the context is clear enough.

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

excalibur_scheduler_check_nowAInspect

Ask the scheduler to run one tick now (free; any proven patron).

Pokes the Worker's /tick — the same work the ~30-minute cron does: it claims a pending proof reply (completing the operator's authorization) and fires any due posts. Use it right after the operator approves in Studio so nobody waits for the next tick.

Deliberately NOT operator-only. Approving is the operator's act; noticing that they approved is anyone's, and a patron watching a parked scheduler is often the one who notices first. The poke carries no authority — it cannot approve anything, only ask the Worker to look. The challenge phrase stays operator-gated (scheduler_pending).

The Worker runs the tick in the background and returns immediately; re-read scheduler_status a few seconds later to see the phase flip. Returns {started: true} or {started: false} if the Worker couldn't be reached.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubNoYour npub (npub1...).
dpop_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

There are no annotations, so the description carries the full burden, and it delivers thoroughly. It states side effects (claims pending proof reply, fires due posts), the asynchronous background execution, immediate return behavior, and the exact return payload. It also explicitly cautions that the poke carries no authority and that the challenge phrase remains operator-gated, preventing a common misunderstood privilege.

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

Conciseness4/5

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

The description is fully front-loaded with the decisive clause and then expand with important context. It uses clear paragraph breaks for visibility. Every sentence adds something meaningful, though it is slightly long for a simple trigger action. Still, the length is justified by the nuanced authorization semantics.

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

Completeness5/5

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

For a simple trigger tool with no annotations, the description fully covers identity/authorization context, when to call it, side effects, asynchronous behavior, output, and follow-up guidance. It also clarifies how this differs from cron and operator-only actions. The agent has everything needed to invoke and interpret the result correctly.

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

Parameters2/5

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

Only npub has a schema description, and the tool description adds no guidance for the dpop_token. With 2 params and 50% schema coverage, the description fails to explain the auth token's purpose or how an agent should obtain or supply it. Even though npub is briefly described in the schema, the overall parameter guidance is insufficient.

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

Purpose5/5

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

The description opens with a precise, specific statement: 'Ask the scheduler to run one tick now,' and then details the exact action (poking /tick and performing due work). It distinguishes the tool from nearby scheduler tools by clarifying it only triggers a tick and cannot approve anything. This goes well beyond restating 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.

Usage Guidelines4/5

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

The description gives strong situational guidance: use it right after the operator approves in Studio, or when a patron notices a pending authorization while the scheduler is parked. It also explains who can use it ('deliberately NOT operator-only'), but it does not enumerate explicit alternatives or a 'when not to use' section. This is clear context with no exclusions, but slightly below the 5 bar.

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

excalibur_scheduler_pendingAInspect

What is the scheduled-post cron Worker waiting on? (operator-only).

When the Worker's authorization lapses it DMs the operator a challenge phrase and parks. This returns that pending phrase so the operator can match it against the DM before approving in Studio — the Device-Grant second surface for a headless actor. The phrase lives only in the Worker's KV (an impostor can't inject it); we read it AS the operator (a kind-27235 signed with the operator key), so the human never signs anything in the browser.

restricted: gated to the operator npub, free. Never returns the active session token. Returns {phase, code, reason, requestedAt}phase is pending / active / idle, or unavailable if the Worker can't be reached.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubNoThe OPERATOR's npub (npub1...); this tool is operator-only.
dpop_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

With no annotations, the description fully discloses behavior: phrase lives in Worker's KV, read as operator using kind-27235 signed key, never returns active token, and gives output structure. 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.

Conciseness4/5

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

Concise and front-loaded with purpose. Uses formatting effectively. The 'restricted' line is slightly redundant but not harmful.

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

Completeness5/5

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

Complete for the tool's complexity: explains trigger, security, and return format. Output schema exists and description covers fields.

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

Parameters2/5

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

Schema coverage is 50%; description repeats npub detail from schema but does not explain dpop_token at all. No added semantic meaning beyond the schema.

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

Purpose5/5

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

Clearly states the tool returns the pending challenge phrase from the Worker when authorization lapses. Specifies it is operator-only and distinguishes from sibling tools like excalibur_scheduler_status.

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

Usage Guidelines4/5

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

Explains the scenario (Worker authorization lapses, DM challenge, parking) and that it is operator-only. Notes it never returns active session token, implying when not to use. No explicit alternative, 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.

excalibur_scheduler_statusAInspect

The scheduler's configuration and current status (free; any proven patron).

Relays the cron Worker's public /status — cadence, version, renewal window, and current authorization phase (pending / active / idle, no challenge phrase) — and adds the operator npub it acts for. No secrets: the pending phrase (operator-only) is scheduler_pending; the per-tick traffic log is get_scheduler_log. Returns the merged config, or {worker: "unavailable"} merged in if the Worker can't be reached.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubNoYour npub (npub1...).
dpop_tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

With no annotations, the description fully discloses behavior: returns cadence, version, renewal window, authorization phase, operator npub, and handles worker unavailability with an error object. It also explicitly states what is not returned (pending phrase, traffic log).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense paragraph that packs a lot of information without excess, but could benefit from clearer separation of sections.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and the detailed description covering return values, error handling, and related tools, the description is complete and sufficient for agent understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% (npub described, dpop_token not), and the description adds no parameter details. It does not compensate for the missing dpop_token description or clarify usage of the two parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves the scheduler's configuration and current status, using the verb 'relays' and specifying the resource (cron Worker's /status). It distinguishes from sibling tools by directing the pending phrase to scheduler_pending and traffic log to get_scheduler_log.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly suggests when to use this tool (to get status) and mentions alternatives (scheduler_pending, get_scheduler_log) for specific data, but does not explicitly state when not to use it or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

excalibur_service_statusBInspect

Check the health and configuration of this service. Free.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden for behavioral disclosure. It only says 'Free' (likely meaning no cost) but does not reveal if the tool is idempotent, has side effects, or requires authentication. The word 'health' implies a read-only check but is not explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short and front-loaded, with no wasted words. However, it could be more informative without losing conciseness, e.g., by explaining what health/configuration means.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 but no parameters, the description should clarify what 'health' and 'configuration' entail, especially amid sibling status tools. The current description is too vague and lacks completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and schema coverage is 100% (empty schema). The description adds no param-level detail, but baseline for 0-param tools is 4, as there are no parameters to explain.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks health and configuration of the service, using specific verbs and resource. However, it does not distinguish from sibling tools like excalibur_adoption_status or excalibur_session_status, which also perform checks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 alternative status-checking tools among siblings. The description lacks any context for when this specific health check is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
patron_npubNoOptional. 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

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so thoroughly. It discloses that the tool is free, explains each state's consequences (e.g., paid tools fail, free tools remain available), and mentions 'vault AND pricing model verified' for readiness. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and cost, then uses a clear bulleted list for lifecycle states. Each bullet is concise and essential, and the length is justified by the complexity of the states.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers all lifecycle states and gives actionable next steps. With an output schema present, return values do not need to be detailed. No annotation means the description also covers cost and failure modes, making it complete for a status-check tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single optional parameter, so the baseline is 3. The tool description itself does not mention the parameter, but the schema provides sufficient semantics. The description adds no additional parameter context beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with a specific verb and resource: 'Check operator readiness.' It clearly distinguishes this from sibling tools like service_status or scheduler_status by focusing on operator lifecycle. The lifecycle state list further clarifies what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance for each lifecycle state, including when to proceed, when retrying is useless, and when to call a specific alternative (e.g., 'Call register_operator first'). It also states the tool is free, which helps decide when to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dpop_tokenNo
model_jsonYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses the restriction and proof requirement, which are key behavioral traits. However, it does not mention any side effects or success/failure responses.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the purpose. Every sentence provides essential information without unnecessary fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 2 parameters and an output schema. The description covers the auth requirement and purpose, but lacks parameter explanations and return value details. It is minimally adequate but leaves gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning the description must explain the parameters. It mentions `model_json` in the schema but not in the description, and `dpop_token` is not explained. The description adds no semantic value to the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with 'Set the active pricing model', providing a clear verb and resource. It distinguishes itself from sibling tools like `excalibur_get_pricing_model` and `excalibur_reset_pricing_model` by focusing on setting rather than getting or resetting.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states the tool is 'RESTRICTED to operator' and requires a proof, implying only operators should use it. However, it does not explicitly mention when not to use it or provide alternative tools for non-operators.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
coupon_idYes
dpop_tokenNo
total_usesNo
valid_fromNo
valid_untilNo
uses_per_patronNo
clear_total_usesNo
discount_percentNo
clear_uses_per_patronNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that renaming keeps existing redemption rows, that it requires operator proof, and how clear flags work. However, it lacks details on side effects of other fields, validation behavior, or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with four sentences, each adding value. It front-loads the core purpose and then covers specific behaviors. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (10 params, no schema descriptions), the description covers essential behavior but omits details on the output (though output schema exists) and error handling. It is adequate but not exhaustive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description only explains two parameters (clear_uses_per_patron, clear_total_uses). The rest (e.g., name, discount_percent, valid_from) are not described. The general note 'Pass only the fields you want to change' is insufficient for the 10 parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses 'Patch a coupon's editable fields' which clearly identifies the tool as an update operation on coupon fields, distinguishing it from siblings like excalibur_mint_coupon (create) and excalibur_delete_coupon (delete).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It instructs to pass only fields to change and explains how to set values to unlimited using clear flags. It also notes that renaming the code is allowed and that the tool is restricted to operators with proof. However, it does not explicitly state when not to use it or mention alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldYesThe operator credential field to set. Must be declared in the operator's credential template.
valueYesThe value to store.
dpop_tokenYesOperator proof for this tool.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It discloses that the operation merges without touching other fields, that the value is never echoed back, and that restricted operator proof (nsec-signed kind-27235 or cached dpop_token) is required. It also explains the destructive alternative, adding safety context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficient and well-structured. The first sentence states the purpose, subsequent sentences cover behavioral nuances, usage context, and security constraints. Every sentence earns its place without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description fully addresses the tool's complexity: merge behavior, use case, security restrictions, and proof requirements. With an output schema present, omission of return details is acceptable. It is comprehensive for a 3-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds meaning beyond the schema by giving a concrete example ('btcpay_api_key'), clarifying the merge semantics for 'field', and elaborating on the 'dpop_token' proof types (nsec-signed kind-27235 or cached phrase). This exceeds the schema's descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Add or update a single operator secret field,' which precisely states the verb (add/update), resource (operator secret field), and scope (single field). It distinguishes itself from sibling tools like excalibur_update_patron_credential by focusing on operator credentials and from whole-bundle delivery by noting it is field-level.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly explains when to use this tool: to rotate one secret without restating unchanged fields and avoiding the destructive behavior of omitted fields in a courier reply. It also states a clear exclusion: patron proofs are rejected, implying this is only for operator use. This is strong usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

excalibur_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubYesThe patron's Nostr public key (npub1...).
fieldYesThe credential field name to set.
valueYesThe value to store.
dpop_tokenYesRaw 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

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description bears the full transparency burden. It openly discloses that this is a write to a 'sensitive credential vault,' requires proof of ownership, is free, and merges without affecting other fields. This goes beyond a generic 'update' statement. It doesn't mention rate limits or idempotency, but the critical behavioral traits 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short paragraphs with the main action in the first sentence. Every sentence adds value: merge behavior, use cases, cost, security requirement, and vault sensitivity. No fluff or repetition of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (4 required params, no annotations, output schema present), the description covers essential context: purpose, merge semantics, use cases, cost, and proof requirement. The output schema exists, so return-value details are not needed. Minor gaps like accepted field names are not covered, but the description is sufficiently complete for an agent to select and invoke the tool safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% coverage with detailed descriptions for all four parameters, including a thorough explanation of the dpop_token format. The description adds only the concept of a 'single field' and merge semantics, which is relevant but not necessary for understanding individual parameters. Since the schema does the heavy lifting, a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Add or update a single patron credential field,' which clearly states the action (add/update), the resource (patron credential field), and the scope ('single'). This distinguishes it from siblings like 'delete_patron_credential' or 'update_operator_credential.' The merge behavior further clarifies it's a partial update, not a wholesale replacement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides concrete use cases ('setting an account identifier after OAuth, changing a default brain'), making it clear when this tool is appropriate. It also includes practical constraints: 'Free' and 'Proof of npub ownership is required.' However, it does not explicitly name alternatives or state when not to use it, 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.

excalibur_update_postAInspect

Patch a stored post. patch may set doc, publish_at, recurrence, cease_at, status (omit a field to leave it unchanged). text_cache is written when supplied (alongside a doc change). client_req_id dedupes debounced autosave retries — a repeat is a no-op with no second charge.

ParametersJSON Schema
NameRequiredDescriptionDefault
npubNoRequired. Your Nostr public key (npub1...) for credit billing.
patchYes
post_idYes
dpop_tokenNo
text_cacheNo
client_req_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description explains the patch behavior, dedup via client_req_id, and conditional text_cache writing, providing good transparency beyond basic read/write.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with backtick formatting for clarity; no redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers core update behavior but lacks description of return values (output schema exists) and does not compare to sibling tools, leaving some contextual gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only 17% schema coverage; description explains patch fields (doc, publish_at, etc.) and client_req_id dedup, but omits details for npub, dpop_token, and post_id, leaving gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Patch a stored post' with a verb and resource, and distinguishes from create/delete siblings by focusing on partial updates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for updating posts but does not explicitly state when to use this vs. create_post or other tools, nor 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.

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A minimal MCP server for posting tweets to X (Twitter) via API v2, supporting tweet creation, replies, and quote tweets.
    10
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    MCP server to read X (Twitter) posts, threads, replies, quotes, and search using your own logged-in session, no API key required.
    8
    3
    MIT

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.