Privi
Server Details
Trust layer for AI agents. Privi Guard checks web pages, emails and tool results for prompt injection and outgoing text for leaked API keys and card numbers, with signed on-chain receipts (1,000 free checks a month). Privi Scan grades any MCP server for tool poisoning and rug pulls. Also tamper-evident audit logs, agent passports, spending mandates and a live kill switch.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 98 tools
Most tools are grouped by clear domain prefixes and their descriptions distinguish actions, but with 98 tools there are overlapping trust/safety checks such as passport_verify, passport_gate, kya_check, mcp_server_check, and scan_server. An agent can usually infer the right tool from the domain prefix, but near-duplicate purposes increase misselection risk.
The surface overwhelmingly follows a predictable snake_case prefix_action pattern (ledger_record_action, gateway_create, room_verify, scan_watch). A few names like mcp_server_check, privi_payment_options, and trust_events deviate slightly, but the convention remains readable and largely consistent.
98 tools is an extreme mismatch for a single MCP server surface and far exceeds typical well-scoped sets. Even with domain grouping, the cognitive load and routing burden are too high for an agent to navigate reliably.
The server covers a broad trust, compliance, ledger, identity, gateway, scan, payment, and room lifecycle with create/list/get/verify/revoke-style operations across domains. Minor gaps exist, but most core workflows have complete paths and no obvious dead ends.
Available Tools
98 toolsapproval_cancelApprovals: cancelADestructiveIdempotentInspect
Withdraw an approval request (or revoke an approval not yet used). Your key cannot approve, only cancel. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| approval_id | Yes | apr_... ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true, readOnly=false, idempotent=true. The description adds genuinely useful context beyond that: the auth requirement ('Requires the organization API key') and the capability constraint ('Your key cannot approve, only cancel'), plus the distinction between withdrawing a request versus revoking an unused approval.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core action and the parenthetical nuance, then the key constraint. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive mutation with no output schema, the description covers the operation, the auth requirement, and the key's inability to approve. It is nearly complete; a note on irreversibility or post-cancel state would close the remaining gap, though destructiveHint already signals the risk.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema description coverage is 100% ('apr_... ID' is documented in the schema), so the schema carries the burden. The description adds no format or syntax detail for approval_id, making this a baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Withdraw an approval request (or revoke an approval not yet used)') and clarifies the dual semantic of cancel vs revoke. It does not explicitly name a sibling alternative, but the action is unambiguous enough that an agent can distinguish it from approval_* readers like approval_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the action (withdraw/revoke a pending or unused approval) and the constraint 'Your key cannot approve, only cancel' narrows the intent. However, no explicit when-not condition or named alternative (e.g. how to approve instead) is provided, leaving routing partly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
approval_listApprovals: list yoursBRead-onlyInspect
Your organization's approval requests, newest first. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | pending, approved, denied, expired or cancelled |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds genuinely useful non-annotation context: the auth requirement ("Requires the organization API key") and the default sort order (newest first), which the schema does not express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the resource and ordering front-loaded. Nothing to trim, though it is terse to the point of omitting useful routing detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with no output schema, the description covers purpose, ordering, and auth. It leaves return shape, pagination/limits, and scoping (organization-only vs. personal) unspecified, which an agent may need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single optional status parameter already enumerates its accepted values (pending, approved, denied, expired or cancelled). The description adds nothing about the filter, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Your organization's approval requests, newest first" states a clear resource (approval requests) plus ordering, and the tool name supplies the list verb. It does not, however, differentiate itself from the sibling approval_status or approval_wait, which an agent could plausibly confuse with a listing call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no mention of alternatives. With approval_status and approval_wait in the sibling set, the agent gets no signal about which one to reach for when it wants approvals versus a single request's state.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
approval_policy_setApprovals: set a live-approval thresholdAInspect
Make mandate_spend pause for a human on large payments: any payment over the threshold creates an approval request that the mandate's principal must sign with their wallet before the agent can spend. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| stream_id | Yes | The agent (stream), or '*' for all of them | |
| approve_over_usdc | No | Payments above this need a live human approval; omit to remove the rule |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly=false, destructive=false, idempotent=false). The description adds real context beyond them: an organization API key is required, the threshold creates an approval request, and the mandate's principal must sign with their wallet before the agent can spend. It doesn't note reversibility or interaction with existing requests, hence not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the core action (pause mandate_spend for humans on large payments) before the mechanics. Slightly long but every clause carries information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only 2 fully-documented params, no output schema, and annotations present, the description supplies the missing behavioral pieces: auth requirement, the approval-request mechanism, and who signs. Adequate for calling the tool correctly; minor gaps remain around policy removal and idempotency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents stream_id ('*' for all) and approve_over_usdc (omit to remove the rule). The description reinforces the threshold concept but adds no syntax or format detail 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: configuring a live-approval threshold that makes mandate_spend require human sign-off for large payments. It names the affected sibling (mandate_spend) and the exact mechanism, letting an agent distinguish it from approval_list/approval_request/approval_status which operate on the runtime flow rather than the policy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys the scenario (large payments need a human) and ties the tool to mandate_spend, so usage is implied. However, it gives no explicit when-to-use vs alternatives and never states when to avoid setting a policy or how it interacts with the other approval_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
approval_requestApprovals: ask a humanAInspect
Ask a human to approve (or deny) an action. Returns approve_url for them: they read the request and sign with their wallet (free, no transaction). Your agent then calls approval_wait, or watches your live channel for approval.approved. Only the named wallet can decide; your API key can only cancel. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| payee | No | Payee address or domain, if money is involved | |
| ttl_s | No | Seconds the request stays open (60-86400) | |
| action | Yes | Plain-English action the human is approving, e.g. 'Wire 4,800 USDC to Acme for invoice 1042' | |
| reason | No | Why the agent wants to do this | |
| reference | No | Invoice or order reference | |
| stream_id | Yes | The agent asking | |
| mandate_id | No | mdt_... : the mandate's principal decides | |
| amount_usdc | No | Amount, if money is involved | |
| approver_wallet | No | 0x wallet of the human who decides (if no mandate_id) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (which only declare it is a non-read-only, non-destructive, non-idempotent mutation). It discloses the return value (approve_url), that the human signs with their wallet at no cost and with no transaction, the authorization boundary (only the named wallet decides; the API key can only cancel), and the auth prerequisite (organization API key).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with what the tool does and what it returns, followed by the next-step routing and the authorization/auth constraints. No sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nine-parameter mutation with no output schema, the description covers what the agent gets back (approve_url), how to proceed (approval_wait or channel watch), who can decide, and the auth requirement. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all nine parameters including approver_wallet and mandate_id. The description reinforces the authorization model ('only the named wallet can decide') but adds no syntax or format detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (ask/request) and resource (human approval of an action), and explicitly distinguishes itself from the sibling approval_wait by naming it as the follow-up step. An agent can tell this is the initiation tool rather than the polling or cancel tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Routes the agent forward: 'Your agent then calls approval_wait, or watches your live channel for approval.approved.' It also clarifies who may act (only the named wallet decides; your API key can only cancel). It does not explicitly state when NOT to use this versus approval_policy_set, but the workflow context is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
approval_statusApprovals: check oneARead-onlyInspect
Status of an approval request: pending, approved, denied, expired or cancelled, with the human's wallet signature once they decide. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| approval_id | Yes | apr_... ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds real context beyond that: the exact set of terminal and non-terminal states, the fact that a human wallet signature is attached once a decision is made, and that the call incurs no cost. Error/not-found behavior for a bad ID is not covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences: the core purpose and return shape first, then the cost note. No filler, no restating of the title, and every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only tool with annotations covering safety, this is nearly complete. Because there is no output schema, the description usefully describes the return (state values plus signature), which is the main burden it needed to carry; only invalid-ID and freshness/timing behavior are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single approval_id parameter is documented there as an 'apr_... ID', so the baseline is 3. The description adds no syntax, format, or lookup semantics beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (an approval request) and the exact information returned: its status, enumerated as pending/approved/denied/expired/cancelled, plus the wallet signature. That enumeration clearly separates it from approval_wait (which presumably blocks) and approval_list, though neither sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given. An agent must infer that this is a non-blocking point-in-time check, and nothing in the text explains when to prefer it over approval_wait or approval_list. Only the trailing 'Free.' hints at a selection factor (cost).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
approval_waitApprovals: wait for the humanARead-onlyInspect
Block until the human decides (or timeout_s passes). Returns the current status; if still pending, call again. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| timeout_s | No | How long to wait (1-55 seconds); call again to keep waiting | |
| approval_id | Yes | apr_... ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Read-only annotations already cover the safety profile, and the description adds real value beyond them: blocking semantics, the retry-on-pending pattern, an implicit cost note ('Free'), and the sense that a timeout is not a failure. It doesn't say what status values can be returned or what happens to the approval on timeout.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short clauses, all front-loaded with the blocking behavior first, then the return contract, then the retry rule. Every clause earns its place; nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description takes on the burden of describing the return and does so ('returns the current status'). It omits the set of possible status values and any note about whether a timed-out wait loses the approval, which is the only meaningful gap for a two-parameter blocking tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so timeout_s and approval_id are already fully documented in the schema. The description only echoes the timeout concept ('or timeout_s passes') without adding format or edge-case meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (block/wait) and the exact resource (the human's approval decision), and contrasts implicitly with the non-blocking siblings approval_status/approval_list. An agent can tell immediately this is the blocking variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operating context (block until decision or timeout) and an explicit retry rule ('if still pending, call again'). It does not name the non-blocking alternative (approval_status) or state when *not* to block, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fortress_keysFortress keysARead-onlyInspect
Privi's public signing keys: Ed25519 and ML-DSA-87 (NIST FIPS 204, CNSA 2.0 post-quantum). Pin these to verify Privi signatures offline. Free.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and openWorldHint=false. The description adds valuable behavioral context: the key algorithms, that the keys are public and intended for offline signature verification, and that the endpoint is free. It does not cover auth requirements or rate limits, but with annotations present this is a solid contribution.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the resource and algorithm details, then the action, then pricing. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only key retrieval tool with an output schema and readOnlyHint/openWorldHint annotations, the description supplies everything an agent needs: what the keys are, their algorithms, the intended use, and cost. No critical gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the 4 baseline applies. The schema has no properties and the description adds no parameter details because none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource as Privi's public signing keys and names the exact algorithms (Ed25519, ML-DSA-87), so an agent knows what the tool provides. It does not use an explicit retrieval verb or mention sibling tools like fortress_tpi_*, so it is clear but not fully differentiated from the broader fortress family.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete use case—'Pin these to verify Privi signatures offline'—which tells the agent when to call it. It does not name alternatives or exclusions, so it falls short of the 5-level routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fortress_tpi_executeExecute an authorized actionAInspect
Consume a two-person authorization right before performing the action. Single use; refused unless authorized. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | Yes | tpi_... ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavior beyond the annotations: single-use consumption, refusal when unauthorized, and an organization API key requirement. Annotations only say readOnly=false and idempotent=false; the single-use and auth semantics are the valuable additions. It does not say what happens to the action's result or failure modes beyond refusal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short clauses, zero filler, and the core semantics (consume, single use, auth requirement) are front-loaded. Nothing could be removed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-idempotent mutating tool with no output schema, the description covers the key operational facts an agent needs: it consumes a one-time right, requires authorization and an org API key, and will be refused otherwise. It leaves the identity of the underlying action and the post-consumption outcome unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter (request_id, 'tpi_... ID') is already documented in the schema. The description adds no syntax, format, or sourcing hint for the ID, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('consume') and resource ('two-person authorization right') and clarifies the tool executes a previously-authorized action rather than creating or inspecting one. It does not explicitly name the sibling it must follow (fortress_tpi_request / approval_request), so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Right before performing the action' and 'refused unless authorized' imply the precondition (an authorization must already exist), which is useful sequencing guidance. However, no alternative sibling is named and no explicit when-not-to-use is given, so the agent must infer the workflow from the family of tpi_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fortress_tpi_listList two-person requestsBRead-onlyInspect
Your organization's two-person requests. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description contributes the API-key requirement, which the annotations do not convey, but says nothing about result size, pagination, or ordering for a list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the resource identified first and the auth constraint second; no filler. The opening fragment is terse to the point of being a label rather than a sentence, but nothing wastes space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only list tool with no output schema, the definition covers what the resource is and the auth needed. It omits anything about the shape or volume of results and gives no way to place it among the five fortress_tpi_* siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the schema is empty, so there are no parameter semantics to document. Baseline 4 applies; nothing in the description misleads about inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource ('two-person requests') scoped to the organization, but supplies no verb of its own – it is a noun fragment that only implies listing via the title. It does not distinguish itself from siblings like fortress_tpi_request, fortress_tpi_status, or fortress_tpi_execute.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is a prerequisite ('Requires the organization API key'), which is useful but is auth info rather than usage routing. There is no statement of when to call this versus fortress_tpi_status or fortress_tpi_request, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fortress_tpi_policySet a two-person policyAIdempotentInspect
Define a Two-Person Integrity policy: which officers can approve, and how many distinct approvals an action needs. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Policy name, e.g. 'treasury-transfers' | |
| required | Yes | Approvals needed (2..number of officers) | |
| officer_wallets | Yes | 0x wallets of the officers who may approve (at least 2) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare the safety profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false), so the bar is lower, and the description usefully adds the organization-API-key auth requirement. It still does not say whether re-defining a policy with an existing name replaces or merges with the prior one, which for an idempotent write tool would be the most valuable remaining detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the tool's purpose, then the auth prerequisite. No filler, no restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema required and annotations carrying the mutation/idempotency profile, the description covers purpose, parameter meaning, and auth. It remains slightly short on lifecycle behavior — namely overwrite vs. create semantics for a policy name that already exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter documented (including the 2..officers bound on 'required'). The description restates the meaning of officer_wallets and required but adds no syntax or constraint detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource (define a Two-Person Integrity policy) plus the two governing attributes (approver set, required approval count), so the agent knows exactly what this tool configures. It does not, however, differentiate itself from the closely named sibling approval_policy_set, leaving a real ambiguity unaddressed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Requires the organization API key' is a genuine prerequisite that tells the agent a credential is needed. Beyond that, there is no when-to-use guidance and no indication of how this differs from approval_policy_set or the other fortress_tpi_* tools, so selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fortress_tpi_requestRequest two-person approvalAInspect
Ask officers to authorize a sensitive action under a two-person policy. Returns approve_url for the officers; each signs with their wallet. Do not act until fortress_tpi_status shows 'authorized', then call fortress_tpi_execute. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| hours | No | Hours until the request expires (1-168) | |
| policy | Yes | Policy name | |
| details | No | Exact parameters; their hash is what officers sign | |
| summary | Yes | Exactly what will be done, in plain words | |
| stream_id | Yes | The agent asking |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the generic safety/behavioral hints (non-read-only, non-idempotent), so the description earns credit for disclosing the auth requirement (organization API key), the human-in-the-loop signing mechanism, and the returned approve_url — none of which appear in structured fields. It stops short of describing failure modes (e.g. expired requests, rejected signatures), which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: what it does, what it returns, and the workflow gate, all front-loaded. Nothing is redundant with the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-idempotent mutation tool with no output schema, the definition still supplies the return shape (approve_url), the authorization prerequisite, and the surrounding call sequence. An agent has everything needed to invoke it and act on the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (policy, stream_id, summary, details, hours) is already documented in the schema, including ranges and defaults. The description adds no syntax, format, or naming guidance beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Ask officers to authorize a sensitive action under a two-person policy') that an agent can distinguish from approval_request and fortress_tpi_execute. The return value (approve_url) and the policy scope are named explicitly, so the tool's role in the TPI flow is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit gating condition ('Do not act until fortress_tpi_status shows authorized') and names the correct next tool (fortress_tpi_execute). It routes the agent across siblings both before and after this call, which is exactly what the usage dimension asks for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fortress_tpi_statusTwo-person statusARead-onlyInspect
Status of a two-person request (pending, authorized, vetoed, expired, executed) and who approved. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | Yes | tpi_... ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover only readOnlyHint and openWorldHint; the description adds genuinely new context by listing the terminal states (pending, authorized, vetoed, expired, executed) and that the approver identity is returned, which is the return-value behavior an agent needs. It also flags cost ('Free'), which annotations do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence that leads with the resource and status set, then adds the approver payload and cost note. No filler or repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description supplies the expected return content (status enum plus approver) for a simple read-only lookup with one documented parameter. Nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single request_id parameter documented as a 'tpi_... ID', so the schema carries the semantics. The description only implies the input is one 'two-person request' without adding format or lookup detail, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (status) and resource (two-person request), and enumerates the possible states, so an agent can tell it apart from fortress_tpi_list or fortress_tpi_execute. It never explicitly names those siblings or states that it operates on a single request_id, so differentiation is inferable rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no alternatives named; the agent must infer from the name that this is the check-before-execute call. The only practical guidance offered is the cost note 'Free', which is useful but not usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gateway_createGateway: protect and meter an MCP serverAInspect
Put your MCP server behind Privi. You get an HTTP URL and a WebSocket URL that forward to it unchanged (x402 payments keep working) while Privi rate-limits callers, optionally requires a Privi Passport, meters every tool call and writes each call to your tamper-evident log. The kill switch stops the gateway instantly. Upstream must be public HTTPS. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | A name for this gateway, e.g. 'acme-search-mcp' | |
| guard | No | Privi Guard on every tool result: off, tag (add the verdict in _meta) or block (withhold injected results). Each check uses your Guard allowance or credits | off |
| min_score | No | 0 = open to everyone. >0 = callers must prove a KYA wallet whose Passport scores at least this (0-1000) | |
| rate_per_min | No | Requests per minute per caller (1-1200) | |
| upstream_url | Yes | The MCP server's public https URL (streamable HTTP), e.g. https://api.acme.com/mcp |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare a non-read-only, non-destructive, non-idempotent mutation, and the description adds substantial context beyond them: the kill switch behavior, tamper-evident call logging, rate-limiting, optional Passport gating, the public-HTTPS upstream constraint, and the org-API-key auth requirement. This is rich disclosure of effects and prerequisites for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then the value proposition, then prerequisites; nearly every sentence carries information. It is dense but slightly overstuffed, stacking many features into one long second sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by describing what is returned (HTTP and WebSocket URLs) and by covering auth, constraints, and side effects. It stops short of explaining how the guard/min_score/rate options interact, but an agent has enough to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each of the five params (name, guard, min_score, rate_per_min, upstream_url) is already fully documented in the schema. The description adds no parameter-level meaning beyond a general reference to 'rate-limits callers,' so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Put your MCP server behind Privi,' and elaborates the concrete artifacts produced (HTTP + WebSocket URLs) plus the value-add (rate-limiting, metering, logging). It is clearly a creation tool, though it never names the sibling it differs from (e.g. gateway_delete, gateway_set_guard, gateway_info), leaving differentiation to the obvious name prefix.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the create framing and by the stated prerequisites ('Upstream must be public HTTPS. Requires the organization API key'), but there is no explicit when-to-use versus when-not guidance or reference to gateway_set_guard/gateway_delete for subsequent lifecycle changes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gateway_deleteGateway: deleteADestructiveIdempotentInspect
Turn a gateway off. Its URLs stop working at once; history stays in your log. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| gw_id | Yes | gw_... ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true and idempotent=true, but the description adds real value beyond them: URLs stop working immediately, and gateway history is retained in the log. That clarifies what is and isn't destroyed, plus the org-API-key auth requirement. It doesn't say whether the gateway can be re-enabled or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action, then effect, then prerequisite. Every sentence carries distinct information with no repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema and rich annotations, the description covers effect, data retention, and auth. It could go one step further and state whether the disable is reversible or how the tool relates to gateway_create, but nothing critical to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single gw_id parameter ("gw_... ID"), so the schema already carries the semantics. The description adds no format, prefix, or lookup guidance beyond what the schema provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb+resource ("Turn a gateway off") and its operational effect, so an agent can tell it apart from gateway_create/gateway_info/gateway_list at a glance. It stops short of explicitly naming a sibling it must not be confused with, and the framing as "turn off" rather than "delete" is left for the reader to reconcile with the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Requires the organization API key" is a useful precondition, but the description offers no when-to-use vs when-not guidance and never points to any sibling (e.g. gateway_set_guard, gateway_create). Usage is only implied by the destructive effect described.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gateway_infoGateway: infoARead-onlyInspect
Public description of a gateway: where it forwards, whether callers need a Passport, its rate limit and its call counts. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| gw_id | Yes | gw_... ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=false), so the bar is lower, and the description still adds real context: the call is 'Free' (no credit cost) and it enumerates the returned fields. It does not say whether the gateway must exist or what happens on an unknown gw_id, but the added cost and content disclosure is meaningful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight sentence that front-loads the core purpose and appends the field list and the 'Free' qualifier without padding. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so enumerating the returned fields (forwarding target, Passport requirement, rate limit, call counts) is exactly the right compensation. The only gaps are error behavior and the boundary versus gateway_list/gateway_stats, which is a minor omission for a simple read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% — the single parameter gw_id is documented as a 'gw_... ID' in the schema — so the schema carries the burden. The description adds nothing about the identifier's format or lookup semantics, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it returns a gateway's public description, enumerated as forwarding target, Passport requirement, rate limit, and call counts. However it never distinguishes itself from the closely related siblings gateway_list and gateway_stats, so an agent must infer the boundary itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the required gw_id and the 'public description' framing suggest fetching metadata for one known gateway. No explicit when-to-use, when-not, or alternative (e.g. gateway_list for enumeration, gateway_stats for metrics) is named, so the agent must guess.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gateway_listGateway: your gatewaysARead-onlyInspect
Your organization's gateways. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds useful auth context (organization API key) and organizational scope, but says nothing about pagination, result limits, or return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the resource scope before the auth prerequisite. There is no filler, though the first sentence is close to the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only list with no output schema, the description conveys the scope and authentication need. It could say more about the return shape or pagination, but the tool's simplicity makes that a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the baseline is 4. The description adds no parameter detail, which is appropriate since none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The name and description together make clear this retrieves the organization's gateways. It stops short of 5 because the description uses a noun phrase rather than an explicit verb like 'list all' and does not name gateway_info to sharpen the one-vs-many distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states a prerequisite ('Requires the organization API key') but gives no when-to-use guidance or alternative tools. The agent must infer from the name gateway_list that this is the list-all variant, with no explicit comparison to siblings such as gateway_info.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gateway_set_guardGateway: Guard modeAInspect
Turn Privi Guard on for every tool result that passes through your gateway: tag adds the verdict and a receipt id in result._meta['privi/guard']; block also replaces injected results with an error before your agents see them. Each result is one Guard check (free allowance, then credits). Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | off | tag | block | |
| gw_id | Yes | gw_... ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With none of the annotations declaring what is actually mutated, the description carries that burden well: it specifies the exact write location (result._meta['privi/guard']), the semantic difference of block (injected results are replaced with an error before agents see them), the billing model (one Guard check per result, free allowance then credits), and the auth requirement. That is materially more than readOnlyHint=false / destructiveHint=false convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with the core action, then modes, then cost and auth. The middle clause packs both mode behaviors into one long sentence, which slightly hurts scannability, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by naming the result._meta key and the error-substitution behavior of block mode. It leaves 'off' mode and any gateway existence/permission prerequisites unstated, so it is strong but not fully closed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes further by defining the observable behavior of each mode value rather than restating the enum 'off | tag | block'. It adds nothing for gw_id beyond the schema's 'gw_... ID', and notably omits any explanation of 'off'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Turn Privi Guard on for every tool result that passes through your gateway') and immediately differentiates the two operating modes. It is clearly distinct from sibling gateway_* tools such as gateway_create, gateway_info, or gateway_stats, which deal with gateway lifecycle and metrics rather than guard configuration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains the selection criteria between the tag and block modes and states a hard prerequisite ('Requires the organization API key'), which is real usage context. It does not address the third schema mode value ('off'), nor when you would prefer Guard over other result-inspection tools like guard_check or scan_*, so there is no explicit alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gateway_statsGateway: usageARead-onlyInspect
Calls, errors, denials and x402 payment prompts per tool and per day for one of your gateways, plus your monthly quota. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| gw_id | Yes | gw_... ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish a safe read-only, non-open-world operation. The description adds useful behavioral context: it reports tool/day usage plus monthly quota and requires an organization API key. It does not cover pagination or return format, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the returned metrics and followed by the access prerequisite. No redundant or filler language.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with annotations and no output schema, the description supplies the metric list, scope, quota inclusion, and auth requirement. Nothing material is missing for correct selection or invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the gw_id parameter is already documented as a 'gw_... ID'. The description reinforces that the parameter selects 'one of your gateways,' but adds no format or selection detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States exactly what is returned—calls, errors, denials, x402 payment prompts, per tool and per day, plus monthly quota—for a specified gateway. The metric/scope phrase clearly distinguishes it from gateway_info, gateway_list, and guard_balance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The gateway scope and 'Requires the organization API key' establish when it is usable, but there is no explicit alternative routing such as 'use gateway_info for metadata.' Usage is implied rather than fully guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gov_ai_inventoryAI use case inventoryARead-onlyInspect
Your agency's AI use case inventory: the current version of each record. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| use_case_id | No | One use case; omit for all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and a closed-world scope, so the safety profile is covered. The description adds two useful behavioral facts beyond the annotations: an auth requirement (organization API key) and that only the current version of each record is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, purpose first, then the access constraint. No filler, no restatement of the tool name, and the most decision-relevant information leads.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only single-param list tool with full schema coverage and annotations covering safety, the description says enough to invoke it correctly. It stops short of noting return shape or pagination, though no output schema exists, so that gap is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single optional parameter is already documented ('One use case; omit for all'). The description adds no syntax, ID format, or filter semantics beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the resource (the agency's AI use case inventory) and scopes it to 'the current version of each record', which implicitly distinguishes it from version-history or export siblings. However, the verb is nominal/implicit and no sibling (e.g. gov_ai_inventory_export or gov_ai_inventory_check) is named to sharpen the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The prerequisite 'Requires the organization API key' is a genuine usage condition, but there is no guidance on when to choose this over gov_ai_inventory_check, gov_ai_inventory_export, or gov_ai_usecase_save. Usage is only implied by the purpose statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gov_ai_inventory_checkCheck inventory readinessARead-onlyInspect
Flags what an OMB M-25-21 review would flag before you submit: missing required fields, PII without a Privacy Impact Assessment, and high-impact AI in pilot or deployment missing any minimum risk practice (testing, impact assessment, independent review, monitoring, operator training, fail-safe, appeals, public feedback) or without a recently active activity log as monitoring evidence. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is known. The description adds a genuinely useful behavioral trait beyond the annotations: 'Requires the organization API key,' an auth prerequisite an agent must satisfy. It does not describe the return shape, but with no output schema and read-only annotations that is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single dense sentence, but the purpose is front-loaded ('Flags what an OMB M-25-21 review would flag before you submit') before the enumeration of checks. The eight-item risk-practice list is long yet each item is substantive, so it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema validator, the description covers the domain (OMB M-25-21), the trigger (pre-submission), the exact checks, and the auth requirement. It stops short of describing the response format (pass/fail vs issue list), the only meaningful omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema is trivially complete and the baseline of 4 applies. There is no parameter surface for the description to explain or compensate for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action (flags review-blocking issues) and enumerates exactly what it checks: missing required fields, PII without a PIA, and high-impact AI missing minimum risk practices or an active activity log. This is far more specific than the sibling gov_ai_inventory (listing) or gov_ai_inventory_export, so an agent can route correctly without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'before you submit' clearly frames when to use it as a pre-submission gate. However, it names no alternative tool (e.g., gov_ai_inventory_export to inspect raw data) and states no exclusions, so the routing guidance is contextual rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gov_ai_inventory_exportExport public inventoryAInspect
Machine-readable CSV of your publicly releasable AI use cases (for publishing at agency.gov/ai), with its SHA-256 sealed on chain (Base, until the Privi chain mainnet) so the published file can be proven unaltered. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| include_withheld | No | Include use cases marked withhold_from_public (internal copy) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond annotations by naming the auth requirement ('Requires the organization API key') and the on-chain anchoring side effect (SHA-256 sealed on Base until Privi mainnet), which explains why readOnlyHint is false despite the CSV output being a read. It stops short of describing seal failure behavior, chain latency, or cost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what is produced before the sealing and auth notes; no filler sentences. The second clause stacks a parenthetical chain caveat that makes the sentence slightly dense, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so: CSV format, contents (public use cases), and the seal that proves the file unaltered. The auth prerequisite is stated and the sole optional parameter is schema-documented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single optional param include_withheld already documents its effect ('internal copy'). The description adds nothing about that parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: exporting a machine-readable CSV of 'publicly releasable' AI use cases, with an on-chain SHA-256 seal. The 'publicly releasable' scoping distinguishes it in spirit from gov_ai_inventory, but the description never names the sibling it complements/excludes, so differentiation is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied via the parenthetical 'for publishing at agency.gov/ai'. There is no explicit when-to-use vs. gov_ai_inventory, gov_ai_verify_export, or gov_pqc_export, and no statement about when not to export or how the withheld-copy variant differs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gov_ai_usecase_saveSave an AI use caseAIdempotentInspect
Add or update an entry in your agency's AI use case inventory (OMB M-25-21). Every change creates a new version and is written to your tamper-evident 'ai-inventory' log. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | Yes | Who is making the change (person or agent) | |
| merge | No | Merge into the existing record (true) or replace it (false) | |
| use_case | Yes | AI use case record in OMB M-25-21 reporting fields. Required: use_case_id, name, stage (pre_deployment|pilot|deployed|retired), high_impact, purpose, outputs, sourcing (in_house|vendor|both), involves_pii, custom_code. Optional: bureau, contact_email, topic_area, ai_classification, withhold_from_public, expected_benefits, start_date, vendor_name, ato_system_name, data_description, open_data_link, pia_link, demographic_features, code_link, monitoring_streams (Ledger stream IDs), waivers [{practice, justification}], practices {name: {done, evidence, date}} with names: pre_deployment_testing, impact_assessment, independent_review, ongoing_monitoring, operator_training, fail_safe, appeal_process, public_feedback |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (mutation, non-destructive, idempotent), and the description adds genuinely useful context beyond them: every change creates a new version, writes go to a tamper-evident 'ai-inventory' log, and an API key is required. Slight tension with idempotentHint=true, since 'every change creates a new version' implies repeated identical calls could still mint new versions, but a no-op call arguably is not a change, so this is not a hard contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste, and the core action is front-loaded before the audit/auth details. Nothing redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with full annotation coverage, a fully documented nested schema, and no output schema, the description supplies the missing behavioral context (versioning, audit log, auth). What remains absent is return-value/pagination behavior, which is minor here since no output schema exists and the call semantics are self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including a detailed nested use_case object, so the schema already carries the parameter burden. The description adds only the log-stream name context and no syntax or format detail beyond the schema, making baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Add or update an entry in your agency's AI use case inventory (OMB M-25-21)'. This clearly distinguishes the write operation from the read-oriented siblings gov_ai_inventory / gov_ai_inventory_check / gov_ai_inventory_export, though it never names any sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a real prerequisite ('Requires the organization API key') and hints at versioning behavior, but gives no explicit when-to-use guidance versus the other gov_ai_inventory tools or when merge should be preferred. Usage context is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gov_ai_verify_exportVerify a published inventoryARead-onlyInspect
Check that a published AI inventory file is exactly what the agency exported from Privi Ledger, and return its on-chain seal. Free; no key needed.
| Name | Required | Description | Default |
|---|---|---|---|
| csv_text | Yes | The exact CSV file contents as published |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description adds critical behavioral context: it specifies the output (returning its on-chain seal) and practical constraints (
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is highly concise, front-loading the verification goal, detailing the specific return type, and concluding with essential operational information (cost and key requirements. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking an output schema, the description is complete by explicitly stating what the tool returns: 'its on-chain seal.' This addresses the functionality and constraints thoroughly for a single-input, read-only verification tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema provides 100% coverage, the description reinforces the parameter's meaning by clarifying that the `csv_text` must be 'exactly what the agency exported from Privi Ledger.' This adds vital context about the required input state.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action (Check/Verify) and the resource (published AI inventory file). It specifies the condition for the check (exactly what was exported from Privi Ledger) and distinguishes itself by focusing on returning the on-chain seal, differentiating it from general inventory tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While it does not explicitly name sibling tools, its highly specific purpose—verifying the authenticity and obtaining the on-chain seal—provides a very strong guideline for when this tool should be used, implicitly guiding the agent away from general inventory operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gov_pqc_classifyClassify an algorithmARead-onlyInspect
Classify cryptographic algorithms as quantum-vulnerable (RSA, ECDH, ECDSA, EdDSA, DH, DSA, MQV), post-quantum (ML-KEM, ML-DSA, SLH-DSA), hybrid, symmetric/hash, or unknown. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| algorithms | Yes | Algorithm or cipher-suite names, e.g. 'RSA-2048', 'ECDHE-RSA-AES256-GCM', 'X25519MLKEM768' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds the non-obvious cost signal ('Free'), which is genuine behavioral context not in the annotations, but says nothing about batching limits, per-item error handling, or unknown-name behavior. With annotations carrying safety, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler; the action is front-loaded and the category enumeration is the most information-dense part of the definition. Nothing could be removed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, no-output-schema reader, the description covers input intent and the set of possible classification results, which effectively conveys the return vocabulary. It does not state whether one label comes back per input algorithm or an aggregate is returned, a minor remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the single 'algorithms' array parameter is documented with format hints and examples ('RSA-2048', 'ECDHE-RSA-AES256-GCM', 'X25519MLKEM768'). The description lists output classes rather than adding input-format meaning, so baseline 3 is correct when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Classify') and resource ('cryptographic algorithms') and enumerates the exact output categories (quantum-vulnerable, post-quantum, hybrid, symmetric/hash, unknown) with representative algorithms. There is no overlapping sibling, so an agent can unambiguously identify what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no named alternatives. The only directive-style statement is 'Free,' which is a cost note rather than usage context. The agent must infer from the purpose alone that this is the right tool for qualifying algorithm names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gov_pqc_exportExport sealed CBOM and planAInspect
Export the full cryptographic inventory (CBOM) and migration plan as one JSON document for OMB, the CIO or auditors, with its SHA-256 sealed on chain (Base, until the Privi chain mainnet). Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, openWorldHint=true and idempotentHint=false, so the agent already knows this is a non-read, externally-reaching, non-idempotent call. The description adds valuable context the annotations don't: the seal is written to Base until the Privi mainnet, an organization API key is required, and the call is effectively an attestation-producing submission. It stops short of saying repeated calls create new seals or listing failure modes, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads what is exported and for whom, then tucks the sealing detail and auth requirement in trailing clauses. No filler, no restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no params and no output schema, the description covers the essentials: contents of the export, destination of the seal, chain caveat, audience and auth. It omits what the agent should do to verify the resulting seal (e.g., gov_pqc_verify_export) and any precondition such as an existing inventory, which keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4. The description still adds an operational requirement outside the schema: an organization API key must be supplied at the transport/auth level, which the empty input schema cannot express.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: export the full CBOM plus migration plan as a single JSON document, sealed with SHA-256 on chain. This is clearly distinguished from plain read tools like gov_pqc_inventory by the sealing behavior, but the description never mentions the closely-named siblings gov_pqc_verify_export or gov_ai_inventory_export, leaving the agent to infer the difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the intended audiences (OMB, CIO, auditors), which implies the compliance/attestation use case, but gives no explicit when-to-use versus when-to-call gov_pqc_verify_export or the raw inventory/plan tools. No prerequisites or exclusions beyond the API key requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gov_pqc_inventoryCrypto inventoryBRead-onlyInspect
Current cryptographic inventory of your systems. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| system_id | No | One system; omit for all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description usefully adds the authentication requirement (organization API key), but says nothing about result size, pagination, or what the inventory contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the resource and scope, and the auth prerequisite is compact. No filler, though nothing beyond the bare minimum is offered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only inventory tool with no output schema, the description does not describe what the inventory returns (systems, algorithms, quantum-vulnerability status) or whether results are paginated. Adequate given annotations cover safety, but incomplete for a tool whose output shape is undefined.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single optional parameter is already documented as 'One system; omit for all'. The description adds no syntax or scoping detail beyond that, so the schema does the heavy lifting and baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource: retrieving the current cryptographic inventory of the organization's systems. It does not distinguish itself from adjacent siblings such as gov_pqc_classify, gov_pqc_plan, or gov_pqc_export, which an agent must infer from the names alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a precondition (organization API key required) but no explicit when-to-use or when-not-to-use guidance relative to gov_pqc_classify, gov_pqc_plan, or gov_pqc_export. Usage is only implied by the tool name and scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gov_pqc_planPost-quantum migration planARead-onlyInspect
Prioritized post-quantum migration plan: every quantum-vulnerable asset ranked (High Value Assets, high-impact systems and long-lived sensitive data first; key establishment before signatures), with its deadline (key establishment Dec 31 2030, signatures Dec 31 2031), recommended NIST replacement, progress metrics, and findings (missed deadlines, TLS below 1.3, no target dates, unrecognized algorithms). Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered; the description still adds real value by stating the API-key requirement and by disclosing the ranking logic (HVA/high-impact/long-lived data first, key establishment before signatures) and the deadlines applied. It stops short of saying whether this is computed live, whether it is deterministic, or how large the result can be.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence, front-loaded with the artifact name, followed by the auth prerequisite — nothing is wasted and no filler. It is long, but every clause (ranking rules, deadlines, findings types) carries information an agent would otherwise have to guess.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing the return, and it does list the returned elements well (ranking, deadline, recommended replacement, metrics, findings). It omits result shape, size, and whether an empty or non-onboarded org returns an error, which matters for a report tool with no parameters to narrow scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero parameters, so there is no parameter semantics to explain and the baseline of 4 applies. The description correctly implies the tool is parameterless by scoping everything to the caller's organization.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific artifact (a prioritized migration plan) and enumerates what it contains: ranked assets, deadlines, NIST replacements, progress metrics, and findings. That is far more than a restatement of the title. It doesn't explicitly distinguish itself from siblings like gov_pqc_inventory or gov_pqc_classify, so ranking vs. listing vs. labeling is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The content implies usage (you call this when you want a prioritized remediation roadmap rather than raw inventory), and 'Requires the organization API key' is a stated prerequisite. However, no alternative tool is named and no condition is given for choosing this over gov_pqc_inventory, gov_pqc_classify, or gov_pqc_export.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gov_pqc_system_saveSave a system's crypto inventoryAIdempotentInspect
Record the cryptographic inventory (CBOM) of one system for post-quantum migration. Every change creates a new version and is written to the agency's tamper-evident 'pqc-inventory' log. Scanners and agents can submit results directly. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | Yes | Who made the change (person, scanner or agent) | |
| system | Yes | System record: system_id, name, bureau, owner, high_value_asset, high_impact, sensitive_until_year, fedramp_cloud, notes, assets [{asset_id, kind (key_establishment|signature|encryption|symmetric|hash|protocol|certificate), algorithm, key_size, protocol, location, product, vendor, status (not_started|planned|in_progress|hybrid|migrated), target_date (YYYY-MM-DD), replacement, evidence}]. Replaces the system's previous inventory. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses that every change creates a new version, that writes go to a tamper-evident 'pqc-inventory' log, and that an organization API key is required. These are meaningful operational facts (versioning, audit trail, auth) not derivable from readOnlyHint/idempotentHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the core action and followed by behavior and prerequisites. No filler, though the scanner/agent sentence is somewhat loose and could be merged.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description covers the mutation semantics, versioning, logging, and auth needs, while the schema fully specifies the nested system record. Nothing essential for a correct call appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters (actor, system) are already fully documented, including the nested asset fields and the fact that the inventory is replaced. The description only adds the 'one system' scoping and the actor types, which the schema already covers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Record the cryptographic inventory (CBOM) of one system') with the domain purpose (post-quantum migration). An agent can distinguish this write from read/export siblings like gov_pqc_inventory and gov_pqc_export, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Scanners and agents can submit results directly' gives a caller profile, and the API-key requirement sets a precondition. However, it never says when to use this versus gov_pqc_inventory or gov_pqc_plan, nor any exclusions, so guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gov_pqc_verify_exportVerify a CBOM exportARead-onlyInspect
Check that a CBOM and migration-plan document is exactly what was exported from Privi Ledger and return its on-chain seal. Free; no key needed.
| Name | Required | Description | Default |
|---|---|---|---|
| document | Yes | The 'document' object exactly as exported |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds real behavioral context beyond that: it discloses the return value (an on-chain seal) and the auth requirement ('no key needed'), which an agent needs to know it can call this without credentials. It stops short of describing failure behavior 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the verification action and its guarantee come first, followed by the cost/auth note. No filler, no repetition, everything front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-param verification tool with no output schema, the description supplies the key missing piece by stating it returns the on-chain seal. Combined with the readOnly annotation and the auth note, an agent has enough to call it correctly; only edge-case behavior on a failed verification is unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'document' param is already documented as 'exactly as exported'. The description's 'exactly what was exported' phrasing reinforces the integrity expectation but adds little syntactic or structural detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Check/Verify) plus the exact resources (CBOM and migration-plan document) and the guarantee being verified (exactly what was exported from Privi Ledger). This differentiates it from the many siblings (gov_pqc_export, gov_ai_verify_export, gov_pqc_plan) by naming the artifact type and the source ledger.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: you call it on a document that was exported from Privi Ledger. There is no explicit when-to-use/when-not, no mention of the related export step that produces the input, and no contrast with gov_ai_verify_export despite it being a near-twin. 'Free; no key needed' is a helpful gate but not routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guard_balanceGuard: balanceARead-onlyInspect
Your free checks left this month and your prepaid credits. Needs the organization key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safe read-only nature is covered. The description adds the auth requirement ('Needs the organization key') and the exact data scope (monthly free checks, prepaid credits), which is useful context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences: the first states what is returned, the second states the prerequisite. It is front-loaded and every word carries information, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter, read-only tool with no output schema, the description tells the agent what data is returned and what credential is needed. Annotations carry the safety profile, so nothing critical for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the schema is empty and the baseline is 4. The description adds meaningful invocation context by stating that an organization key is required, even though that key is not represented as a parameter in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific resource it returns ('free checks left this month and your prepaid credits') but omits an explicit verb like 'get' or 'return'. It still distinguishes the tool from siblings such as guard_check and guard_buy_credits by focusing on balance information rather than checks or purchases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool instead of guard_check, guard_buy_credits, or guard_pricing. The phrase 'Needs the organization key' is a prerequisite, not a routing condition or alternative comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guard_buy_creditsGuard: buy check creditsAInspect
Buy prepaid Privi Guard checks in USDC on Base via x402. Credits never expire and are used after the free monthly allowance. Needs the organization key.
| Name | Required | Description | Default |
|---|---|---|---|
| pack | Yes | 1k = 1,000 checks for 7 USDC; 10k = 10,000 for 50 USDC; 100k = 100,000 for 300 USDC |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare a non-read-only, non-idempotent, open-world operation, and the description adds genuinely new context: the funding rail (USDC on Base via x402), that credits never expire, that they apply after the free monthly allowance, and that an organization key is required. It does not contradict the annotations ('Buy' is consistent with readOnlyHint=false) and usefully surfaces the auth prerequisite.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the core action front-loaded, followed by the operational details (expiration, allowance, auth). Every clause carries information; there is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter purchase tool with no output schema, the description covers the payment method, authentication requirement, credit lifetime, and when credits are consumed. It could state what a successful purchase returns or debits, but the essential calling context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'pack' enum is fully documented with prices (1k/10k/100k in USDC) in the schema itself. The description adds no parameter detail beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Buy prepaid Privi Guard checks') plus the payment rail ('USDC on Base via x402'), so an agent immediately understands this is a credit-purchase operation distinct from guard_check or guard_balance. It does not explicitly name a sibling to avoid, keeping it short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The line 'used after the free monthly allowance' implies the condition under which purchase is needed, giving an implicit when-to-use. There is no explicit when-not guidance and no routing to alternatives such as guard_pricing or guard_balance, so usage remains inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guard_checkGuard: check text before acting on it or sending itARead-onlyIdempotentInspect
Check content for prompt injection (inbound) or leaked secrets and personal data (outbound) before an agent acts on it or sends it. Returns allow / warn / block, the findings, a redacted copy for outbound secrets, and an Ed25519-signed receipt anchored on-chain, which proves the check happened. Privi does not store the text. Free for 1,000 checks a month with an organization key; otherwise 1 cent per check in USDC via x402.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The content to check: a web page, email, document or tool result the agent is about to act on (inbound), or what the agent is about to send (outbound) | |
| source | No | Optional label for the receipt, e.g. the page URL or tool name | |
| direction | No | inbound = untrusted content coming in (prompt injection, hidden instructions); outbound = content going out (API keys, card numbers, data smuggled in URLs) | inbound |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly/idempotent/closed-world, so the description carries the interesting load and does so: it discloses the return vocabulary (allow/warn/block), the findings, the redacted copy, an on-chain-anchored Ed25519 receipt, the non-storage guarantee, and the pricing model (free 1,000/month with org key, else 1 cent USDC via x402). These are concrete behavioral traits an agent can't derive from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose in the first sentence, then the return contract, then the trust/privacy and pricing facts, with no filler sentences. The one-sentence pricing/x402 tail is dense but still earns its place for a paid tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully compensates by explaining the return values (allow/warn/block, findings, redacted copy, signed receipt). Combined with the parameter docs and annotation-covered safety profile, an agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the enum for direction plus the source label are fully documented in the schema, so a baseline of 3 applies. The description reinforces the inbound/outbound semantics but adds no syntax, format, or constraint detail beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Check content for prompt injection ... or leaked secrets and personal data') and adds the preconditions 'before an agent acts on it or sends it'. It does not name its closest sibling guard_check_many (the batch variant), so the boundary with that sibling is left to inference, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context via the inbound/outbound framing: check untrusted content coming in before acting on it, check content going out before sending it. No explicit when-not or alternative-tool routing (e.g. use guard_check_many for multiple texts, or guard_receipt to fetch a receipt later), 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.
guard_check_manyGuard: check many texts at onceARead-onlyIdempotentInspect
Check up to 50 texts in one call (for example every tool result in a step). Each item is billed as its own check against your free allowance or credits and gets its own receipt. Needs an organization key.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Up to 50 items {"text": "...", "direction": "inbound"|"outbound", "source": "optional label"} |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the read-only/idempotent/closed-world profile, and the description adds substantial extra context they don't convey: per-item billing against allowance or credits, per-item receipts, the 50-item cap, and the organization-key auth requirement. These are exactly the operational facts an agent needs before invoking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, zero filler, with the batch scope and cap front-loaded before secondary details like billing and auth. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the operational essentials (cap, billing, auth) for a batch-check tool and the schema fully documents the input shape. With no output schema, it could optionally say what each check returns beyond 'receipt,' but nothing critical for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the items array format (text, direction, source) is fully documented in the schema itself. The description adds no syntax or format detail beyond that, and the per-item billing note is behavioral rather than parameter semantics, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with explicit batch scope: 'Check up to 50 texts in one call.' The batch framing clearly separates it from the singular guard_check sibling, though it never names that sibling explicitly, so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete usage context ('for example every tool result in a step'), which tells the agent when this tool fits. It does not, however, state when to prefer the single-check sibling guard_check or any exclusions, so no explicit alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guard_pricingGuard: pricing and how it worksBRead-onlyInspect
What Privi Guard checks, what it costs, and how receipts work. Free.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the agent knows this is a safe, sandboxed read. The description adds the useful fact that the tool is 'Free', but does not clarify what 'checks' means or whether this returns static content versus live account data. With annotations covering the safety profile, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with no filler, and the key content areas are front-loaded. It is arguably too terse given the ambiguity of 'checks', but nothing in it is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description is not obligated to explain return values, and a parameterless read tool has a small contract to document. The remaining gap is the vague phrase 'what Privi Guard checks', which an agent must resolve by calling the tool, but overall it is complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate beyond what an empty schema already communicates. Baseline of 4 applies for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource (Privi Guard pricing information) and enumerates the three content areas it covers: what Guard checks, what it costs, and how receipts work. That is clearer than the bare name 'guard_pricing'. It does not, however, differentiate itself from the sibling guard_receipt or ledger_pricing, leaving the agent to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus the many adjacent pricing/receipt tools such as ledger_pricing, guard_receipt, or guard_balance. The description only states what the tool contains, not the condition under which an agent should reach for it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guard_receiptGuard: verify a receiptARead-onlyInspect
Verify a Privi Guard receipt: the signed body, signature validity and its Merkle proof into the anchored transparency log. Free; anyone holding the id can verify it.
| Name | Required | Description | Default |
|---|---|---|---|
| check_id | Yes | gc_... id from a guard_check receipt |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds genuine value beyond that: it discloses that verification covers signature validity and Merkle inclusion in an anchored log, and that the operation is free and open to any holder of the id. It stops short of describing the verification verdict or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the verb and resource, then layers the verification scope, ending with the access/cost note. No filler and nothing redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries some burden for explaining what a caller gets back. It gestures at this by naming what is checked (signature validity, Merkle proof) but never states the shape or meaning of the result, such as a valid/invalid verdict or failure reasons. Adequate but with a clear gap for a verification tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% – the single check_id parameter is documented as 'gc_... id from a guard_check receipt'. The description adds no syntax or format detail beyond that, so the schema does the heavy lifting. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (verify) and resource (a Privi Guard receipt), then decomposes what is verified: the signed body, signature validity, and the Merkle proof into the anchored transparency log. It is much more informative than a bare name restatement. It does not, however, distinguish itself from adjacent siblings such as guard_check or ledger_check_receipt, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Free; anyone holding the id can verify it' implies the precondition (you need the gc_... id) and the cost, which is useful framing. But there is no explicit when-to-use guidance and no routing against alternatives like guard_check (create the receipt) or ledger_check_receipt. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kya_bind_walletKYA: bind a walletAIdempotentInspect
Step 2: bind the wallet to your organization's Privi Passport so its transactions pass KYA checks. With a wallet signature the binding is proven; without one it is only declared (most checkers require proven). Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | Friendly name, e.g. 'treasury-agent hot wallet' | |
| address | Yes | 0x wallet address | |
| signature | No | 65-byte hex signature of the challenge message by the wallet | |
| stream_id | No | The agent (stream) that uses this wallet; omit for the whole organization | |
| challenge_id | No | From kya_challenge |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnly=false, destructive=false, idempotent=true, openWorld=false), so the description's added value is the semantic consequence of the signature parameter (proven vs merely declared) and the auth requirement. It does not disclose error behavior or whether re-binding an already-bound wallet is a no-op, but the annotation coverage lowers the bar.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the action and purpose, then the signature distinction, then the auth prerequisite. No filler or repetition of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation tool with no output schema and no enums, the description covers purpose, prerequisite, and the key behavioral distinction, while the schema handles the stream_id/label/challenge_id scoping. It could say more about failure modes or what is returned, but nothing essential to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns an extra point by explaining what the signature parameter actually accomplishes in the domain (proof vs declaration and why checkers care), which is meaning the schema's mechanical '65-byte hex signature' text does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('bind the wallet to your organization's Privi Passport') plus the outcome it enables ('transactions pass KYA checks'), and its 'Step 2' framing plus the bind/unbind sibling names let an agent place it precisely in the KYA family.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear conditions for the two modes ('with a wallet signature the binding is proven; without one it is only declared (most checkers require proven)') and states the prerequisite 'Requires the organization API key'. It stops short of explicitly naming kya_challenge as the prerequisite call or ruling out alternatives, but the context for when to call it is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kya_challengeKYA: challenge for a walletAInspect
Step 1 of binding a wallet to your Privi Passport: get a message to sign with that wallet (EIP-191 personal_sign). Valid 30 minutes. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet address your agent controls |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and idempotentHint=false, which the description reinforces by describing a fresh, transient artifact rather than a pure read. It adds real behavioral detail the annotations cannot convey: a 30-minute TTL, the signing standard (EIP-191), and the organization API key requirement. It does not say whether re-calling invalidates prior challenges, so it is not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the step number and purpose front-loaded, followed by the signing format, TTL, and auth requirement. Every clause adds information; nothing is redundant with the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema, the description conveys the essential contract: a message is returned, it must be signed with the given wallet, and it expires in 30 minutes. It could go one step further and tell the agent to pass the signed message to kya_bind_wallet, but the flow is largely reconstructable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter 'address' is documented as '0x wallet address your agent controls'. The description only echoes this with 'with that wallet', adding no format, network, or validation detail beyond the schema. Baseline 3 applies when the schema carries the full parameter burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'get a message to sign with that wallet' — plus the exact cryptographic standard (EIP-191 personal_sign) and the framing 'Step 1 of binding a wallet to your Privi Passport'. That framing cleanly separates it from the adjacent kya_bind_wallet sibling without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context: this is the first step in the wallet-binding flow, it requires the organization API key, and the output is only valid for 30 minutes. It falls short of explicitly naming kya_bind_wallet as the mandatory follow-up step, so the agent must infer the sequencing from 'Step 1'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kya_checkKYA: check a walletARead-onlyInspect
Know-Your-Agent for blockchains: is this wallet operated by an audited AI agent, and how trustworthy is it right now? Resolves the address to its organization and live Privi Passport and returns allow/deny with reasons, plus a Privi-signed attestation (valid 60 min) you can cache. For chains, DeFi protocols, exchanges, stablecoin issuers and x402 facilitators. Free; send your organization key to log the check as evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet address about to send or receive a transaction | |
| purpose | No | What the transaction is for (recorded in your log if you send your key) | |
| min_grade | No | Minimum grade A-E | |
| min_score | No | Minimum current Passport score 0-1000 | |
| require_signed | No | Require wallet ownership proven by signature (not just declared) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered; the description still adds real value by disclosing the allow/deny-with-reasons output, a Privi-signed attestation valid 60 minutes that is cacheable, and the zero cost. It does not explain how the organization key is transmitted (header vs. param) or any rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core question (is this wallet operated by an audited AI agent, and how trustworthy is it right now?) before the mechanical details, and every sentence carries information. Slightly dense with the attestation/validity/logging clause stacked at the end, but no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly carries the burden of describing the return (allow/deny with reasons, cacheable 60-minute attestation), which is exactly what an agent needs. Annotations cover the read-only profile, and 100% schema coverage handles the inputs; only the grade scale and how min_grade/min_score interact are left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3: address, purpose, min_grade, min_score and require_signed are all documented in the schema itself. The description only lightly reinforces this (purpose is 'recorded in your log if you send your key') and introduces an organization-key concept that is not a schema parameter, so it adds little beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (check) and resource (a wallet's AI-agent status / Privi Passport), and states concretely what is returned: allow/deny with reasons plus a signed attestation. This distinguishes it from sibling tools like kya_bind_wallet, kya_wallets and passport_verify, which bind, list, or verify passports rather than resolve a wallet to a trust decision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the callers/contexts it serves (chains, DeFi protocols, exchanges, stablecoin issuers, x402 facilitators) and notes it is free and can be logged by sending an organization key. It stops short of naming alternatives such as passport_verify or stating when a check is unnecessary, so the routing guidance 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.
kya_unbind_walletKYA: unbind a walletADestructiveIdempotentInspect
Remove a wallet from your Passport (rotated or compromised key). KYA checks deny it immediately. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | 0x wallet address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and non-readonly, so the safety profile is covered. The description adds real value beyond them by disclosing the downstream consequence ('KYA checks deny it immediately') and the auth requirement (organization API key).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with zero filler: action first, consequence second, prerequisite last. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, credential-gated mutation with no output schema, the description covers the action, the enforcement effect, and the auth requirement. It is largely complete, though a note on whether the wallet can be re-bound or what happens to existing KYA records would close the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single address parameter, so the schema already documents the input fully. The description adds no format or constraint detail about the address beyond what the schema provides, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Remove a wallet from your Passport') and is the clear inverse of the sibling kya_bind_wallet, so an agent can tell them apart without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names the triggering scenario ('rotated or compromised key') and the prerequisite ('Requires the organization API key'), giving clear context for when to reach for this tool. It stops short of naming alternatives or explicit when-not conditions, so it does not reach a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kya_walletsKYA: your walletsBRead-onlyInspect
Wallets bound to your organization and how each was proven. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is known. The description adds the organization API key prerequisite, which is useful auth context. It does not discuss pagination, ordering, or return format, so it clears the lowered bar but is not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no wasted words, and the resource is front-loaded. The fragment style is minimal but functional rather than confusing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only tool with annotations covering safety and no output schema, the description supplies the core purpose and the API-key requirement. It omits listing scope and pagination details, but the tool is simple enough that these gaps are minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4 per the rules. There are no parameters for the description to add meaning to beyond the schema already showing an empty input object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (wallets bound to the organization) and includes the returned attribute (how each was proven). Although it lacks an explicit verb like 'list', the plural 'Wallets' and title make the read-only listing intent clear. It does not differentiate itself from siblings such as kya_check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance beyond the API key requirement. It does not tell the agent when to call this versus kya_check, kya_bind_wallet, kya_unbind_wallet, or other KYA siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ledger_audit_streamAudit a streamARead-onlyInspect
Check whether an agent's action log is intact: entry count, time span, action and failure counts, head hash, and where tampering broke the chain if it did. Does not reveal the actions themselves. Paid per call via x402.
| Name | Required | Description | Default |
|---|---|---|---|
| org_id | Yes | Organization ID, e.g. org_1a2b3c4d5e6f7a8b | |
| stream_id | Yes | Stream ID, usually the agent's name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=false), but the description adds two traits not in structured data: the cost model ('Paid per call via x402') and the privacy guarantee that raw actions are not exposed. It stops short of stating failure modes (e.g. behavior on an empty or missing stream) 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, then the enumerated outputs, the privacy boundary, and the cost note. With no output schema, the field enumeration earns its place rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully documents the returned fields, the non-disclosure boundary, and the per-call payment — enough for an agent to call it correctly. It is slightly thin on edge-case behavior (tampered vs intact output shape, empty streams), which keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with only org_id and stream_id, both documented in the schema itself (including the 'stream_id is usually the agent's name' hint). The description adds no extra parameter meaning beyond linking the call to 'an agent's action log', so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Check whether an agent's action log is intact') and enumerates exactly what is inspected: entry count, time span, action/failure counts, head hash, and where the chain broke. The clause 'Does not reveal the actions themselves' implicitly distinguishes it from the action-revealing sibling ledger_read_stream, so an agent can separate the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied — an agent can infer this is for integrity verification after actions are recorded, but there is no explicit 'use this when...' framing and no sibling alternative (e.g. ledger_read_stream, ledger_verify_report) is named as the choice for a different need. The privacy clause hints at a boundary but does not state the routing condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ledger_check_receiptCheck a receiptARead-onlyInspect
Confirm that an action receipt exists in the ledger and when it was recorded. Reveals no action contents. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| entry_hash | Yes | 64-character hex entry_hash returned when the action was recorded |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=false), so the bar is lower. The description usefully adds that the tool returns only existence and timestamp, not action contents, and that it is free — real behavioral value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, no waste, with the core purpose front-loaded and the caveats (no contents, free) trailing succinctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the description tells the agent what is confirmed and what is not revealed, which is nearly everything needed. Minor gap: no explicit statement of failure behavior when the entry is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with entry_hash fully documented (64-character hex returned at record time). The description adds nothing about the parameter, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (confirm) and resource (action receipt in the ledger) plus the returned fact (when it was recorded). It hints at its read-only inspection role, but never names a sibling like ledger_record_action or ledger_verify_report to differentiate itself explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Reveals no action contents. Free.' implies when this is preferable to a content-reading tool, but it never names an alternative or states a condition for choosing it. Usage is implied rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ledger_compliance_reportCompliance reportAInspect
Audit-ready report of your AI agents' activity for a period (SOC 2 evidence, security questionnaires, AI-regulation record keeping): actions by type, failures, human approvals, log integrity, on-chain status, and findings. The report's hash is anchored on the Privi blockchain so it cannot be edited later without detection. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | Start of period, ISO 8601 UTC (e.g. 2026-10-01T00:00:00Z). Omit for all history | |
| until | No | End of period, ISO 8601 UTC. Omit for now | |
| streams | No | Only these streams; omit for all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark this non-read-only, open-world, non-idempotent, and explicitly not destructive, but say nothing about what actually happens. The description supplies the missing behavior: the report hash is anchored on the Privi blockchain and is tamper-evident, and an organization API key is mandatory. It is consistent with readOnlyHint=false rather than contradicting it, though the cost/latency of anchoring is unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded paragraph: deliverable first, then report contents, then the integrity guarantee, then the auth requirement. The parenthetical list of use cases is dense but each item is a real reason to call it. Nothing is padding, though the sentence is long and could be split.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of telling the agent what comes back, and it does: section-by-section contents plus the blockchain hash that makes the artifact defensible. Auth, time window, and scope filtering are all accounted for, and the report artifact need not be described further.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter already carries its own ISO 8601 format hint and omit-behavior (since = all history, until = now, streams = all). The description adds only the loose phrase 'for a period', which it already conveys via the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific deliverable (an audit-ready compliance report) and enumerates exactly what it contains: actions by type, failures, human approvals, log integrity, on-chain status, findings. That is far more than a restated name. It stops short of distinguishing itself from close siblings like ledger_report_pdf or ledger_read_stream, which an agent may equally plausibly pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete consumption contexts (SOC 2 evidence, security questionnaires, AI-regulation record keeping) and states a hard prerequisite ('Requires the organization API key'). It never names an alternative tool or a when-not condition, so the agent must infer the boundary with ledger_report_pdf and ledger_read_stream.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ledger_consistency_proofConsistency proofARead-onlyInspect
Proof that Privi's log only grew between two signed tree heads: nothing recorded earlier was edited, removed or reordered (RFC 9162). Free.
| Name | Required | Description | Default |
|---|---|---|---|
| first | Yes | Older signed tree size | |
| second | No | Newer signed tree size; omit for latest |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint=false, so the safety profile is covered. The description adds real context beyond that: exactly what property is proven (append-only, no edit/removal/reorder), the standard it conforms to (RFC 9162), and the absence of cost ('Free'). It stops short of describing the returned proof format or verification behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight clauses with the core guarantee front-loaded and no redundant restatement of the name. The trailing 'Free.' is terse but earns its place by surfacing a cost signal an agent would otherwise have to discover.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only proof endpoint with two params at full schema coverage and no output schema, the description covers what is proven and the cost. The remaining gap is the shape of the returned proof, which an agent may still want, but nothing critical to invoking it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with 'first' documented as the older signed tree size and 'second' as the newer size, omitting for latest. The description's 'two signed tree heads' corroborates this but adds no syntax, ordering, or edge-case detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific cryptographic artifact and its semantics: a proof that the log only grew between two signed tree heads, with the concrete guarantees (nothing edited, removed, or reordered) and the RFC 9162 reference. It implicitly distinguishes this from the sibling ledger_inclusion_proof by describing append-only consistency rather than membership, but it never names that alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use, no prerequisites (e.g., that you need two recorded tree heads), and no routing to alternatives such as ledger_tree_head to obtain the heads or ledger_inclusion_proof for membership. Only the 'Free' hint signals anything about cost.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ledger_evidence_bundleEvidence bundleARead-onlyInspect
Export a self-contained evidence package for auditors, courts or air-gapped systems: every entry, the hash chain, an RFC 9162 inclusion proof, the signed tree head, on-chain checkpoint and Privi's keys, signed with Ed25519 and ML-DSA-87. Verify offline with verify_bundle.py (GET /tools/verify_bundle.py). Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| stream_id | Yes | Stream to export |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered; the description goes further by disclosing the auth requirement ("Requires the organization API key"), the signing algorithms (Ed25519 and ML-DSA-87), and the fact that the package is self-contained and verifiable offline. It does not mention rate limits, size limits, or whether export is logged/notified, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences with zero filler: the verb and resource are front-loaded, the enumerated bundle contents follow, and the second sentence carries the verification path and auth prerequisite. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, non-destructive read tool with annotations covering the safety profile and no output schema to explain, the description supplies the missing pieces: what the artifact contains, how to verify it offline, and that an org API key is required. Only the origin/selection of stream_id is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (stream_id) with 100% schema description coverage, so the schema already documents it. The description adds nothing about where to obtain a stream_id (e.g. ledger_list_streams) or what a stream represents, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Export") and a precisely enumerated resource: every entry, hash chain, RFC 9162 inclusion proof, signed tree head, on-chain checkpoint and keys. This level of content specification clearly distinguishes it from siblings such as ledger_report_pdf, ledger_compliance_report and ledger_inclusion_proof.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear use context ("for auditors, courts or air-gapped systems") and points to the offline verification path via verify_bundle.py. It does not, however, state when an agent should prefer this over sibling artifacts like ledger_report_pdf or ledger_compliance_report, so routing among near-neighbors is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ledger_handshake_acceptAccept a handshakeAInspect
Accept a handshake addressed to your organization: records the same terms in your log, confirms it in the other company's log, and seals the matched pair on chain (Base). Requires your organization API key. Read the terms first with ledger_handshake_inbox.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | Yes | Who is accepting on your side | |
| stream_id | Yes | Your stream to record it in | |
| handshake_id | Yes | hs_... ID from the offer |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, the description discloses cross-organization side effects: recording the same terms in your log, confirming in the other company's log, and sealing the matched pair on chain. It also states an auth requirement. It does not cover failure behavior or result shape, but annotations already declare the mutation and idempotency profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The action is front-loaded, followed by the side effects, auth requirement, and prerequisite in compact sentences. Every sentence adds useful information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex mutation that spans local logs, another organization's log, and on-chain sealing, the description covers the side effects and prerequisite well. It does not describe the return value or failure states, and there is no output schema to fill that gap, so it is strong but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains handshake_id, stream_id, and actor. The description adds context about accepting terms addressed to your organization but does not add parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Accept a handshake') and explains the resulting effects: recording terms in both logs and sealing the matched pair on chain. It also distinguishes the read-before-accept workflow by naming ledger_handshake_inbox.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear prerequisite: read the terms first with ledger_handshake_inbox. It also states the organization API key requirement. It does not explicitly discuss when not to use it versus siblings such as reject or verify, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ledger_handshake_inboxHandshake inboxARead-onlyInspect
Handshakes sent to and from your organization, newest first, with their terms and status. Requires your organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds useful context beyond annotations: the ordering ('newest first'), the included fields ('terms and status'), and the API-key requirement. It still omits pagination or result limits, which are relevant for an inbox-style listing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tightly written sentences with no filler. The core content and ordering are front-loaded, and the API-key requirement is appended as a clear prerequisite.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only list tool with annotations covering safety and no output schema, the description is largely complete: it states what is returned, the ordering, and the auth requirement. It would be stronger with a note about pagination or result-size limits, but no critical information is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there are no parameter semantics for the description to clarify. Per the baseline for zero-parameter tools, a 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource (handshakes sent to and from the organization) and scope (inbox view, newest first, with terms and status). It clearly separates this from action-oriented siblings like ledger_handshake_offer or ledger_handshake_accept, but does not explicitly name alternatives or use a direct verb such as 'list'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a prerequisite ('Requires your organization API key') but no explicit guidance on when to use this inbox versus sibling tools such as ledger_handshake_verify or ledger_handshake_accept. Usage is only implied by the inbox framing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ledger_handshake_offerOffer a handshakeAInspect
Start a Privi Handshake: a two-sided record of a dealing with another company's agent (payment, data transfer, delivery, agreement). Recorded in your log now; when the other company accepts, both logs hold matching entries and the pair is sealed on chain (Base). Requires your organization API key; the other company must also use Privi Ledger.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | Yes | Who is acting on your side | |
| details | No | Terms as structured data (amounts, quantities, dates) | |
| summary | Yes | What is being agreed or done between the two companies | |
| resource | No | Invoice, order, dataset, contract or other reference | |
| stream_id | Yes | Your stream to record it in, usually your agent's name | |
| action_type | Yes | One of: tool_call, data_access, data_change, payment, message, decision, approval, error, other | |
| expires_hours | No | Hours the other company has to respond | |
| counterparty_org_id | Yes | org_id of the other company (must be on Privi Ledger) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description explains that the entry is recorded in the caller's log immediately and only becomes a sealed matching pair after the other company accepts. It also discloses the organization API key requirement, the counterparty prerequisite, and the on-chain Base sealing behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the action and resource, then explains the two-sided lifecycle and prerequisites without filler. Every sentence contributes useful context for selecting and understanding the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation with no output schema, the description covers the workflow, prerequisites, and sealing behavior well. It could say more about the immediate return value or offer state after creation, but the core operational context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter. The description adds context about the overall handshake but does not add parameter-level meaning beyond what the schema provides, making the baseline score appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: "Start a Privi Handshake." It explains that this is a two-sided record of a dealing and gives concrete examples such as payment, data transfer, delivery, and agreement. This distinguishes it from ledger_record_action and from the accept/reject/verify handshake siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: use it to start a two-sided record with another company's agent, and the counterparty must also use Privi Ledger. It does not explicitly name alternatives such as ledger_record_action for unilateral records or ledger_handshake_accept for the responding side, so the routing guidance 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.
ledger_handshake_rejectReject a handshakeAInspect
Reject a handshake addressed to your organization; the other company's log records the rejection. Requires your organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Why it is rejected (shared with the other company) | |
| handshake_id | Yes | hs_... ID from the offer |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare this is a non-read-only, non-destructive, non-idempotent, closed-world mutation. The description adds two things annotations cannot: the rejection is externally visible in the counterparty's log, and an organization API key is required. It stops short of saying what happens to the local handshake state or what a repeat call does, which matters given idempotentHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both front-loaded with the action and then the key constraint and auth requirement. Every clause carries information an agent needs; nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-required-param mutation with no output schema and a full set of annotations, the description covers scope, side effect visibility, and auth. The remaining gap is what the caller gets back and how the handshake's state changes, which is minor given annotations already signal the safety profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters (handshake_id format 'hs_...', and the shared reason) are already documented in the schema. The description adds no parameter-level detail beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (reject) and resource (handshake addressed to your organization), and adds the consequence that the other company's log records the rejection. It is clearly distinguishable in intent from the sibling ledger_handshake_accept, though it never names that sibling to sharpen the contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'addressed to your organization' scopes which handshakes this applies to, which implies usage. But there is no explicit when-to-use versus when-to-accept guidance and no mention of the sibling ledger_handshake_accept as the alternative path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ledger_handshake_verifyVerify a handshakeARead-onlyInspect
Public check of a handshake: both companies, status, whether both matching log entries still exist, and the on-chain seal. Never reveals the terms. Free; useful for disputes and audits.
| Name | Required | Description | Default |
|---|---|---|---|
| handshake_id | Yes | hs_... handshake ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered, and the description adds genuinely new behavioral facts: it is free, it is a public check, and it never reveals the terms (a privacy guarantee). It stops short of describing failure modes for an unknown or malformed handshake ID.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with what is checked and followed by the privacy and cost traits. No filler and no restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully compensates by enumerating the returned fields and the explicit non-return (terms), and annotations cover the read-only profile. Slightly incomplete only in that invalid-ID or not-found behavior is unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema coverage is 100% ('hs_... handshake ID'), so the schema fully documents the input. The description adds no format or sourcing detail beyond it, which is the baseline-3 case when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (public check/verify) and resource (a handshake), and enumerates exactly what is verified: both companies, status, existence of both matching log entries, and the on-chain seal. This is clearly distinguishable from the sibling mutation tools (ledger_handshake_offer/accept/reject) without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives situational context ('useful for disputes and audits') and notes it is free and public, which implies when to reach for it. It does not, however, name an alternative or state when NOT to use it versus siblings like ledger_check_receipt or ledger_verify_report, leaving the routing choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ledger_inclusion_proofInclusion proofARead-onlyInspect
Merkle audit path proving an entry is in Privi's append-only transparency log (RFC 9162). Verifiable offline against the signed tree head. Reveals no entry contents. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| tree_size | No | Prove against this signed tree head size; omit for latest | |
| entry_hash | Yes | 64-hex entry_hash (an action receipt) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safe-read profile is covered. The description adds genuinely new behavioral context: the proof is verifiable offline against the signed tree head, it reveals no entry contents (a privacy guarantee), and it is free. That goes beyond what the annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences/fragments with zero waste, front-loaded with the core purpose. The privacy and cost facts are appended efficiently rather than padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only proof tool with no output schema, the description covers what is returned (a Merkle audit path), how it can be used (offline verification against the signed tree head), and the privacy/cost profile. What is missing is how the agent obtains the required entry_hash or how it routes to verification siblings, but the core calling information is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both entry_hash ('64-hex entry_hash (an action receipt)') and tree_size ('omit for latest') are already fully documented in the schema. The description adds no parameter-level detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: a 'Merkle audit path proving an entry is in Privi's append-only transparency log (RFC 9162)'. An agent immediately knows this returns an inclusion proof, not a consistency proof or a receipt check. However it never names the adjacent sibling (ledger_consistency_proof) that could be confused with it, so the differentiation is implicit rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternative routing is given. The description notes offline verifiability and cost, but says nothing about when an agent should call this versus ledger_check_receipt, ledger_consistency_proof, or ledger_tree_head. The only usage hint ('omit for latest') lives in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ledger_list_streamsList streamsARead-onlyInspect
List your organization's streams with entry counts. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds a genuine operational constraint (organization API key required), but says nothing about pagination, result size limits, or scoping behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler, with the core action front-loaded and the prerequisite immediately after. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and zero parameters, the description carries most of the burden and does indicate the payload contents ('entry counts') plus the auth requirement. It could still note whether results are paginated or org-scoped, which is the only remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies. No misleading parameter claims are made.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List your organization's streams') and adds a distinguishing detail ('with entry counts') that separates it from the read-oriented sibling ledger_read_stream. It stops short of naming or contrasting with siblings explicitly, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The prerequisite 'Requires the organization API key' is a real usage condition an agent must satisfy before calling. However, there is no guidance on when to choose this listing tool over ledger_read_stream or the other ledger_* siblings, leaving selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ledger_planPlan and usageARead-onlyInspect
Your plan, entries used this month, the limit, and when a Pro plan renews. Requires your organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds meaningful context beyond the annotations by disclosing the auth requirement (organization API key) and the exact data surfaced, which is the useful behavioral detail here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the returned data and followed by the auth constraint; nothing is wasted. Slightly less crisp because the first sentence is a bare noun list rather than an action statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no parameters, the description must carry the return-value burden, and it does so by naming plan, usage, limit, and renewal date plus the auth requirement. Adequate for a simple read tool, though it could note that usage/limit are month-scoped quantities.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing to disambiguate and the baseline is 4. The description correctly adds no param detail because none exists.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates the specific data returned: plan, entries used this month, the limit, and the Pro renewal date. An agent can tell it apart from ledger_pricing (pricing) and ledger_upgrade_pro (mutation), though the action verb is only implied by the noun list rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied (check your current plan/usage) and a prerequisite is given ('Requires your organization API key'), but there is no explicit when-to-use, when-not, or routing to alternatives like ledger_pricing or ledger_upgrade_pro.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ledger_pricingLedger pricingARead-onlyInspect
List Privi Ledger tools, what each costs, and how to get an organization key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety and scope are covered structurally. The description adds genuinely new behavioral context: the response is a catalog of tools with their costs plus instructions for obtaining an organization key, which tells the agent this is the pricing/onboarding resource rather than a data-access tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that names the three things the call returns (tool list, costs, org-key guidance) with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and an output schema present, the description only needs to say what the call is for and what category of information it returns, which it does. The absence of any explicit when-to-use framing is the only remaining gap for this simple zero-arg lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4; there is no argument surface for the description to explain or for the schema to leave ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ("List") plus a clearly bounded resource (Privi Ledger tools with pricing and org-key guidance). No sibling covers pricing or onboarding, so the agent can route here without inspecting other schemas, though the description never explicitly contrasts itself with e.g. ledger_list_streams.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the content (call this to find out what the Ledger tools cost and how to obtain an organization key), which effectively signals an onboarding/pricing lookup. However, there is no explicit when-to-use statement, no prerequisites, and no exclusion telling the agent not to use it for cataloging streams or receipts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ledger_read_streamRead a streamARead-onlyInspect
Read your organization's entries in a stream, oldest first, with an integrity check of the whole stream. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max entries to return | |
| after_seq | No | Return entries after this sequence number | |
| stream_id | Yes | Stream ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered; the description adds real value by disclosing the auth requirement (organization API key), the deterministic oldest-first ordering, and that the whole stream is integrity-checked. It stops short of explaining what the integrity check yields or how pagination behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with two clauses, both of which carry information (scope/ordering and auth prerequisite). No filler or restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should hint at the return shape, and it does signal that an integrity check accompanies the entries. Combined with 100% schema coverage and annotations covering the safety profile, an agent has nearly everything needed; only pagination behavior and the integrity result format are left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so limit, after_seq, and stream_id are already documented in the schema. The description's 'oldest first' wording lightly reinforces after_seq's cursor semantics but adds no syntax or format detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (read entries in a stream) plus the ordering guarantee (oldest first) and an integrity-check behavior. It is distinguishable from ledger_list_streams (which lists streams, not entries), though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description supplies a prerequisite ('Requires the organization API key') but gives no guidance on when to pick this over ledger_audit_stream or other read paths, and no exclusion conditions. Usage is implied by the read-entries framing rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ledger_record_actionRecord an agent actionAInspect
Append an action to the organization's tamper-evident log. Returns the entry with its entry_hash receipt. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| actor | Yes | Who acted: agent name, model, or user on whose behalf | |
| details | No | Optional structured details (JSON object, under 16 KB) | |
| outcome | No | One of: success, failure, pending, blocked | success |
| summary | Yes | One-line description of what was done | |
| resource | No | What was acted on: URL, file, record ID, account | |
| stream_id | Yes | Stream to append to, usually the agent's name, e.g. 'billing-agent' | |
| action_type | Yes | One of: tool_call, data_access, data_change, payment, message, decision, approval, error, other |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, idempotentHint=false, and destructiveHint=false, and the description stays consistent while adding real value: 'tamper-evident log' conveys immutability, the return of an entry_hash receipt tells the agent how to verify the write, and the API-key requirement flags auth. It stops short of covering rate limits or what happens on conflicting appends.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the operation front-loaded ahead of the return-value and auth notes. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter write tool with no output schema, the description covers the core operation, the return shape (entry with entry_hash receipt), and the auth requirement, while the schema carries the field-level detail. Minor gaps remain around append conflicts or idempotency semantics, but the essentials are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (including enums for outcome and action_type and the 16 KB details limit) is already documented in the schema. The description adds no parameter-level meaning beyond that baseline, so a 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Append an action to the organization's tamper-evident log') and even characterizes the return ('entry_hash receipt'). This clearly reads as a write/append operation, implicitly distinguishing it from the read/verify/handshake siblings, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no when-not conditions, and no named alternatives among the many ledger_* siblings. The only prerequisite offered is 'Requires the organization API key,' which is an auth constraint rather than usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ledger_report_pdfCompliance report PDFARead-onlyInspect
A finished PDF of a sealed compliance report, for auditors and customers. Returned as base64 (pdf_base64) and as an embedded PDF resource; also downloadable at /reports/<report_id>.pdf with the organization key. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| report_id | Yes | report_id returned by ledger_compliance_report |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnly, not open-world), and the description adds genuinely new behavioral detail: three delivery channels (base64 pdf_base64, embedded PDF resource, and a /reports/<report_id>.pdf URL) plus an explicit auth requirement ('Requires the organization API key'). With no output schema, this return-format disclosure carries real weight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: identity/audience front-loaded, then the return mechanics and auth prerequisite. Nothing is redundant and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no output schema, the description covers what is returned and what credentials are needed, which is most of what an agent needs. It stops short of describing error conditions (e.g., unsealed or missing report) or whether the org key is passed as a header vs. query parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter already documents that report_id comes from ledger_compliance_report, so the description adds no new parameter meaning beyond what structured data provides. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete artifact (a finished PDF of a sealed compliance report) and its audience, so an agent knows exactly what comes back. It does not, however, contrast itself with ledger_compliance_report (which produces the report) or ledger_verify_report, leaving sibling differentiation to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the report is 'for auditors and customers' and report_id comes from ledger_compliance_report, which hints at the sequencing. There is no explicit statement of when to call this instead of ledger_compliance_report, nor any failure/'report not sealed yet' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ledger_signupSign upAInspect
Create a Privi Ledger organization on the free plan and get its API key (shown once; store it). Free plan: up to the monthly entry limit, all tools included. Upgrade any time with ledger_upgrade_pro. No key needed to sign up.
| Name | Required | Description | Default |
|---|---|---|---|
| organization_name | Yes | Your company or project name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations confirm a non-idempotent write, and the description adds genuinely useful behavior beyond them: the API key is displayed only once and must be stored, and the free plan carries a monthly entry limit with all tools included. It doesn't address what happens on duplicate organization names, but the destructive/side-effect profile is otherwise well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences that front-load the core action and outcome, then plan terms, then the alternative tool. Every sentence carries distinct information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by telling the agent exactly what it receives (an API key, displayed once) and the plan constraints. Nothing material for correct invocation or post-call handling is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter's meaning ("Your company or project name") is already documented in the schema. The description adds no further naming constraints or format guidance, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (create a Privi Ledger organization) plus the outcome (API key), and names the free plan explicitly. It clearly differentiates from ledger_upgrade_pro, which it identifies as the upgrade path rather than a competing signup route.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"No key needed to sign up" tells the agent this is the unauthenticated entry point, and "Upgrade any time with ledger_upgrade_pro" routes the agent to the alternative for plan changes. It stops short of explicitly stating when not to call it (e.g. if an org already exists), leaving one inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ledger_tree_headSigned tree headARead-onlyInspect
The latest signed tree head of Privi's transparency log: an RFC 9162 Merkle root over every entry ever recorded, signed with Ed25519 and ML-DSA-87, and periodically anchored on chain (Base). Free.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint=false, so safety and scope are covered; the description adds real value beyond that by disclosing the signing schemes (Ed25519 and ML-DSA-87), periodic on-chain anchoring on Base, and that use is free (no credit cost). It does not mention freshness/caching behavior of the head, but the added operational context is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence identifies the resource first, then adds the technical qualifiers (RFC 9162, algorithms, anchoring) and the cost note. No filler or redundant restatement of the name or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no input parameters and no output schema, the description carries the burden of explaining what comes back, and it does describe the semantic content of the result (Merkle root, signatures, anchoring). It stops short of indicating the response shape (e.g., whether tree size, timestamp, or signature fields are included), which would help an agent consume it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. Nothing in the description contradicts or complicates the empty schema, and it correctly implies the call needs no arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names the exact resource returned ('the latest signed tree head' being an RFC 9162 Merkle root over all log entries) so an agent knows this is a snapshot of the log's current root. It lacks any explicit contrast with closely related siblings like ledger_consistency_proof or ledger_inclusion_proof, which also deal with Merkle state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent infers it should call this when it needs the current log root to verify proofs or checkpoints. There is no statement of when to prefer it over ledger_consistency_proof, ledger_inclusion_proof, or ledger_check_receipt, and no prerequisites or follow-up guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ledger_upgrade_proUpgrade to ProAInspect
Buy 30 days of Privi Ledger Pro (unlimited entries) for your organization, paid in USDC on Base via x402. Each call adds 30 days. Requires your organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-readOnly, openWorld, and non-idempotent, and the description is consistent with them ('Each call adds 30 days'). It adds genuinely new context beyond structure: the payment rail (USDC on Base via x402), the cost model, and the API-key requirement. It stops short of stating reversibility or what happens if payment fails, which would matter for a paid mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core action and price, then the cumulative effect and the prerequisite. Every clause earns its place; nothing is repeated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and no output schema, the description covers what an agent needs: what is bought, for how long, at what cost, via what payment rail, and what credential is required. It could go slightly further on failure/retry behavior for a paid call, but the essentials are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema leaves nothing to document and the baseline is 4. The description correctly adds no param details and instead explains the implicit inputs (organization API key, payment).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource combination: buying 30 days of Privi Ledger Pro (unlimited entries) for an organization. It also quantifies the effect of each call ('Each call adds 30 days'), which no sibling like ledger_pricing or ledger_signup duplicates, so an agent can distinguish it immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Conveys an implied use case (upgrade when you want Pro) and a prerequisite ('Requires your organization API key'), but never names when to choose this over ledger_pricing or ledger_signup, nor when not to call it. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ledger_verify_reportVerify a reportARead-onlyInspect
Check that a compliance report is unaltered: recomputes its hash, confirms Privi Ledger issued it, and checks the anchor on chain (Base, until the Privi chain mainnet). Free; no key needed.
| Name | Required | Description | Default |
|---|---|---|---|
| report | Yes | The 'report' object exactly as received from ledger_compliance_report |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is covered; the description adds useful non-annotation context (cost, no API key required, which chain the anchor lives on, and the mainnet caveat). One mild tension: openWorldHint=false while the description says it 'checks the anchor on chain (Base)', which implies an external network lookup — worth noting though not a hard contradiction for a read-only vendor-infrastructure verification. It does not describe what a failure verdict looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence front-loads the purpose, then lists the three sub-checks and ends with the cost/auth caveat. No redundant restatement of the title or name, and every clause carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the 'what' and the operational constraints well, but with no output schema the agent gets no sense of the return shape — whether a plain verified/not-verified flag, per-stage results (hash, issuer, anchor), or failure reasons. For a verification tool whose entire value is the verdict, that is a meaningful gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is documented as 'the report object exactly as received from ledger_compliance_report', which already supplies the key guidance. The description adds no further insight into the report object's fields or how mismatches are treated, so it sits at the schema-covered baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific verb ('Check that ... is unaltered') and enumerates the three concrete operations performed: hash recomputation, issuer confirmation, and on-chain anchor check. The resource and its provenance (a report from Privi Ledger) are clear. It stops short of naming the closest sibling candidates (ledger_report_pdf, ledger_check_receipt), so differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The statement that the tool is 'Free; no key needed' plus the hash/issuer/anchor framing implies it is a post-hoc verification step on a report you already hold, and the schema points back to ledger_compliance_report. However, there is no explicit 'use this when X, use Y instead' guidance against siblings such as ledger_check_receipt or ledger_report_pdf, so the agent must infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
live_infoPrivi Live: how to connectARead-onlyInspect
Real-time Privi: WebSocket and server-sent-event streams (trust changes, your own audit tail, approvals), a kill switch, human approvals, a metered MCP gateway and paid agent-to-agent rooms. Returns the endpoints, channels, frames and what each plan gets. Free; no key needed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds real behavioral context beyond that: 'Free; no key needed' discloses auth requirements and the plan-gating of results ('what each plan gets'). It does not, however, explain anything about freshness, rate limits, or how the endpoint data is scoped.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler. The feature enumeration in sentence one is the only questionable content, but it is brief and frames the product scope before the payoff line.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the annotations carry the safety profile. For a zero-param info tool the description is largely sufficient; the remaining gap is the absence of any routing hint toward live_status, live_kill, or the approval/gateway/room tools listed as neighbours.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. Schema coverage is trivially 100% and the description makes no misleading claims about inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The second sentence states the concrete deliverable: 'Returns the endpoints, channels, frames and what each plan gets.' That is a clear read of what live_info produces, distinguishable from the action-oriented siblings live_kill/live_resume. However, the opening sentence is a feature catalogue of the whole Privi Live product rather than this tool's purpose, so it never explicitly separates itself from live_status or gateway_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no named alternative (live_status, live_kill, ledger_list_streams) that an agent should consider instead. 'Free; no key needed' hints at a prerequisite, but not at the selection conditions between this discovery tool and the status/control siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
live_killKill switch: stop an agentADestructiveIdempotentInspect
Stop an agent at once: mandate_spend, your gateways and your room messages are refused until live_resume. Takes effect on the next call, and is pushed to your live channel immediately. Audit logging keeps working. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Why (shown in your log and on your live channel) | |
| stream_id | No | The agent (stream) to stop, or '*' for every agent in your organization | * |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, but the description goes well beyond them: it names exactly what stops working, states the activation timing ('takes effect on the next call'), notes immediate channel propagation, reassures that audit logging continues, and flags the organization API key requirement. That is exactly the extra behavioral context the annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the imperative action, then consequences, then timing, then the auth prerequisite — a sensible priority order with no filler. The first sentence is slightly overloaded with a colon-led list, but every clause carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, org-scoped kill switch with no output schema, the description covers effect scope, latency, reversibility path, audit behavior, and auth requirements. An agent has everything needed to decide and to call it correctly given the two optional parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters fully documented including the '*' wildcard semantics and where the reason string is surfaced. The description implies the target is 'an agent' but adds no format or default information beyond the schema, so the baseline 3 is right.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Stop an agent at once') and immediately enumerates the blast radius (mandate_spend, gateways, room messages). It also names the counterpart tool live_resume, so an agent can distinguish it from sibling lifecycle tools like live_status or live_info without reading schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The kill/resume pairing with live_resume gives clear context for when this tool is the right one, and the 'at once' framing signals emergency use. There is no explicit when-not-to-use guidance or discussion of narrower alternatives for a single gateway (e.g. gateway_set_guard), so it falls 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.
live_resumeKill switch: resume an agentADestructiveIdempotentInspect
Lift a kill switch set with live_kill. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| stream_id | No | The agent to resume, or '*' | * |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, destructive=true, idempotent=true, so the safety profile is covered. The description adds two concrete behavioral facts beyond that: the prerequisite state (a kill switch set by live_kill) and the authentication requirement ('Requires the organization API key'), which the annotations do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the core action front-loaded ahead of the auth prerequisite. Every clause carries information the agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, no-output-schema operation, the description covers purpose, prerequisite state, and auth needs, which is nearly everything required to invoke it. It could say slightly more about why the operation is flagged destructive (e.g. the agent immediately resumes acting), but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter (stream_id, default '*') is fully documented in the schema itself. The description adds no syntax, format, or wildcard semantics beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Lift a kill switch', 'resume an agent') and explicitly ties it to the sibling that creates the state it undoes (live_kill). An agent can distinguish this from live_kill and live_status without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for when this tool applies: only to lift a kill switch that was previously set with live_kill, which implicitly routes the agent to the correct sibling. It does not state any when-not conditions or alternative recovery paths, but the routing signal is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
live_statusLive statusBRead-onlyInspect
Your kill switches, live-approval thresholds, pending approvals, gateways, rooms and usage this month. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds the organization API-key requirement, which is useful behavioral context. It does not disclose return format, freshness, or rate limits, so the addition beyond annotations is modest.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler, and the list of returned resources is front-loaded. It is a fragment rather than a complete statement, which slightly weakens structure but keeps it efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only tool with no output schema, the description identifies the main data returned and notes the API-key requirement. It stops short of explaining response shape or freshness, but the low complexity and annotations make it adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so schema description coverage is trivially 100% and the baseline is 4. The description appropriately adds no parameter details because there are none to describe.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description lists the specific resources returned (kill switches, live-approval thresholds, pending approvals, gateways, rooms, usage) so the agent can understand the snapshot's scope. It does not distinguish this tool from siblings like live_info or approval_status, and the fragment lacks an explicit verb such as 'returns'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no when-not-to-use guidance, and no mention of alternatives among the many sibling status/list tools. The only contextual cue is the API-key requirement, which is an auth prerequisite rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mandate_checkCheck a payment against a mandateARead-onlyInspect
For merchants, payment facilitators and counterparties: did a human authorize this AI agent to pay you this amount? Verifies the human's wallet signature, status, expiry, per-payment cap, remaining budget and payee list, and returns allow/deny with reasons plus a Privi-signed attestation. Free; no key needed.
| Name | Required | Description | Default |
|---|---|---|---|
| payee | Yes | Who is being paid: your 0x address or domain | |
| mandate_id | Yes | mdt_... ID the agent presented | |
| amount_usdc | Yes | Payment amount in USDC |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and openWorldHint=false, and the description adds real value on top: it enumerates what is checked (signature, status, expiry, per-payment cap, remaining budget, payee list), discloses the result shape (allow/deny with reasons plus a signed attestation), and states there is no auth requirement ('Free; no key needed'). It is slightly weaker on latency/determinism, but the auth and return-format disclosures go well beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the audience and the decision being made, with zero filler. Every clause (verification targets, return shape, no-key/no-cost) carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully describes the return (allow/deny with reasons and an attestation), and it covers auth and cost. It leaves the exact response structure and any error/deny reason taxonomy unspecified, which is a minor gap for a 3-param verification tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so payee, mandate_id and amount_usdc are already documented in the schema. The description contextualizes them (a presented mandate ID, a payment amount, the cap/budget it must fit within) but adds no new format or constraint detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb (verify/check) and resource (an agent's payment mandate) and frames it as a yes/no authorization question directly from the payee's point of view. It clearly distinguishes itself from siblings like mandate_get (fetch), mandate_create, mandate_revoke and mandate_spend, which do not perform verification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Named audience ('merchants, payment facilitators and counterparties') plus the triggering question ('did a human authorize this AI agent to pay you this amount?') tells the agent exactly when to reach for it. It stops short of naming when NOT to use it or pointing to mandate_get for raw mandate data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mandate_createCreate a spending mandateAInspect
Draft a Privi Mandate: the human's signed permission for your agent to spend, with a budget, per-payment cap, allowed payees and expiry. Returns sign_url: send it to the human, who reads the plain-English terms and signs once with their wallet (free, no transaction). Nothing can be spent until they sign. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Days until the mandate expires (1-365) | |
| payees | No | Allowed payees (0x addresses or domains); omit for any | |
| purpose | Yes | What the agent may spend on, in plain words | |
| stream_id | Yes | The agent (stream) that will spend, e.g. 'shopping-agent' | |
| agent_wallet | No | 0x wallet the agent pays from (optional) | |
| max_total_usdc | Yes | Total budget in USDC, e.g. '250' | |
| principal_wallet | Yes | 0x wallet of the human who authorizes the spending | |
| max_per_payment_usdc | No | Cap per payment; defaults to the total |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the generic write profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false). The description goes well beyond that, disclosing the return value (sign_url), the downstream human action, that signing is free with no transaction, that nothing can be spent pre-signature, and the API-key requirement — exactly the operational context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the core action and followed by the return value, the safety consequence, and the auth requirement. Every sentence carries information an agent needs; there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters, no output schema, and a stateful signing flow, the description supplies the missing pieces: what it returns (sign_url), what the human must do, that the operation is non-committal until signed, and the credential required. Nothing needed to invoke it correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the schema. The description restates the mandate terms (budget, per-payment cap, payees, expiry) in conceptual terms but adds no format or syntax detail beyond what the schema supplies, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — drafting a Privi Mandate that authorizes agent spending — and immediately names its distinguishing content (budget, per-payment cap, payees, expiry). An agent can tell this apart from mandate_spend, mandate_get, or mandate_revoke without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context: this is the prerequisite step, and 'Nothing can be spent until they sign' implies the ordering relative to mandate_spend. It also states the auth prerequisite (organization API key). It stops short of explicitly naming alternatives or stating when *not* to use it, so it falls just below the top band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mandate_getGet a mandateARead-onlyInspect
Public view of a mandate: terms, status, the human's signature, spent and remaining budget, and recent spends. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| mandate_id | Yes | mdt_... ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful context — that it is a public (non-auth-gated) read and that it is free — plus the returned field set, but it does not disclose any permission or rate-limit nuances beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence, front-loaded with the tool's purpose and followed by the content scope and the 'Free' qualifier. No wasted words and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only getter with no output schema, the description usefully enumerates the return payload, which compensates for the missing output schema. It is essentially complete, with only the sibling-routing detail (check vs list vs get) left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single mandate_id parameter, so the schema already documents the 'mdt_... ID' format. The description adds no further parameter syntax or meaning, so the baseline 3 for a fully-covered schema applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Get a mandate') and enumerates exactly what a public mandate view contains (terms, status, signature, budget, recent spends). It is clear what the tool does, but it only implicitly separates itself from siblings like mandate_check or mandate_list via the word 'view' rather than naming them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Public view of a mandate' implies a by-ID read of an existing mandate, which is adequate implied usage. However, there is no explicit when-to-use or when-not guidance versus mandate_check (verify) or mandate_list (enumerate), so an agent must infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mandate_listList your mandatesARead-onlyInspect
Your organization's mandates with status and remaining budget. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds something the structured data does not: it discloses the authentication prerequisite ('Requires the organization API key'), which an agent needs before attempting the call. It omits pagination and result-size behavior, so it falls short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler. The return payload is stated first and the access requirement second, which is the correct front-loading for an invocation decision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, no output schema, and safety covered by annotations, the description supplies the essentials: what is returned and what credential is required. It is slightly thin on scoping and pagination behavior, but nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema has nothing to explain and the baseline of 4 applies. The description adds no param detail, but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource ('your organization's mandates') and even characterizes the payload ('with status and remaining budget'), so an agent knows exactly what it retrieves. It stops short of distinguishing itself from the sibling mandate_get, which likely returns a single mandate rather than the full list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage signal is the implicit 'list' semantics; there is no statement of when to use this versus mandate_get (single mandate) or mandate_check. No prerequisites or exclusions are given, leaving the routing decision entirely to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mandate_revokeRevoke a mandateADestructiveIdempotentInspect
Stop an agent from spending under a mandate (the human can also revoke from the sign_url page). Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Why | |
| mandate_id | Yes | mdt_... ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds genuinely new context beyond structured fields: the operation requires the organization API key (an auth prerequisite) and that a human-side revocation path exists. It does not state what state is left behind after revocation, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the primary effect front-loaded and the auth requirement and alternative path trailing as supporting detail. Nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation tool, the description covers purpose, auth prerequisite, and an alternative revocation path, while annotations handle the destructive/idempotent profile and the schema handles parameters. With no output schema, no return-value explanation is needed, leaving only minor gaps around post-revocation state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: mandate_id is documented as an 'mdt_... ID' and reason as 'Why'. The description adds no format, constraint, or example detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action and resource: stopping an agent from spending under a mandate, which is precisely what revoke means. An agent can distinguish this from mandate_spend and mandate_create without opening the schema. It stops short of naming a sibling explicitly, but the effect-based wording is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical establishes one alternative path (the human can revoke from the sign_url page), which implies when an agent might defer to the human flow. However, it gives no explicit guidance on when an agent should call this versus mandate_check, mandate_get, or mandate_list, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mandate_spendSpend under a mandateAInspect
Call before each payment: checks the mandate and, if allowed, deducts the amount from the budget and records the payment in the agent's tamper-evident log. Refused payments are logged as blocked. Refused at once if the kill switch is on. Over the organization's live-approval threshold it returns approval_required with an approve_url for the human; call again with approval_id once they approve. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| payee | Yes | Who is being paid: 0x address or domain | |
| reference | No | Order, invoice or transaction reference | |
| mandate_id | Yes | mdt_... ID | |
| amount_usdc | Yes | Payment amount in USDC | |
| approval_id | No | apr_... : the human's live approval, if this payment is over the agent's approval threshold |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnlyHint=false, idempotentHint=false, destructiveHint=false) by disclosing side effects: budget deduction, tamper-evident logging, blocked refusals, kill-switch short-circuit, and the live-approval threshold handoff. It also states the API-key requirement, which annotations don't carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the imperative 'Call before each payment', then layers the conditional branches (refused, kill switch, over-threshold) compactly. Every sentence carries distinct operational information with no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by describing the notable return path (approval_required with approve_url). Combined with auth and failure-mode details, an agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so payee, mandate_id, amount_usdc, reference and approval_id are already documented in the schema. The description reinforces the approval_id round-trip but adds no syntax or format detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb chain and resource: it checks the mandate, deducts from budget, and records the payment. This clearly separates it from sibling mandate_check (read-only check) and mandate_create/revoke, so an agent can pick it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives strong when-to-use guidance with 'Call before each payment' and spells out the approval_required workflow (call again with approval_id). It doesn't name a when-not case or point to an alternative sibling, so it falls just short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcp_server_checkCheck an MCP server before connectingARead-onlyInspect
Free safety check for any remote MCP server, before an agent connects to it or after it was approved. Privi reads the server's tool list (it never calls a tool) and returns a verdict: ok, caution, danger (tool poisoning: hidden instructions, concealment from the user, requests for keys or private files, tool shadowing, invisible characters), changed (tools differ from expected_tools_hash), unverified (tools behind auth) or unreachable. Also returns the tools_hash to pin, a grade A-F and a link to the server's public history. Every first observation and change is recorded in Privi's on-chain-anchored transparency log. No key needed.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The server's streamable-HTTP MCP endpoint, e.g. https://example.com/mcp | |
| expected_tools_hash | No | The tools_hash you approved earlier; Privi tells you if the tools changed since then (rug-pull check) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint; the description adds substantial context beyond them: it performs no tool calls, requires no key, records every first observation and change in an on-chain-anchored transparency log, and returns a grade plus public-history link. Destructive/exfiltration surface is explicitly ruled out, which is exactly the behavioral detail an agent needs before wiring up a remote endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose and the read-only guarantee, and the verdict enumeration prevents ambiguity. It is dense but the comma-chained verdict list and trailing log/key clauses make it read as one long block rather than cleanly separated statements, leaving a little room for tightening.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden itself and does so: it names all six verdict outcomes and the tools_hash, A-F grade, and history link the caller receives. Combined with the schema's 100% coverage, an agent has everything needed to decide and call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both url and expected_tools_hash are already documented, including the rug-pull semantics of the hash. The description reinforces expected_tools_hash meaning ('changed (tools differ from expected_tools_hash)') but adds no syntax, format, or default detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb+resource ('safety check for any remote MCP server') and immediately clarifies the mechanism ('reads the server's tool list ... never calls a tool'). It then enumerates the exact verdict set (ok, caution, danger, changed, unverified, unreachable), so an agent knows exactly what class of answer to expect without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Timing is explicit: 'before an agent connects to it or after it was approved.' That covers when to call, but it never names an alternative sibling (e.g. scan_server, scan_rescan, guard_check) or states when-not to use it, so the routing decision is left partly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
passport_gateGate on a Privi PassportARead-onlyInspect
One-call allow/deny decision before transacting with another AI agent: verifies its Privi Passport and applies your minimums, returning the reasons. If you send your organization API key the decision is recorded in your own tamper-evident log as due-diligence evidence. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| purpose | No | What you are about to do with this counterparty (recorded in your log if you send your key) | |
| min_grade | No | Minimum grade A-E (alternative to min_score) | |
| min_score | No | Minimum current score 0-1000 | |
| passport_id | Yes | pp_... ID presented by the other agent | |
| require_anchored | No | Require the passport to be anchored on chain (Base) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond the annotations: the decision includes reasons, an optional organization API key turns the call into a recorded tamper-evident log entry for due diligence, and the call is free. That opt-in logging side effect is worth flagging given readOnlyHint=true, but it is caller-side and opt-in, so it is not a contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the decision outcome and the pre-transaction framing, then the logging and cost caveats. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, when to call, optional logging behavior, and cost, which is sufficient for a 5-parameter read-only gate with no output schema. The only minor gap is that it does not describe the shape of the returned reasons or what a denial looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented, including min_grade vs min_score and require_anchored. The description only alludes to 'your minimums' and adds no syntax or precedence detail, which is the baseline for full-coverage schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb chain (verifies passport, applies minimums, returns allow/deny plus reasons) against a specific resource (Privi Passport). It is clearly distinguishable from passport_verify, which does not apply policy minimums or render a transaction decision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames the use case as a pre-transaction check before dealing with another AI agent, which tells the agent when to call it. It does not name passport_verify as the alternative for raw verification, and gives no when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
passport_issueIssue a Privi PassportAInspect
Issue a Privi Passport: a signed, on-chain-anchored trust credential for your agent or organization, scored 0-1000 (grade A-E) from verified history, integrity, anchoring, reliability, human oversight, compliance reports and confirmed handshakes. Show it to counterparties; they verify it free with passport_verify / passport_gate. Valid 30 days. Free on Pro/enterprise; free-plan organizations pay per passport via x402. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| stream_id | No | Issue for one agent (stream). Omit for the whole organization |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnlyHint false, openWorldHint true, idempotentHint false, destructiveHint false). The description adds material operational context the annotations cannot convey: a 30-day validity window, an authentication requirement (organization API key), and a pay-per-call path via x402. That is exactly the extra behavior an agent needs before invoking a non-idempotent, metered mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the definition and purpose, then layers in verification routing, validity, and pricing in a logical order. It is dense and multi-clause but each clause carries decision-relevant information; only the enumeration of scoring inputs is arguably expendable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully characterizes the returned artifact (a signed credential scored 0-1000, graded A-E, valid 30 days) and the billing/auth context. It does not say what identifier or fields come back on issuance, which would have closed the last gap for a tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter (stream_id) is fully documented in the schema itself ('Issue for one agent (stream). Omit for the whole organization'). The description echoes the agent-vs-organization scope but adds no syntax or format detail beyond that, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Issue a Privi Passport') and immediately defines the artifact as a signed, on-chain-anchored trust credential, including its scoring model and grade range. It explicitly routes the agent to the verification siblings (passport_verify / passport_gate), so it is distinguishable from them without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for use: issue the credential to show counterparties, who verify it free via passport_verify / passport_gate. It also states prerequisites (organization API key) and cost conditions (free on Pro/enterprise, paid per passport on free plans via x402). It does not state when not to issue, but the intended scenario is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
passport_listList your passportsARead-onlyInspect
Your organization's issued passports with score, grade, expiry and revocation. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds value beyond that by disclosing the returned fields and, importantly, the organization API key requirement, which is a real operational precondition not present in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The payload description is front-loaded and the auth constraint follows immediately, so nothing needs to be skimmed past.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully names the fields a caller will receive (score, grade, expiry, revocation) plus the auth requirement, which is what an agent needs to call it confidently. Only a brief note on ordering or pagination is absent, which is minor for a no-arg list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. There is nothing parameter-related that the description needs to explain, and it avoids inventing nonexistent arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: "Your organization's issued passports," which clearly separates it from siblings like passport_verify or passport_issue. It also enumerates the returned fields (score, grade, expiry, revocation). It stops short of explicitly naming a sibling alternative, so it doesn't reach the top band.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the read-only listing nature of the tool, and the auth prerequisite is stated, but there is no explicit when-to-use/when-not guidance or routing to related tools such as passport_verify or passport_revoke. An agent can infer the purpose but gets no decision rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
passport_revokeRevoke a passportADestructiveIdempotentInspect
Revoke one of your passports (e.g. an agent was retired or compromised). Verifiers see it immediately. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| reason | No | Why (shown to verifiers) | |
| passport_id | Yes | pp_... ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description adds two critical behavioral traits: 'Verifiers see it immediately' (synchronization/visibility) and 'Requires the organization API key' (prerequisite authentication requirement). These add significant operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise, packing necessary operational information—action, scenario, real-time effect, and authorization requirement—into three tightly worded sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high schema coverage and the destructive nature of the tool, the description is complete. It answers the 'what,' 'why,' 'how to authorize,' and 'what happens next' questions for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning the input schema already documents the parameters thoroughly. The description provides high-level context but does not add specific semantic meaning to the passport_id or reason fields beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the function (Revoke one of your passports), names the specific resource, and is clearly distinct from sibling tools like passport_issue or passport_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear scenarios for usage, such as when an 'agent was retired or compromised,' which acts as a strong conditional usage guideline. It implies the intent clearly without needing an explicit 'when-not' clause.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
passport_verifyVerify a Privi PassportARead-onlyInspect
Check an AI agent's Privi Passport before trusting it: Privi signature, content unaltered, not expired or revoked, anchor on chain (Base), and a live re-score of the agent right now (so tampering after issue is caught). Free; no key needed.
| Name | Required | Description | Default |
|---|---|---|---|
| passport | No | The 'passport' object exactly as issued | |
| passport_id | No | pp_... ID, or omit and pass the passport document |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, and the description adds valuable context beyond that: cost ('Free'), auth ('no key needed'), and the fact that it does an on-chain Base lookup plus a live re-score, meaning results reflect current state and re-contact external services. Missing any note on latency or failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then a compact list of checks. Nearly every clause carries information, though the trailing parenthetical about tampering-after-issue is somewhat redundant with 'content unaltered' earlier in the same sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description leaves the return shape unspecified — an agent cannot tell whether it gets an overall verdict, a per-check breakdown, or an error on failure. The check list implies the result dimensions but not the format or semantics of a partial failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains both the 'passport' document and the 'pp_...' ID, including that either is acceptable. The description contributes nothing about the parameters, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (verify/check) and resource (Privi Passport) and enumerates exactly what is checked: signature, content integrity, expiry/revocation, on-chain Base anchor, and a live re-score. This clearly separates it from passport_issue, passport_list, passport_revoke, and passport_gate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Before trusting it' gives the trigger condition explicitly, and the enumerated checks add the rationale for using this over a sibling. It does not name an alternative or state when NOT to use it (e.g., when passport_gate is the right call), so it falls 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.
privi_payment_optionsPrivi: payment methodsBRead-onlyInspect
See existing USDC/x402 service billing and separately gated valueless PRVI_TEST development mode.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe read, so the bar is lower. The description does add useful context that the test mode is valueless and 'separately gated' (an access-control hint), but it says nothing about what the returned billing/option data looks like or whether it is scoped per account.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is dense to the point of being cryptic ('separately gated valueless PRVI_TEST development mode'), but every phrase carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-arg read-only tool with no output schema, the description conveys the two modes it covers but not what is returned or how the gating manifests. Adequate as a signpost, incomplete as a spec.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It names a resource (payment options / billing) and a mode split (USDC/x402 billing vs. PRVI_TEST dev mode), but the verb 'See' is soft and the description never says what an agent actually gets back or how this differs from related siblings like guard_pricing, ledger_pricing, or privi_test_payment_quote.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus the pricing/billing siblings, and no prerequisites. The only usage signal is the implicit 'existing'/'valueless' distinction between the two modes, which an agent must infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
privi_test_payment_quotePrivi: create a valueless test-payment quoteCInspect
Off-chain PRVI_TEST quote. Requires organization key and explicit test mode. Never takes money.
| Name | Required | Description | Default |
|---|---|---|---|
| sku | Yes | Existing priced tool to model; NO service will be unlocked |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-destructive, closed-world, non-read-only. The description usefully adds that it is off-chain, never moves money, and gated behind org key plus explicit test mode. It does not say whether the quote is persisted, how long it is valid, or what the response contains, so it adds context but not full behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences with no filler, and the safety statement ('Never takes money') is placed last for emphasis. Slight cost from unexplained jargon such as 'PRVI_TEST'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, non-destructive quote tool with no output schema, the definition covers safety and gating, which is most of the burden. It leaves open what the quote actually returns and how it pairs with privi_test_payment_simulate, which an agent still has to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema coverage and a self-explanatory enum description ('NO service will be unlocked'). The description adds nothing about the sku argument, so the schema baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description reads as a fragment ('Off-chain PRVI_TEST quote') rather than a verb+resource statement; the actual action (creating a test-payment quote) only comes from the title. It does not distinguish this tool from the sibling privi_test_payment_simulate or privi_payment_options.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states preconditions ('requires organization key and explicit test mode') but never says when to choose this over privi_test_payment_simulate or privi_payment_options. No exclusions or alternative routing are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
privi_test_payment_simulatePrivi: simulate a valueless test paymentAInspect
Consume a test quote once. Receipt is NOT payment, on-chain proof or entitlement.
| Name | Required | Description | Default |
|---|---|---|---|
| quote_id | Yes | Short-lived PRVI_TEST quote ID | |
| acknowledgement | Yes | Must equal VALUELESS TEST ONLY |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it as a non-read-only but non-destructive mutation. The description adds important behavioral context beyond annotations: the quote is consumed once, and the receipt explicitly does not represent payment, on-chain proof, or entitlement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no wasted text. The main action is front-loaded, and the critical limitation is stated immediately afterward.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter test-payment mutation with full schema coverage and annotations, the description supplies the key purpose and the most important semantic caveat. It does not explain the return shape, but the warning that the receipt is not real payment covers the central risk.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented in structured fields. The description adds the single-use consumption meaning for quote_id, but does not mention the acknowledgement parameter or add per-parameter detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: consuming a test quote once, and clarifies that the resulting receipt is not real payment or entitlement. It is clearly a valueless test-payment simulation, though it does not explicitly distinguish itself from the sibling quote-creation tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool, when not to use it, or which sibling tool should be used instead. The requirement of a quote_id implies it follows a prior quote step, but the description does not state that workflow or any alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
room_closeRooms: close and sealADestructiveIdempotentInspect
Close a room and seal its transcript: the hash is signed (Ed25519 + ML-DSA-87), anchored on chain (Base) and written to both organizations' logs. Either party can close. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| room_id | Yes | rm_... ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true, idempotent=true, readOnly=false. The description adds meaningful context beyond that: the cryptographic scheme (Ed25519 + ML-DSA-87), the on-chain anchor, dual-organization log write, and the fact that either party may trigger it. It stops short of stating the sealing is irreversible or noting the idempotent replay behavior, which would have earned a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence leads with the action, then the consequences, then the requirements. No filler; every clause carries operational meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter terminal mutation with full annotation coverage and no output schema, the description covers consequences, authorization, and mutability actors. It omits what the response contains and whether closing is irreversible, which are the remaining gaps an agent might want.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one parameter and schema description coverage is 100% ('rm_... ID'), so the schema already carries the full burden. The description adds no room_id format, prefix, or lookup guidance beyond the schema, which is the expected baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Close a room and seal its transcript') and immediately elaborates on what sealing entails (signed hash, on-chain anchor, dual logging). This clearly distinguishes it from siblings like room_open, room_transcript, and room_verify.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Either party can close' and 'Requires the organization API key' give clear preconditions for invocation. However, it never explicitly contrasts with room_transcript or room_verify, nor states when NOT to close, so an agent must infer the boundary cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
room_infoRooms: infoARead-onlyInspect
Public facts about a room: parties, price, message count, head hash and its seal once closed. No message text. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| room_id | Yes | rm_... ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description still adds real context beyond that: that access is public/free (no cost), that querying leaks no message text, and that the head hash seal only appears once the room is closed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One tight, front-loaded sentence that lists the return contents first and the negative constraint second. Every clause carries information; nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the returned fields and clarifies the seal/closure condition. Only minor gaps remain, such as whether the head hash is always present for open rooms or any rate-limit behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single required parameter fully documented in the schema ('rm_... ID'), giving 100% coverage, so the baseline is 3. The description adds no further meaning about the ID format or lookup behavior beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the resource (a room) and enumerates exactly what is returned: parties, price, message count, head hash, and its seal once closed. It implicitly carves out its sibling room_transcript via 'No message text', so an agent can differentiate, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'No message text' implies that message-reading belongs to room_transcript, which is useful routing. However there is no explicit when-to-use guidance versus room_list, room_verify, or the fortress/gateway info tools, so the agent must infer scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
room_listRooms: list yoursARead-onlyInspect
Rooms your organization owns or joined. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true and openWorldHint=false already establish the safe, non-mutating, closed-world profile. The description adds a genuine credential requirement ('Requires the organization API key'), which is useful context beyond the annotations, but says nothing about result ordering, pagination, or volume. With annotations carrying the safety profile, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two terse sentences with no filler, and the scope statement is front-loaded ahead of the credential note. Nothing is wasted, though the brevity leaves the entry a little thin.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-argument, read-only listing tool with annotations already declaring the safety profile, the description covers identity, scope, and authentication — the essentials for correct invocation. Only minor gaps remain (no note about return shape or pagination), which are low-stakes for a list operation and no output schema is declared.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to clarify; the baseline for an empty schema is 4. No parameter details are needed or missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly identifies the resource (rooms) and the scope (those your organization owns or joined), which distinguishes it from room_info, room_open, room_close, and room_transcript. The verb 'list' comes from the name and title rather than the body text, so it is clear but not fully self-contained.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Rooms your organization owns or joined' implies the appropriate scenario (enumerating rooms) but never states when to prefer this over room_info for a single room or how it relates to the other room_* tools. Usage is implied rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
room_openRooms: open a live roomAInspect
Open a live, hash-chained conversation room for two organizations' agents. Both connect over WebSocket (ws_url), authenticate with their API keys and talk in real time; closing the room seals the transcript on the Privi chain. Optionally charge per message, paid under the guest's human-signed Mandate. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| hours | No | Hours the room stays open (1-168) | |
| payee | No | Who is paid for messages: 0x address or domain | |
| title | Yes | What the room is for, e.g. 'Negotiate delivery of lot 4471' | |
| max_messages | No | Message cap (2-10000) | |
| counterparty_org_id | No | org_... that may join; omit to get a one-time join_code instead | |
| price_per_message_usdc | No | Charge the guest this much per message (needs payee) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare a non-read-only, non-idempotent, non-destructive operation, and the description adds substantial context the annotations cannot: WebSocket connection, API-key authentication, hash-chained transcript sealed to the Privi chain on close, and per-message billing under a human-signed Mandate. It lacks only limits such as whether an org can hold multiple concurrent rooms or what happens on expiry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and scope, then layers connection, sealing, billing and auth in three compact clauses with no filler. Dense with domain terms (hash-chained, Mandate, Privi chain) but each clause carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter, no-output-schema tool, the description covers the lifecycle (open, connect, close/seal), authentication and payment prerequisites well. The gap is return values: it references ws_url and join_code without saying that open produces them, which matters because no output schema exists to fill that in.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including hours, max_messages, counterparty_org_id and price_per_message_usdc is already documented with ranges and defaults. The description adds only the Mandate-payment framing for pricing, and even the payee dependency ('needs payee') is already in the schema, so this meets the baseline rather than exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Open a live, hash-chained conversation room') plus the scope (two organizations' agents), which cleanly separates it from room_close, room_info, room_list and room_transcript. An agent can identify this as the creation primitive without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys the operating context (both parties connect over WebSocket with API keys, room is sealed on close) but never states when to choose this over siblings or what preconditions must hold, e.g. whether the counterparty must exist first or whether a Mandate is required before setting a price. Usage is implied rather than instructed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
room_transcriptRooms: transcriptARead-onlyInspect
Every message in a room you are part of, with the chain check. Requires the organization API key.
| Name | Required | Description | Default |
|---|---|---|---|
| room_id | Yes | rm_... ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds two things beyond that: an auth precondition (organization API key) and the 'chain check' behavior, which signals the transcript is integrity-verified. That extra context is meaningful, though 'chain check' is not explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with the scope front-loaded and no filler. The 'with the chain check' clause is a touch cryptic, but the definition is tight overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only transcript tool with annotations covering safety and no output schema, the definition covers scope and auth adequately. It omits pagination/limit behavior and any hint about result size, which matters for a message-history endpoint, so it is viable but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single room_id parameter whose description ('rm_... ID') already carries the format. The description's phrase 'a room you are part of' loosely mirrors that constraint but adds no syntax or scoping detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource clearly ('every message in a room you are part of'), so an agent knows this returns a room's message history. However, the verb is implicit and it never distinguishes itself from siblings like room_info or room_verify, which also touch a room.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Requires the organization API key' gives a real precondition for invocation, which is genuinely useful. But there is no guidance on when to choose this over room_info/room_verify, and no exclusions or alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
room_verifyRooms: verify a sealed transcriptARead-onlyInspect
Check a closed room's seal (signature, on-chain anchor) and, if you pass the transcript, that it is complete and unaltered. Free; no key needed.
| Name | Required | Description | Default |
|---|---|---|---|
| room_id | Yes | rm_... ID | |
| messages | No | The transcript's 'messages' array exactly as room_transcript returned it |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=false), and the description adds genuinely useful context beyond them: the operation is free, requires no key, and performs two distinct checks (signature/on-chain anchor vs. transcript integrity). It stops short of describing failure modes or what a failed verification looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly packed sentences with zero filler; the primary purpose (seal check) is front-loaded and the optional-parameter behavior plus cost/auth note follow in order of importance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description would ideally indicate what a verification result looks like (pass/fail, evidence fields), and it does not. For a low-risk read-only tool with full schema coverage this is an acceptable but incomplete definition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented (room_id format, messages array format), making the baseline 3. The description adds only marginal semantics by explaining that passing messages triggers a completeness/unaltered check, but it adds nothing about room_id or about how a partial/incorrect transcript is treated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (verify) and a precise object of verification: a closed room's seal (signature, on-chain anchor) and transcript completeness/integrity. This is clearly distinguishable from room_close/room_open/room_transcript by intent, though the description itself never names a sibling to contrast with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Check a closed room's seal' implies it is used after room_close, and the conditional clause explains what happens when the optional messages param is supplied. However, there is no explicit when-to-use/when-not guidance or comparison against siblings such as room_transcript, so usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_changesPrivi Scan: recent tool changesARead-onlyInspect
The latest MCP servers whose tool definitions changed after they were first observed (possible rug pulls), newest first. Subscribe to the Live channel 'scan' for these as they happen. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds meaningful context beyond that: the ordering (newest first), the detection semantics (changed after first observed = possible rug pull), a push alternative, and cost ('Free'). It does not address limit/pagination behavior, keeping it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core identity and ordering, followed by the subscription path and cost. No sentence is filler; 'Free' is a legitimate invocation-affecting detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is unnecessary, and annotations cover the safety profile. The description tells the agent what the feed contains and how to get it live. The remaining gap is explicit differentiation from the other scan_* siblings and the limit semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description never mentions the 'limit' parameter. However, the schema itself supplies the default (25), min (1), and max (100), and the parameter name is self-evident, so the agent can invoke correctly without description help. The description fails to compensate for the coverage gap, capping this at minimum-viable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: MCP servers whose tool definitions changed after first observation (rug-pull detection), ordered newest first. An agent can distinguish this from scan_search or scan_server by the 'changed after first observed' framing. It does not explicitly name a sibling, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by pointing to the Live channel 'scan' subscription as an alternative push mechanism, which is useful routing context. However, it gives no explicit when-to-use guidance versus scan_search, scan_rescan, or scan_watchlist, leaving the agent to infer which scan tool to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_claim_startClaim your MCP server's listingAIdempotentInspect
Start proving you operate an MCP server listed in Privi Scan. Returns a token to publish at https:///.well-known/privi-scan.txt. Verified owners get an owner-verified badge, unlimited rescans, change alerts and control over the listing. Needs the org key (create_org is free).
| Name | Required | Description | Default |
|---|---|---|---|
| server | Yes | mcp_... id or endpoint URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false), so the bar is lower. The description adds genuinely non-obvious behavior: it returns a token that must be published at a specific well-known path, and it enumerates what verification unlocks. It does not say whether the token expires or what happens if the file is missing, but it goes well beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action and artifact before the benefit list and prerequisite. The benefits enumeration (badge, rescans, alerts, control) is slightly promotional but does tell the agent why the user would invoke this, so little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, and the description compensates by describing the return value (the token to publish) and the auth prerequisite. It is nearly complete for a one-parameter claim-initiation tool; the remaining gap is the absent link to scan_claim_verify as the required completion step.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'server' parameter is fully described in the schema as 'mcp_... id or endpoint URL'. The description only adds an implicit constraint (the server must already be listed in Privi Scan) and no format or syntax detail beyond the schema, so the baseline of 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: initiating ownership proof for an MCP server listed in Privi Scan, plus the concrete artifact it produces (a token to publish at /.well-known/privi-scan.txt). The word 'Start' signals it is step one of a two-step flow, though it never names scan_claim_verify outright, so sibling differentiation is implied rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a real prerequisite ('Needs the org key'), which is useful forward guidance, but offers no when-to-use vs. when-not guidance and never points to scan_claim_verify as the required follow-up or to scan_owner_listing as the way to check an existing claim. Usage is inferable from the description rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_claim_verifyFinish claiming your MCP serverAIdempotentInspect
Check the token at /.well-known/privi-scan.txt and mark your organization as the verified owner.
| Name | Required | Description | Default |
|---|---|---|---|
| server | Yes | mcp_... id or endpoint URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (not read-only, idempotent, non-destructive). The description adds real behavioral context beyond that: the exact verification artifact (/.well-known/privi-scan.txt) the check depends on and the side effect of marking org ownership. It omits failure behavior when the token is absent or mismatched.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the check and then states the outcome, with zero filler. It is efficient, though the ordering slightly buries the org-verification result, which is the agent's primary motivation for calling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with full schema coverage and annotations carrying the safety profile, the description covers the mechanism and the effect adequately. The remaining gap is sequencing within the scan_claim_start/verify flow and any error path, but no output schema exists that would need explaining.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema coverage is 100%, with the schema itself documenting the accepted 'mcp_... id or endpoint URL' format. The description adds nothing about the server argument, so the baseline 3 for schema-carried semantics applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb-and-effect pair: check the token at a named well-known path, then mark the org as verified owner. This is distinguishable from scan_claim_start, which the 'Finish claiming' title implies is the preceding step, though the description itself never names that relationship.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'Finish' in the title and the verify-and-mark framing imply this is the closing step of a claim flow whose start is scan_claim_start, but no sentence states when to call it, what precondition must hold, or when to use scan_claim_start instead. Usage is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_owner_listingShow or hide your server's listingAIdempotentInspect
Verified owners only: hide the server from the directory (opt-out) or show it again. History already in the transparency log cannot be removed.
| Name | Required | Description | Default |
|---|---|---|---|
| listed | Yes | ||
| server | Yes | mcp_... id or endpoint URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds context beyond the annotations: access is restricted to verified owners and transparency-log history is irreversible. With destructiveHint=false already set, the description correctly frames this as a reversible toggle with one non-reversible side effect, which is exactly the extra detail annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, the authorization requirement front-loaded, then the action and its caveat. No filler, and the irreversible-history warning is placed where it will be read before acting.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and only two parameters, the description covers the essentials: authority required, the two resulting states, and the permanence caveat. It omits error behavior for unverified callers and whether the listing state is scoped per-directory, but nothing critical is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (the 'listed' boolean carries no schema description), and the description compensates by spelling out what each boolean state does: listed=false hides from the directory, listed=true shows it again. The 'server' identifier remains documented only by the schema, which is acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb pair (hide/show) and the resource (server directory listing), so the toggle semantics are unambiguous. It does not explicitly contrast itself with siblings such as scan_server or scan_watchlist, so an agent must infer that this is the owner-side visibility control rather than a discovery tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear precondition ('Verified owners only') and explains the two directions of use via the boolean ('hide ... or show it again'). It stops short of naming alternatives or saying what to do instead when the caller is not a verified owner.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_rescanRescan an MCP server nowARead-onlyInspect
Probe the server immediately instead of waiting for the next crawl (every ~6 hours). For the verified owner or Pro organizations.
| Name | Required | Description | Default |
|---|---|---|---|
| server | Yes | mcp_... id or endpoint URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint and openWorldHint, so safety is partly covered; the description adds genuinely new context the annotations do not: the ~6 hour crawl cadence that this tool bypasses, and an authorization/eligibility requirement. It omits cost, rate-limiting, and what happens on repeated calls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the action and its timing benefit, followed by the eligibility gate. No redundant restatement of the name or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter trigger tool with annotations and no output schema, the description covers what happens, the cadence it replaces, and who may call it. Missing only the return shape / whether it is async, which is minor given no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'server' parameter is already documented as 'mcp_... id or endpoint URL'. The description adds no syntax, format, or selection guidance beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Probe the server immediately') with a clear timing scope, distinguishing it from the automatic crawl. However, it never differentiates itself from the sibling scan_server, leaving the agent to guess which entry point to choose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear condition for use ('immediately instead of waiting for the next crawl') plus an eligibility constraint ('For the verified owner or Pro organizations'). It stops short of naming any alternative tool or stating explicit when-not-to-use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_searchSearch the MCP trust registryARead-onlyInspect
Search Privi Scan, the public directory of remote MCP servers from the official MCP Registry, each with a safety grade, verdict, tool count and change history. Use it to find a trustworthy server for a job. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | name, score, risk, changed or new | score |
| grade | No | Only this grade: A, B, C, D or F | |
| limit | No | ||
| query | No | Words to match in name, description or URL; empty lists everything | |
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds genuine context beyond that: it is a free, public directory sourced from the official MCP Registry, and entries carry a safety grade, verdict, tool count, and change history.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, purpose front-loaded, with no filler; the trailing "Free." fragment is terse but informative. Slightly clipped rather than padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value detail is not needed, and annotations cover safety. What remains unaddressed is pagination/sorting behavior for the limit and offset parameters, but for a search tool this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60% (sort, grade, query documented; limit and offset not), so the schema does most of the work. The description adds no syntax or format detail for any parameter, leaving the baseline of 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (Privi Scan, the public directory of remote MCP servers from the official MCP Registry), which is unambiguous. It does not differentiate itself from close siblings like scan_server, scan_changes, or scan_stats, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use it to find a trustworthy server for a job" gives a clear selecting condition for the tool. It names no alternatives or when-not conditions, so no explicit routing to siblings like scan_server or scan_changes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_serverPrivi Scan: one server in fullARead-onlyInspect
Full report for one MCP server: every tool definition with its hash, all findings with evidence, the change history (what was added, removed or modified, and when) and the transparency-log proof. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| server_id | Yes | mcp_... id from scan_search or mcp_server_check, or the endpoint URL | |
| include_history | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safety profile (readOnlyHint=true, openWorldHint=false), so the bar is lower. The description adds useful context about what the report contains and that it is free, but says nothing about output size, pagination, rate limits, or auth requirements for a potentially large 'full' report.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence opens with the verb+scope and uses a colon list to enumerate deliverable contents; the trailing 'Free.' is terse and informative. No wasted clauses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing returns, and it does so thoroughly (hashes, evidence, change history, transparency proof). The main gap is the undocumented include_history parameter and no note on report size or limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: server_id is well documented in the schema (with its source in scan_search/mcp_server_check), but include_history has no description anywhere and only a default. The description's mention of 'change history' tangentially relates to include_history without explaining how to toggle it, so it adds little parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource and scope ('Full report for one MCP server') and enumerates the report contents (tool definitions with hashes, findings with evidence, change history, transparency-log proof). This is clearly distinguishable from the listing behavior of scan_search and the narrower scan_changes, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the purpose: once you have a server_id, this returns its full report. But there is no explicit guidance on when to prefer this over scan_changes, scan_rescan, or mcp_server_check, and no prerequisites or exclusions are stated. The 'Free' note is a mild cost hint rather than a routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_statsPrivi Scan: totalsBRead-onlyInspect
How many MCP servers Privi Scan tracks, by status and grade, tools indexed, changes recorded and how to verify the evidence. Free.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds a genuine behavioral detail beyond the annotations: the call is 'Free' (no credit cost). Beyond that it largely restates what the output schema already carries (counts and verification info), so it does not go much further.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the counted dimensions come first and the cost note last. Slightly run-on phrasing ('and how to verify the evidence') keeps it from being maximally tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only stats tool with annotations and an output schema, the description says enough to know what is returned. The only gap is routing guidance among the numerous scan_* siblings, which the description does not address.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to clarify beyond the schema. Baseline 4 applies for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource and what is counted: MCP servers tracked by status and grade, tools indexed, changes recorded. An agent can tell this is an aggregate/statistics read rather than a search or listing. It does not explicitly contrast with siblings like scan_changes or scan_search, so it stays below 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus the many sibling scan_* tools (scan_search, scan_changes, scan_owner_listing). The word 'Free' hints at cost but is not framed as a usage condition. The agent must infer the use case from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_unwatchStop watching an MCP serverAIdempotentInspect
Remove a server from your watchlist. Needs the org key.
| Name | Required | Description | Default |
|---|---|---|---|
| server | Yes | mcp_... id or endpoint URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the org-key authorization requirement, which is genuine context, but says nothing about whether removal affects stored scan history or in-flight scans. Given the annotation coverage, this is adequate but thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the action front-loaded and the prerequisite trailing. No filler, no repetition of the title, and nothing that could be cut without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, non-read-only tool with no output schema, the description covers purpose and prerequisite, which is most of what an agent needs. It omits whether the watch must pre-exist, error behavior for unwatched servers, and whether unwatching purges collected data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter, with the schema itself documenting the accepted "mcp_... id or endpoint URL" formats. The description only alludes to the server implicitly and instead mentions an "org key" that is not a declared parameter, adding no semantic detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: removing a server from a watchlist, which is the clear inverse of sibling scan_watch and distinct from scan_watchlist. It is unambiguous about the operation, though it never names the sibling tools it complements, so sibling differentiation is by inference rather than explicit contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is the prerequisite "Needs the org key," which is useful context but not a when-to-use directive. There is no statement about when to unwatch, whether the watch must already exist, or which sibling (scan_watch, scan_watchlist) to use instead. Usage is implied rather than explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_watchWatch an MCP server (pin its tools)AIdempotentInspect
Pin the server's current tools as approved and get a real-time event on your private Live 'org' channel the moment they change, a risk appears or the server goes down. Free plan: 3 servers; Pro: 500. Needs the org key.
| Name | Required | Description | Default |
|---|---|---|---|
| repin | No | Pin the current tools_hash as approved (default true) | |
| server | Yes | mcp_... id or endpoint URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and idempotentHint=true, so the mutation/idempotency profile is covered. The description adds genuinely new behavioral context: the event is delivered to a private Live 'org' channel, it fires on change, risk appearance or server outage, and an org key is required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and outcome, then the quota/key constraints. Dense but every clause carries information; only the plan-tier numbers are arguably secondary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation tool with no output schema, the description covers the side effect (pinning), the trigger conditions and the delivery channel, and annotations cover the safety profile. It stops short of describing the returned subscription/event payload or how to tear the watch down, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both `server` and `repin` with defaults. The description's "pin the current tools as approved" gestures at repin but adds no syntax, format or interaction detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: pin the server's current tools as approved and receive real-time change/risk/downtime events. It is clearly distinguishable from scan_changes, scan_rescan and scan_server by its watch-and-alert framing, though it never names the sibling it complements (scan_unwatch) to close the loop.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives real prerequisites ("Needs the org key") and quota context (Free plan 3 servers, Pro 500), which helps an agent decide feasibility. However, it never says when to choose this over scan_unwatch, scan_watchlist or scan_changes, so the selection guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_watchlistYour watched MCP serversARead-onlyInspect
Your watched servers with their pinned tools_hash and whether each has drifted since you pinned it. Needs the org key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a safe read (readOnlyHint=true) in a closed world, so the safety profile is covered. The description adds one useful operational fact beyond annotations — the org-key prerequisite — but says nothing about result size, ordering, or what an empty watchlist looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the payload description comes first and the precondition follows. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless read with no output schema, the description adequately tells the agent what comes back and what is required to call it. Pagination or drift-threshold semantics are unstated, but the core is covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema cannot carry parameter meaning and the baseline is 4. The description notes the org key is needed, but since this is not exposed as a parameter, there is no syntax to clarify.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (watched servers) and the payload content (pinned tools_hash plus drift status), which clearly separates it from scan_watch and scan_unwatch. It lacks an explicit verb like 'list', so it reads as a noun phrase, but the intent is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus scan_changes, scan_server, or scan_owner_listing, which all touch the same watch/drift domain. The only guidance is the prerequisite 'Needs the org key', which is a setup note rather than usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trust_eventsTrust feed: recent eventsARead-onlyInspect
The latest trust-change events: passports issued, revoked or re-scored, wallets bound or unbound, mandates activated or revoked, transparency-log heads anchored. Without a Pro key the feed is delayed (see live_info); use the WebSocket or SSE stream for real time. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 1-200 | |
| address | No | Only events about this 0x wallet | |
| passport_id | No | Only events about this passport |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond that: free tier is delayed, a Pro key unlocks real-time, and real-time streaming should go through the WebSocket/SSE path rather than this call. It omits pagination behavior, but the limit parameter partly covers that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and event scope, then the tier/real-time caveat. The event enumeration is dense but each item is informative rather than filler; only slight compression opportunity remains.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully sketches what events look like by listing event categories, and it flags the delayed-vs-real-time distinction that affects result freshness. Pagination and ordering are not stated, a minor gap for a feed endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (limit, address, passport_id) are already documented in the schema with constraints and filter semantics. The description adds no syntax or format detail beyond that baseline, and the enumerated event types don't map to any parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource (latest trust-change events) and enumerates the event categories it surfaces (passport issue/revoke/rescore, wallet bind/unbind, mandate activate/revoke, log anchoring). It distinguishes itself from the real-time path by naming the WebSocket/SSE stream and live_info, though it doesn't contrast against state-listing siblings like passport_list or mandate_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit context: use the WebSocket or SSE stream for real time, and see live_info for the Pro-key delay behavior. It falls short of stating when to use this feed vs. sibling listing tools, but the real-time vs. delayed-feed distinction is actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
- Added
privi_payment_options - Added
privi_test_payment_quote - Added
privi_test_payment_simulate
1 tool update
- Changed
passport_gate1 field changed- changed
Input schema / properties / require_anchored / descriptionPrevious value: -"Require the passport to be anchored on the Privi chain"New value: +"Require the passport to be anchored on chain (Base)"
95 tool updates
- First observed
approval_cancel - First observed
approval_list - First observed
approval_policy_set - First observed
approval_request - First observed
approval_status - First observed
approval_wait - First observed
fortress_keys - First observed
fortress_tpi_execute - First observed
fortress_tpi_list - First observed
fortress_tpi_policy - First observed
fortress_tpi_request - First observed
fortress_tpi_status - First observed
gateway_create - First observed
gateway_delete - First observed
gateway_info - First observed
gateway_list - First observed
gateway_set_guard - First observed
gateway_stats - First observed
gov_ai_inventory - First observed
gov_ai_inventory_check - First observed
gov_ai_inventory_export - First observed
gov_ai_usecase_save - First observed
gov_ai_verify_export - First observed
gov_pqc_classify - First observed
gov_pqc_export - First observed
gov_pqc_inventory - First observed
gov_pqc_plan - First observed
gov_pqc_system_save - First observed
gov_pqc_verify_export - First observed
guard_balance - First observed
guard_buy_credits - First observed
guard_check - First observed
guard_check_many - First observed
guard_pricing - First observed
guard_receipt - First observed
kya_bind_wallet - First observed
kya_challenge - First observed
kya_check - First observed
kya_unbind_wallet - First observed
kya_wallets - First observed
ledger_audit_stream - First observed
ledger_check_receipt - First observed
ledger_compliance_report - First observed
ledger_consistency_proof - First observed
ledger_evidence_bundle - First observed
ledger_handshake_accept - First observed
ledger_handshake_inbox - First observed
ledger_handshake_offer - First observed
ledger_handshake_reject - First observed
ledger_handshake_verify - First observed
ledger_inclusion_proof - First observed
ledger_list_streams - First observed
ledger_plan - First observed
ledger_pricing - First observed
ledger_read_stream - First observed
ledger_record_action - First observed
ledger_report_pdf - First observed
ledger_signup - First observed
ledger_tree_head - First observed
ledger_upgrade_pro - First observed
ledger_verify_report - First observed
live_info - First observed
live_kill - First observed
live_resume - First observed
live_status - First observed
mandate_check - First observed
mandate_create - First observed
mandate_get - First observed
mandate_list - First observed
mandate_revoke - First observed
mandate_spend - First observed
mcp_server_check - First observed
passport_gate - First observed
passport_issue - First observed
passport_list - First observed
passport_revoke - First observed
passport_verify - First observed
room_close - First observed
room_info - First observed
room_list - First observed
room_open - First observed
room_transcript - First observed
room_verify - First observed
scan_changes - First observed
scan_claim_start - First observed
scan_claim_verify - First observed
scan_owner_listing - First observed
scan_rescan - First observed
scan_search - First observed
scan_server - First observed
scan_stats - First observed
scan_unwatch - First observed
scan_watch - First observed
scan_watchlist - First observed
trust_events
Related MCP Servers
- AlicenseNot gradedqualityBmaintenancePerplexity for social: ask what competitors are running across social and get answers grounded in real ad and creative data, not guesses.2Apache 2.0
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs113 npm54 PyPIMIT
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.164 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.