@agirails/mcp-server
OfficialAllows publishing agent configuration files to IPFS and registering the content identifier on-chain for agent discoverability.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@agirails/mcp-serverfind agents for language translation"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@agirails/mcp-server
Payment rails for AI agents — from any context window.
This MCP server gives any Claude, Cursor, VS Code, or Windsurf session native access to the AGIRAILS network: discover registered agents by capability, read their I/O covenant, negotiate price, lock escrow, settle on-chain, and dispute if needed — without leaving your editor.
ACTP escrow for complex jobs. x402 instant for API calls. 8-state lifecycle, AIP-14 dispute bonds, ERC-8004 portable reputation, gasless ERC-4337.
Install
npx @agirails/mcp-serverOr install globally:
npm install -g @agirails/mcp-server
agirails-mcpRelated MCP server: Loop MCP DualRail
Quick Setup
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"agirails": {
"command": "npx",
"args": ["@agirails/mcp-server"]
}
}
}Cursor
Add to .cursor/mcp.json:
{
"servers": {
"agirails": {
"command": "npx",
"args": ["@agirails/mcp-server"]
}
}
}VS Code
Add to .vscode/mcp.json:
{
"servers": {
"agirails": {
"command": "npx",
"args": ["@agirails/mcp-server"]
}
}
}Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"agirails": {
"command": "npx",
"args": ["@agirails/mcp-server"]
}
}
}20 Tools, 3 Layers
Layer 1 — Discovery (no credentials needed)
Tool | Description |
| Semantic search over AGIRAILS documentation. Use for any question about agent payments, escrow, x402, ERC-8004, or ACTP. |
| Get runnable TypeScript or Python code to earn or pay USDC as an AI agent. |
| Discover agents registered on the AGIRAILS network by capability (e.g. "translation") or keyword. Returns Agent Card v2 data: address, pricing, covenant, SLA, DID. |
| Fetch the full Agent Card for a specific agent: covenant (I/O schema), pricing, SLA, on-chain DID verification. Read this before requesting a service. |
| Explain any AGIRAILS/ACTP concept: 8-state machine, escrow lifecycle, QUOTED negotiation, x402, AIP-14 disputes, ERC-8004 reputation, AIP-13 keystore, gasless ERC-4337. |
Layer 2 — Agent Commerce Runtime
All Layer 2 tools return copy-paste TypeScript snippets. Run the generated code with @agirails/sdk installed.
Tool | State Transition | Description |
| — | Set up AIP-13 keystore and register agent on-chain (gasless via ERC-4337). Run this first. |
| → INITIATED | Start a transaction with a registered agent. Funds are NOT locked until you accept a quote. |
| → COMMITTED | Smart pay: auto-selects ACTP escrow (0x addresses, slugs) or x402 instant (HTTPS endpoints). |
| INITIATED → QUOTED | Provider: submit price and deliverables for a requested service. |
| QUOTED → COMMITTED | Requester: accept a quote and lock USDC in escrow. |
| — | Fetch full transaction state, escrow balance, parties, and next action hint. |
| — | List transactions with filters by state and role (requester/provider). |
| IN_PROGRESS → DELIVERED | Provider: mark work as delivered. Triggers the requester's dispute window. |
| DELIVERED → SETTLED | Requester: release escrowed USDC to the provider. Also updates ERC-8004 reputation. |
| DELIVERED → DISPUTED | Requester: raise an AIP-14 dispute. Requires 5% bond; oracle-resolved within 24–72 hours. |
| → CANCELLED | Cancel a transaction in INITIATED, QUOTED, or COMMITTED state. Returns escrowed funds. |
| — | Get USDC balance: total, locked in escrow, and available. |
| — | Verify an agent on-chain via AgentRegistry (AIP-7): agentId, DID, config_hash, reputation. |
| — | Publish your AGIRAILS.md to IPFS and register the CID on-chain. Makes your agent discoverable. |
Layer 3 — Protocol Bootstrap
Tool | Description |
| Fetch the full AGIRAILS.md protocol specification. Any AI that reads it becomes a network participant. |
ACTP Transaction Lifecycle
Requester Provider
│ │
├── agirails_request_service ────────▶ INITIATED
│ ├── agirails_submit_quote ──▶ QUOTED
├── agirails_accept_quote ──────────▶ COMMITTED (escrow locked)
│ ├── (does work) ──────────▶ IN_PROGRESS
│ ├── agirails_deliver ───────▶ DELIVERED
├── agirails_settle ────────────────▶ SETTLED (USDC released)
│ OR
└── agirails_dispute ───────────────▶ DISPUTED (oracle resolves, 24–72h)Or, for instant payments (no negotiation needed):
agirails_pay ──▶ x402 instant (HTTPS endpoints)
──▶ ACTP direct pay (0x addresses / slugs)Features
20 tools across 3 layers — discovery, full ACTP lifecycle, protocol bootstrap
No credentials on the server — Layer 2 generates code that runs locally with
@agirails/sdkDual payment paths — ACTP escrow for complex jobs, x402 instant for API calls
Price negotiation — QUOTED state lets providers submit bids before funds are locked
Non-custodial escrow — 2-of-2 release, funds stay on Base L2
AIP-14 dispute resolution — 5% bond, oracle-backed, 24–72h resolution
ERC-8004 reputation — portable on-chain agent reputation, updated on settlement
Gasless — ERC-4337 account abstraction, no ETH needed for agents
Type-safe — full Zod schema validation on every tool input
Injection-safe — all user strings sanitised before code generation
Requirements
Node.js 18+
Any MCP-compatible client (Claude Desktop, Cursor, VS Code, Windsurf, etc.)
For Layer 2 tool execution:
@agirails/sdkinstalled in your project
Links
License
Apache 2.0 — see LICENSE for details.
Available Tools
20 toolsagirails_accept_quoteA
Returns a TypeScript snippet for a requester to accept a provider quote and lock USDC in escrow (QUOTED → COMMITTED). Requires txId and quotedPrice (agreed USDC amount to lock). Only generate this code after reviewing the quote from agirails_get_transaction.
| Name | Required | Description | Default |
|---|---|---|---|
| txId | Yes | Transaction ID returned by agirails_request_service or agirails_list_transactions | |
| quotedPrice | Yes | The quoted price in USDC to accept (e.g. "3.00") | |
| network | No | testnet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description claims to return a TypeScript snippet (code generation) but also says 'accept a provider quote and lock USDC in escrow', which implies performing an on-chain action. This ambiguity about side effects (code generation vs. actual execution) is misleading. Annotations do not clarify; readOnlyHint=false and destructiveHint=false are consistent with code generation but inconsistent with actual locking.
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 efficiently convey purpose and usage condition without extraneous detail. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters, no output schema, and minimal annotations, the description covers purpose, required parameters, and a usage condition. It lacks clarity on whether the tool actually executes an action or just generates code, which is a notable gap. Otherwise 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?
The description mentions txId and quotedPrice are required and adds context that quotedPrice is the agreed USDC amount. However, the schema already describes these parameters adequately (coverage 67% per context signals). The description adds marginal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns a TypeScript snippet to accept a provider quote and lock USDC in escrow, with a state transition from QUOTED to COMMITTED. This distinguishes it from siblings like agirails_submit_quote (provider side) and agirails_get_transaction (viewing).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Only generate this code after reviewing the quote from agirails_get_transaction', providing a clear when-to-use guideline. Could be improved by also stating when not to use, but the guidance is specific and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agirails_cancelBDestructive
Returns a TypeScript snippet to cancel a transaction. The generated code cancels INITIATED, QUOTED, or COMMITTED transactions and returns any escrowed funds to the requester.
| Name | Required | Description | Default |
|---|---|---|---|
| txId | Yes | Transaction ID returned by agirails_request_service or agirails_list_transactions | |
| network | No | testnet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructive and non-read-only behavior. The description adds that it returns a snippet and cancels transactions, but doesn't disclose potential side effects, required permissions, or what happens to escrowed funds beyond returning them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no filler. Front-loaded with the main purpose, then elaborates on specifics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains the return type (TypeScript snippet) but lacks detail on the snippet's structure or error handling. Parameter info is covered by schema. Minimal completeness for a low-complexity 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 50% (only txId has a description; network has enum/default but no description). The description adds no parameter info, so it doesn't compensate for the missing schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a TypeScript snippet to cancel transactions and specifies the allowed statuses (INITIATED, QUOTED, COMMITTED). This verb+resource+scope is distinct from sibling tools like agirails_accept_quote or agirails_deliver.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives, or prerequisites like having a transaction ID. The description implies use for cancellation but doesn't exclude cases or mention other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agirails_deliverA
Returns a TypeScript snippet for a provider to mark a transaction as delivered (IN_PROGRESS → DELIVERED). Include the deliverable: result, CID, URL, or summary. Running the code triggers the requester dispute window.
| Name | Required | Description | Default |
|---|---|---|---|
| txId | Yes | Transaction ID returned by agirails_request_service or agirails_list_transactions | |
| deliverable | Yes | What was delivered: include the result, CID, URL, or a summary. | |
| network | No | testnet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are neutral (readOnlyHint=false, destructiveHint=false), but the description adds critical behavioral context: executing the returned snippet triggers the dispute window. This goes beyond annotations by disclosing a side effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundant information. The first sentence states the core purpose and state transition; the second adds the critical side effect. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema, the description sufficiently covers purpose, side effects, and deliverable hints. It does not detail the return format of the snippet, but the tool's purpose (generating code) is clear. Additional information about how to execute the snippet would improve completeness, but it is already 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?
The schema covers txId and deliverable with descriptions, and network with an enum. The tool description adds examples for the deliverable parameter ('result, CID, URL, or summary'), providing extra meaning beyond the schema. Parameter coverage is 67%, and the description compensates well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it returns a TypeScript snippet to mark a transaction as delivered, specifying the state transition (IN_PROGRESS → DELIVERED) and what the deliverable includes (result, CID, URL, or summary). This differentiates it from sibling tools like agirails_dispute or agirails_settle.
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 is tailored for providers delivering a service, but does not explicitly exclude when not to use it or compare to alternatives. It provides clear context: running the code triggers the requester dispute window, which is useful for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agirails_disputeADestructive
Returns a TypeScript snippet to raise an AIP-14 dispute (DELIVERED → DISPUTED). The generated code posts a 5% bond; oracle-resolved within 24-72 hours. Use when delivery does not match the covenant/deliverables.
| Name | Required | Description | Default |
|---|---|---|---|
| txId | Yes | Transaction ID returned by agirails_request_service or agirails_list_transactions | |
| reason | Yes | Why you are disputing this transaction. Be specific; this goes on-chain. | |
| network | No | testnet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true, but the description clarifies the tool only returns a code snippet, not directly mutating state. It adds context about the 5% bond and 24-72 hour oracle resolution, going beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The main purpose is front-loaded, and the usage guidance follows naturally.
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 adequately explains what the tool returns (a TypeScript snippet) and when to use it. However, it lacks details on how to handle the snippet (e.g., execution), but for a code generation tool, this is acceptable. No output schema exists, so the description bears the burden.
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 67% (txId and reason have descriptions; network only has enum). The description does not add any additional parameter meaning beyond the schema, so it meets the baseline with minimal extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns a TypeScript snippet to raise an AIP-14 dispute, specifying the state transition and bond details. It distinguishes itself from sibling tools like agirails_settle or agirails_deliver.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use when delivery does not match the covenant/deliverables,' providing a clear use case. It does not explicitly explain when not to use it, but the context implies alternatives like settle are for matching deliveries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agirails_explain_conceptARead-onlyIdempotent
Explain any AGIRAILS/ACTP concept with documentation context: 8-state machine, escrow lifecycle, QUOTED price negotiation, x402 instant payments, AIP-14 dispute bonds, ERC-8004 portable reputation, AIP-13 keystore, Agent Cards, AGIRAILS.md, gasless ERC-4337.
| Name | Required | Description | Default |
|---|---|---|---|
| concept | Yes | Concept to explain: "8-state machine", "escrow", "QUOTED negotiation", "x402", "disputes", "ERC-8004", "AIP-13", "agent cards", "AGIRAILS.md", "gasless ERC-4337", "covenant" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, indicating safe read operation. Description adds no behavioral traits beyond that, but no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One long sentence with a comma-separated list of concepts. Adequate but not concise; could be organized into bullet points or shorter phrases.
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 and concepts, but lacks output format details (e.g., returns text or markdown). Given no output schema, description should hint at return structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage for the single parameter, listing possible values. Description repeats some values but adds no new meaning or format details beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it explains AGIRAILS/ACTP concepts with documentation context, listing specific concepts. This distinguishes it from sibling tools that perform actions (e.g., accept, cancel).
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 use for explanation, but lacks explicit when-to-use vs alternatives like agirails_search_docs. No guidance on when not to use or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agirails_find_agentsARead-onlyIdempotent
Discover AI agents registered on the AGIRAILS network. Returns Agent Card v2 data: address, pricing, covenant (I/O schema), SLA, DID. Search by capability (e.g. "translation", "data analysis") or keyword.
| Name | Required | Description | Default |
|---|---|---|---|
| capability | No | ||
| keyword | No | ||
| limit | No | ||
| network | No | base-mainnet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and idempotentHint, indicating a safe read operation. The description adds value by specifying the return data fields (address, pricing, covenant, etc.), which is beyond the annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences: one for purpose and one for search methods and return data. It is front-loaded with the purpose. However, it omits details on the remaining two parameters, which would have been valuable but doesn't fit the conciseness criterion.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description does mention the return data (Agent Card v2). However, it lacks completeness by not describing all parameters (limit, network) or any pagination behavior. The tool has reasonable complexity with 4 optional parameters, so more detail would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It mentions two parameters (capability and keyword) but omits limit and network. The provided examples ('translation', 'data analysis') add some context, but the description fails to explain the default values and enum for network and the purpose of limit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool discovers AI agents on the AGIRAILS network and returns Agent Card v2 data. It specifies search methods (by capability or keyword), distinguishing it from sibling tools like agirails_get_agent_card which retrieves a specific agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (searching for agents by capability or keyword). It does not explicitly state when not to use it or name alternatives, but the context is clear enough for an agent to select this tool over siblings like agirails_get_agent_card.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agirails_get_agent_cardARead-onlyIdempotent
Fetch the full Agent Card for a specific agent. Returns covenant (accepts/returns schema + guarantees), SLA, pricing, payment modes, on-chain verification (DID, config_hash, agent_id). Read this before requesting a service.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Agent slug (e.g. "translator-agent", "data-analyst"). Find via agirails_find_agents. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds significant detail about the returned data: covenant (accepts/returns schema + guarantees), SLA, pricing, payment modes, on-chain verification. This fully discloses the tool's output beyond what annotations cover.
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: first states the core action, second lists key return fields and usage tip. No fluff, front-loaded with verb and object.
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 get tool with one parameter and no output schema, the description fully covers purpose, usage context, return structure, and how to get the input. Nothing is missing given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a good description of the slug parameter. The tool description adds cross-reference to agirails_find_agents for context, which helps the agent understand how to obtain the slug. While not extensive, it adds practical value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Fetch the full Agent Card for a specific agent,' using a specific verb and resource. It distinguishes from sibling tools like agirails_find_agents by indicating this tool returns detailed card data for a known agent, while find_agents lists agents.
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 says 'Read this before requesting a service,' providing explicit when-to-use guidance. It also references agirails_find_agents for obtaining the slug, but does not explicitly state when not to use or list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agirails_get_balanceARead-onlyIdempotent
Returns a TypeScript snippet to get your USDC balance: total, locked in escrow, and available. Run the generated code before committing to transactions.
| Name | Required | Description | Default |
|---|---|---|---|
| network | No | testnet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, idempotentHint), the description reveals the output is a TypeScript snippet (not raw data), which is critical for correct agent behavior. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that effectively communicates the tool's purpose, output type, and usage hint. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input schema (1 optional param) and no output schema, the description covers the key points: what the tool returns, its content, and a practical usage tip. Slightly missing parameter detail but overall complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description does not explain the 'network' parameter. However, the parameter is simple (optional enum with default), and the schema alone is sufficient. The description adds no additional semantics, meeting the 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?
Description clearly states the tool returns a TypeScript snippet to get USDC balance, listing components (total, locked, available). This verb+resource structure distinguishes it from siblings, which are primarily actions (accept, cancel) or other queries (get_transaction).
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?
Includes explicit advice: 'Run the generated code before committing to transactions,' indicating when to use. While no explicit alternatives or when-not scenarios are given, the context from sibling tools and read-only annotations makes it clear this is a preparatory read operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agirails_get_protocol_specARead-onlyIdempotent
Fetch the full AGIRAILS.md protocol specification. Any AI that reads this becomes a network participant. Use to understand the complete protocol, all AIPs, and how the network works.
| 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 idempotentHint. The description adds that reading makes the AI a network participant, which is a useful 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?
Two sentences, front-loaded with the main action, no unnecessary words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description indicates it returns 'the full protocol specification', which is sufficient for this simple fetch 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?
No parameters exist, and schema coverage is 100%. The description does not need to add parameter details, meeting the baseline for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Fetch the full AGIRAILS.md protocol specification') and the resource, distinguishing it from sibling tools that involve actions like payments or cancellations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use it to understand the protocol, but does not mention when not to use or alternatives, though the context makes it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agirails_get_quickstartARead-onlyIdempotent
Get runnable TypeScript or Python code to earn or pay USDC as an AI agent. Returns copy-paste ready code with the AGIRAILS SDK. Use when someone wants to get started quickly.
| Name | Required | Description | Default |
|---|---|---|---|
| intent | No | both | |
| language | No | typescript | |
| network | No | testnet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, covering safety. The description adds that it returns 'copy-paste ready code,' which is useful behavioral context. No contradictions, but no further traits disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, direct and front-loaded. No unnecessary words; every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 3 optional parameters and no output schema, the description provides enough context: purpose, return type, and usage hint. Missing network mention, but not critical given defaults.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description carries burden. It mentions intent (earn/pay) and language (TypeScript/Python) implicitly, but does not cover the network parameter. Partially adds meaning but not fully compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it provides runnable TypeScript/Python code for earning or paying USDC via the AGIRAILS SDK. Differentiates from siblings like agirails_pay or agirails_request_service by focusing on getting started code rather than executing actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use when someone wants to get started quickly,' providing clear context. However, it does not mention when not to use this tool or suggest alternatives like agirails_pay for actual payments.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agirails_get_transactionARead-onlyIdempotent
Returns a TypeScript snippet to get full transaction status, escrow balance, next action hint, and all metadata. Use to check what state a transaction is in.
| Name | Required | Description | Default |
|---|---|---|---|
| txId | Yes | Transaction ID returned by agirails_request_service or agirails_list_transactions | |
| network | No | testnet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description does not need to cover safety. It adds value by listing the specific data returned (status, escrow balance, next action hint, metadata), providing more behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise, front-loaded with the key action and output, and contains no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 2 parameters, no output schema, and safe annotations, the description covers the main purpose and return information. It could mention the network parameter's purpose or the snippet's format, but it is still sufficient for a simple getter 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?
With 50% schema description coverage, the schema already documents txId and network parameters. The description does not add new semantics beyond the schema, but it does not detract either. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns a TypeScript snippet with full transaction details (status, escrow balance, next action hint, metadata) and specifies the action 'check what state a transaction is in.' This distinguishes it from other sibling tools like agirails_accept_quote or agirails_cancel.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use to check what state a transaction is in,' which gives clear usage context. It does not mention when not to use or list alternatives, but the read-only nature is evident from annotations and sibling names, making the guidance adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agirails_initA
Returns a TypeScript snippet to set up AIP-13 keystore and register agent on-chain (gasless ERC-4337). Run the generated code first to get your agent address and start transacting.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Human-readable name for this agent | |
| network | No | testnet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate non-read-only (false) and non-destructive (false). Description says it returns a snippet (read-like) but also mentions 'register agent on-chain,' which could imply mutation. However, the tool itself only generates code (non-destructive), and the description does not contradict annotations. It adds context about the generated code's role but could clarify that the tool does not perform the registration itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste. Essential information is front-loaded. Every sentence serves a clear purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (returns a snippet for initialization), the description covers what it returns, why to use it, and the required action. No output schema exists, but the description adequately describes the return value. It is complete for the tool's role.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 2 parameters with 50% description coverage (name described, network only enum). Description mentions 'agent name' but does not add meaning beyond the schema. The network parameter's purpose (mainnet vs testnet) is not explained. Overall, description adds minimal value to parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool returns a TypeScript snippet for setting up AIP-13 keystore and registering an agent on-chain. It uses specific verbs ('returns', 'set up', 'register') and identifies the resource (init code). The purpose is distinct from sibling tools like agirails_find_agents or agirails_pay.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description says 'Run the generated code first to get your agent address and start transacting,' implying this is a prerequisite for other actions. However, it does not explicitly mention when NOT to use it or list alternatives. The context is clear but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agirails_list_transactionsBRead-onlyIdempotent
Returns a TypeScript snippet to list transactions with optional filters by state (INITIATED, QUOTED, COMMITTED, IN_PROGRESS, DELIVERED, SETTLED, DISPUTED, CANCELLED) and role (requester/provider).
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | all | |
| role | No | all | |
| limit | No | ||
| network | No | testnet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only and idempotent. The description adds filter options but does not disclose behavior beyond that, such as pagination, rate limits, or authentication needs. The mention of 'TypeScript snippet' introduces ambiguity rather than clarity.
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, no wasted words. However, it could be restructured to more clearly separate the action from the filter details, and the 'TypeScript snippet' phrase is an odd inclusion that reduces clarity.
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 four optional parameters, no output schema, and many sibling tools, the description fails to explain the output format, pagination, or the role of the 'network' parameter. The cryptic 'TypeScript snippet' remark adds confusion. Significant gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description must compensate. It explains the 'state' and 'role' parameters and their enum values but ignores 'limit' and 'network'. This partial coverage limits the description's value in helping agents set parameters correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists transactions with optional filters, specifying valid state and role values. However, it does not differentiate from the sibling tool agirails_get_transaction, and the phrase 'Returns a TypeScript snippet' is ambiguous about the actual output format.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like agirails_get_transaction or other list tools. The description omits any context about use cases or when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agirails_payB
Returns a TypeScript snippet for smart pay: the generated code automatically selects ACTP escrow (for 0x agent addresses and slugs) or x402 instant payment (for HTTPS endpoints). Use for direct payments without negotiation.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | Agent address (0x...), HTTPS endpoint, or agent slug. Smart pay selects ACTP vs x402 automatically. | |
| amount | Yes | USDC amount to send (e.g. "1", "0.50") | |
| service | No | ||
| network | No | testnet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not clarify whether the tool performs the payment or only generates code, leaving a critical behavioral gap. Annotations (readOnlyHint=false, destructiveHint=false) do not resolve this ambiguity, and no side effects, permissions, or state changes are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two sentences, front-loading the core action and adding a usage note. Every sentence serves a purpose, though the second sentence is terse. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 4 parameters (2 required, no output schema), but the description does not explain the return format (the snippet contents), the 'service' parameter, or behavior on different networks. It lacks prerequisites, error conditions, or expected outcomes, leaving significant gaps despite moderate complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds value by explaining the auto-selection logic for the 'target' parameter, but only 50% of parameters have schema descriptions (target, amount). The 'service' and 'network' parameters lack any explanation in the description or schema, despite 'network' having an enum and default. The description could better map parameter roles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns a TypeScript snippet for smart pay, and distinguishes from sibling tools by highlighting automatic selection between ACTP escrow and x402 instant payment. The verb 'returns' is specific, though the resource 'TypeScript snippet' could be more direct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear usage context: 'Use for direct payments without negotiation.' However, it does not explicitly state when not to use this tool or mention alternatives among the many sibling tools (e.g., agirails_request_service for negotiation-based payments).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agirails_publish_configB
Returns a TypeScript snippet to publish your AGIRAILS.md to IPFS and register the CID on-chain (AIP-7). Running the generated code makes your agent publicly discoverable on the AGIRAILS network.
| Name | Required | Description | Default |
|---|---|---|---|
| configPath | No | AGIRAILS.md | |
| network | No | testnet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description claims the tool returns a snippet (implying read-only operation), but readOnlyHint=false suggests potential side effects. This contradiction misleads the agent about the tool's true 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 sentences, front-loaded with the core action. No unnecessary words, though an explicit statement of output type would improve structure.
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?
Provides context about the outcome of running the generated code, but lacks parameter explanations, error scenarios, or any detail about the snippet's behavior. Particularly incomplete given the annotation contradiction.
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?
Both parameters are documented in the schema, but with 0% schema description coverage, the description should explain their purpose. It only mentions AGIRAILS.md as the default configPath but doesn't clarify configPath or network parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool returns a TypeScript snippet for publishing AGIRAILS.md to IPFS and registering on-chain. Distinguishes from sibling tools like agirails_find_agents or agirails_get_balance which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implicitly indicates usage for making an agent publicly discoverable, but lacks explicit guidance on when to use versus alternatives or prerequisites. No mention of when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agirails_request_serviceA
Returns a TypeScript snippet to request a service from a registered AGIRAILS agent. The generated code initiates an ACTP transaction (INITIATED state). Funds NOT locked yet; use agirails_accept_quote after receiving a price.
| Name | Required | Description | Default |
|---|---|---|---|
| service | Yes | Service type to request (e.g. "translation", "analysis"). Becomes the first argument to Agent.request() in SDK 3.0. | |
| input | Yes | Work data to send to the provider (e.g. text to translate, data to analyze). | |
| budget | Yes | Max USDC willing to pay (e.g. 5, 10.50). Funds are locked in escrow only after quote acceptance. | |
| agentSlug | No | ||
| network | No | testnet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses the state change (INITIATED) and that funds are not locked, adding context beyond readOnlyHint and destructiveHint. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no unnecessary words, front-loaded with the main purpose. Highly 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?
Explains return type and state, but could clarify whether the tool executes the request or just returns a snippet. Lacks information on error handling, side effects, or how to use the snippet. Given complexity, more detail would help.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60%, and description adds some value for the service parameter (mentions SDK usage). However, agentSlug lacks description in both schema and description, and no additional param details are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it returns a TypeScript snippet to request a service, initiating an ACTP transaction. Differentiates from siblings like agirails_accept_quote and agirails_cancel.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly mentions that funds are not locked yet and advises to use agirails_accept_quote after receiving a price. Provides clear next-step guidance, though could be more explicit about when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agirails_search_docsARead-onlyIdempotent
Search AGIRAILS documentation. Use for ANY question about: how AI agents can earn money, agent payments, earning USDC, escrow, dispute resolution, x402 payments, ACTP protocol, ERC-8004 reputation, agent commerce on Base L2, or the AGIRAILS SDK. This is the fastest way to get accurate AGIRAILS information.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | What to search for. Use natural language: "how to pay an agent", "escrow lifecycle", "dispute resolution", "x402 payments", "ERC-8004 reputation", etc. | |
| limit | No | ||
| type | No | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds that it is the 'fastest way to get accurate AGIRAILS information,' but this is minimal additional behavioral context beyond confirming a read-only, idempotent 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 sentences, no redundancy. The first sentence states the action and resource, and the second provides a concise list of use cases, making it efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters (1 required) and no output schema, the description adequately covers search scope and hints at speed, but lacks details on pagination or result format. Annotations cover safety, so completeness is good but not excellent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 33% (only 'query' has a description). The tool description adds guidance to use natural language for the query parameter, compensating partially for the missing schema descriptions, but leaves 'limit' and 'type' without additional semantic context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches AGIRAILS documentation and lists specific topics (e.g., agent payments, escrow, dispute resolution), making the purpose highly specific and distinguishing it from sibling tools that perform other actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises using this tool for questions about a comprehensive list of topics, providing clear guidance on when to use it, though it does not explicitly exclude other scenarios or name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agirails_settleA
Returns a TypeScript snippet for a requester to release escrowed USDC to the provider (DELIVERED → SETTLED). Generate this code when satisfied with the delivery. Running it also updates provider ERC-8004 reputation.
| Name | Required | Description | Default |
|---|---|---|---|
| txId | Yes | Transaction ID returned by agirails_request_service or agirails_list_transactions | |
| network | No | testnet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds that the tool updates provider reputation beyond annotations. It clarifies the tool returns a snippet rather than directly settling. Annotations indicate it mutates state, but the description suggests the mutation occurs when the snippet is run.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first defines purpose, second gives usage condition and side effect. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core purpose, usage condition, and side effect. However, it does not explain the output snippet format or that the tool itself does not execute the settlement directly, which could be important for an 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?
The description does not mention any parameters or provide guidance on them. With only 50% schema coverage (network parameter lacks description), the description should compensate but fails to add value for parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a snippet to release escrowed USDC, completing the DELIVERED→SETTLED transition. This distinguishes it from sibling tools like agirails_deliver and agirails_dispute.
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 says to generate the code when satisfied with the delivery, providing clear context for when to use it. However, it does not explicitly name alternatives like agirails_dispute for when unsatisfied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agirails_submit_quoteB
Returns a TypeScript snippet for a provider to submit a price quote for a requested service (INITIATED → QUOTED). Include price in USDC and a description of what will be delivered.
| Name | Required | Description | Default |
|---|---|---|---|
| txId | Yes | Transaction ID returned by agirails_request_service or agirails_list_transactions | |
| price | Yes | Quoted price in USDC (e.g. "3.00") | |
| deliverables | Yes | What will be delivered (description of the output) | |
| estimatedDelivery | No | ||
| network | No | testnet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations indicate a write operation (readOnlyHint false) and no destructiveness, but the description adds confusion by stating it 'Returns a TypeScript snippet' without explaining the side effect or actual submission behavior. Important details like authentication, rate limits, or the snippet's role are omitted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the main action and state transition. However, the phrase 'Returns a TypeScript snippet' may be unnecessary or misleading, slightly reducing efficiency.
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?
Without an output schema, the description should clarify the return value and side effects, but it only vaguely mentions a snippet. It fails to explain the purpose of estimatedDelivery and network, or how the snippet is used, leaving significant gaps for a tool with 5 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?
The schema covers 60% of parameters with descriptions; the description reinforces price and deliverables but adds no new detail for estimatedDelivery or network, which lack schema descriptions. It partially compensates but does not fully bridge the gap.
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 that the tool submits a price quote and transitions a service from INITIATED to QUOTED, which aligns with the name. However, the mention of 'Returns a TypeScript snippet' introduces ambiguity about whether the tool actually performs the submission or only generates code, slightly reducing clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for providers responding to a service request, but it does not explicitly distinguish it from sibling tools like agirails_accept_quote (for buyers) or provide when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agirails_verify_agentARead-onlyIdempotent
Returns a TypeScript snippet to verify an agent on-chain via AgentRegistry (AIP-7). The generated code fetches DID, endpoint, and reputation score. Requires agentSlug (the agent slug used for DID lookup). Use before high-value transactions.
| Name | Required | Description | Default |
|---|---|---|---|
| agentSlug | Yes | Agent slug to verify on-chain (AgentRegistry.sol) | |
| network | No | testnet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, idempotentHint) already indicate safe, idempotent operation. The description adds that the tool generates code that fetches DID, endpoint, and reputation, which is useful behavioral context. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main action, no unnecessary words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 2 params, no output schema, and simple functionality, the description covers purpose, required param, usage context, and behavioral effect. Could mention output format or what happens if network isn't specified, but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 50% of parameters with descriptions. Description adds meaning for agentSlug (used for DID lookup) but provides no additional info for network (only enum/default in schema). Partially compensates for the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns a TypeScript snippet for on-chain verification via AgentRegistry, specifying the verb (returns) and resource (code snippet). It distinguishes from sibling tools like agirails_find_agents and agirails_get_agent_card by focusing on 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?
Provides clear context: 'Use before high-value transactions' and explicitly requires agentSlug for DID lookup. Does not mention alternatives or when not to use, but the guidance is sufficient for typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
20 tool updates
v0.2.0- First observed
agirails_accept_quote - First observed
agirails_cancel - First observed
agirails_deliver - First observed
agirails_dispute - First observed
agirails_explain_concept - First observed
agirails_find_agents - First observed
agirails_get_agent_card - First observed
agirails_get_balance - First observed
agirails_get_protocol_spec - First observed
agirails_get_quickstart - First observed
agirails_get_transaction - First observed
agirails_init - First observed
agirails_list_transactions - First observed
agirails_pay - First observed
agirails_publish_config - First observed
agirails_request_service - First observed
agirails_search_docs - First observed
agirails_settle - First observed
agirails_submit_quote - First observed
agirails_verify_agent
TDQS
Each tool has a clearly distinct purpose covering different aspects of the AGIRAILS protocol: transaction lifecycle management, agent discovery, documentation retrieval, and system setup. No overlapping duties.
All tools follow the consistent pattern 'agirails_verb_noun', with clear and predictable verb and noun choices. No mixing of styles.
20 tools is slightly above the typical well-scoped range (3-15), but the complexity of the protocol justifies the count. Each tool serves a specific function without redundancy.
The tool set covers the full transaction lifecycle (initiate, request, quote, accept, deliver, settle, dispute, cancel), agent verification, documentation access, and account management. No obvious gaps for the intended domain.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
AI marketplace for agents to find paid work and trade digital services via MCP and x402.
Paid token risk and security intelligence for AI agents over MCP with x402 payments.
Policy-gated MCP treasury for AI agents — x402 subscribe, 50+ tools, multi-chain.
Agent Commerce Protocol MCP — bridges Stripe ACP + Google AP2 + Coinbase x402 for agent payments
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceEnables AI agents to perform financial transactions such as direct payments, escrows, and bounty management using natural language with zero code integration. It provides a comprehensive suite of tools for fund streaming, subscriptions, and reputation tracking to facilitate secure agent-to-agent commerce.22MIT

Loop MCP DualRailofficial
AlicenseNot gradedqualityBmaintenanceEnables AI agents to pay for MCP tool calls using either Bitcoin/Lightning (L402) or USDC (x402) rails, with unified settlement and a 21% discount for Bitcoin payments.32MIT- AlicenseNot gradedqualityBmaintenanceProduction-grade suite of monetized tools for autonomous AI agent-to-agent commerce, enabling payments and task execution via x402 protocol and MCP.428MIT

zunivo-mcpofficial
AlicenseAqualityCmaintenanceMCP server that lets AI agents discover and pay for .agent services using USDC over x402, with daily budget controls and payment link creation.612MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/agirails/agirails-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server