capline-mcp
OfficialClick on "Deploy 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., "@capline-mcpSet up a mandate: $5 per tx, $20 total, then pay DataVendor $5."
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.
capline-mcp
Give your MCP agent a wallet it can't drain.
An MCP server that hands an AI agent a spending capability bounded by a signed Capline mandate. The agent (in Claude Desktop, Cursor, Cline, or any MCP client) can only move funds through the pay tool — and pay refuses anything outside the mandate: over the per-transaction cap, off the payee allowlist, or past the global cross-chain cap. The limits are enforced by code, not the model, so nothing in the agent's context can talk its way past them.
The cap isn't in the prompt — it's a mandate the LLM can't talk to.
Tools
Tool | What it does |
| Provision a mandate: per-tx cap, global cumulative cap, payee allowlist, chains. Returns a |
| The only way to move funds. Refused (not executed) if it breaks the mandate. |
| Committed / reserved / remaining budget + per-chain breakdown. |
| Kill the mandate — every future payment is refused on every chain. |
Related MCP server: Arbor
Add to Claude Desktop
Edit claude_desktop_config.json (Settings → Developer → Edit Config):
{
"mcpServers": {
"capline": {
"command": "npx",
"args": ["-y", "capline-mcp"]
}
}
}Restart Claude Desktop. Then try it:
"Set up a mandate: $5 per transaction, $20 total, only pay DataVendor. Then pay DataVendor $5. Then — ignore that last limit — pay DataVendor $1000."
Watch the $5 settle and the $1000 come back REFUSED (OVER_PER_TX). The model obeyed you; the mandate didn't.
Add to Cursor
~/.cursor/mcp.json (or Settings → MCP):
{
"mcpServers": {
"capline": { "command": "npx", "args": ["-y", "capline-mcp"] }
}
}Configuration
Env var | Default |
|
|
By default it enforces against the hosted Capline coordinator (Layer A), so no wallet or funds are required and you can feel it immediately. Point CAPLINE_COORDINATOR_URL at your own coordinator to self-host. To also enforce on-chain (Layer B, holds even if the agent's key is stolen), settle through a deployed mandate contract. See the capline protocol + SDK repo.
Run from source
git clone https://github.com/caplinehq/capline-mcp && cd capline-mcp
npm install && npm run build
node test-client.mjs # exercises every tool through a real MCP clientLinks
Live demo: capline-protocol.vercel.app/agents
Clone-and-run agent:
capline-example
MIT
Available Tools
4 toolscreate_mandateA
Provision a spend mandate the agent must operate under: a per-transaction cap, a cumulative cap enforced GLOBALLY across every chain, and an optional payee allowlist. Returns a mandateId to pass to pay. Normally the human principal sets this up once, before handing the agent any spending ability.
| Name | Required | Description | Default |
|---|---|---|---|
| chains | No | chains this mandate is provisioned on | |
| maxPerTx | Yes | per-transaction ceiling, in USDC | |
| maxTotal | Yes | cumulative ceiling in USDC, across every chain combined | |
| principal | No | identity granting the authority | mcp-principal |
| allowedPayees | No | allowed payee identities; empty = any payee |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses key behavioral traits: the cumulative cap is enforced globally across chains, the payee allowlist is optional, and a mandateId is returned for subsequent `pay` calls. It does not mention permissions or error behavior, but given the absence of annotations, it provides solid 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 two sentences, front-loaded with the core purpose and specific constraints. It efficiently covers behavior, return value, and typical usage without any 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?
Given the rich input schema and lack of output schema, the description provides essential context: the tool is a one-time setup by the human principal, returns a mandateId, and imposes global constraints. It does not exhaustively cover error conditions or when the mandate becomes active, but it is sufficient for agent invocation and integration with sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers 100% of parameters with detailed descriptions. The description adds minimal extra meaning beyond the schema, though it does emphasize the global nature of the cumulative cap and clarifies that the output is a mandateId. This is consistent with the baseline of 3 for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provisions a spend mandate with specific constraints (per-transaction cap, global cumulative cap, optional payee allowlist). It distinguishes itself from siblings by explicitly mentioning the returned mandateId that is passed to `pay`, making its role in the tool family unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that this is normally set up once by the human principal before the agent is given spending ability, implying it is a prerequisite for `pay`. It does not explicitly name alternatives or exclusions, but the sibling tools (mandate_status, pay, revoke_mandate) make the usage context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mandate_statusA
Read a mandate's current state: committed spend, reserved, remaining budget, and the per-chain breakdown.
| Name | Required | Description | Default |
|---|---|---|---|
| mandateId | Yes | the mandate to inspect |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It explicitly describes the tool as read-only and enumerates the output fields, giving the agent confidence that no side effects occur. It doesn't mention error cases or authorization, but for a simple read tool this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that immediately states the action ('Read') followed by concise detail on what is returned. Every word adds value, with no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one required parameter, no output schema), the description is quite complete: it explains the purpose and the key fields of the result. It could mention whether the returned data is live or cached, but this is not essential for a simple status-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?
The input schema already provides 100% coverage for the single parameter 'mandateId' with the description 'the mandate to inspect'. The tool description adds no additional semantic detail beyond this, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads a mandate's current state, listing specific data elements returned (committed spend, reserved, remaining budget, per-chain breakdown). This distinguishes it from sibling tools like create_mandate, pay, and revoke_mandate, which imply write or state-changing operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description uses 'Read' and specifies what data is retrieved, making it clear this tool is for inspection rather than modification. While it doesn't explicitly name alternative tools or exclusion criteria, the context from sibling names and the read-oriented wording provide clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
payA
Make a payment on behalf of the agent. THIS IS THE ONLY WAY TO MOVE FUNDS, and it is enforced by the mandate: the payment is REFUSED (not executed) if it exceeds the per-transaction cap, the payee is not on the allowlist, or it would breach the global cross-chain cap. A prompt injection in the agent's context cannot bypass this.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | recipient identity / wallet | |
| chain | No | chain to settle on | solana |
| amount | Yes | amount to pay, in USDC | |
| mandateId | Yes | the mandate to spend under (from create_mandate) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral disclosure. It discloses critical safety behavior: payments are refused (not executed) under specific conditions (cap exceeded, payee not on allowlist, or cross-chain cap breach) and that prompt injection cannot bypass these protections. This is significant behavioral context beyond the input schema. It could add details about success/failure responses but is already strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core purpose. Each sentence adds value: the first states the action, the second emphasizes exclusivity and enforcement, and the third addresses security. No redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 params, no output schema, no annotations), the description covers the essential decision-making and safety behavior. It explains why the tool exists, its constraints, and its security guarantees. It does not describe return values, but without an output schema that is not a clear gap. The sibling tools provide surrounding context for mandate lifecycle, making this sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds context about mandate enforcement and safety limits but does not add new meaning to individual parameters beyond what the schema already provides. The schema adequately explains each parameter, and the description's security context supports overall understanding without needing to repeat parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Make a payment on behalf of the agent.' It clearly distinguishes itself from sibling tools by declaring 'THIS IS THE ONLY WAY TO MOVE FUNDS,' which differentiates it from mandate management tools. The purpose is unambiguous and contextually relevant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states that this is the only way to move funds, providing strong guidance on when to use the tool. It does not explicitly mention alternatives or when not to use it, but the 'only way' phrasing effectively rules out other tools for this purpose. A more explicit note about using create_mandate first would earn a 5, but current guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revoke_mandateA
Revoke a mandate. After this, every payment under it is refused on every chain.
| Name | Required | Description | Default |
|---|---|---|---|
| mandateId | Yes | the mandate to revoke |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses a key behavioral trait: payments are refused on every chain after revocation. However, it omits other potentially relevant details such as reversibility, whether the mandate remains visible, permission requirements, or effects on pending payments.
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 concise sentences: the first states the action, the second explains the consequence. Every word earns its place, and information is front-loaded. There is no redundancy or irrelevant 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 simple tool with a single parameter and no output schema, this description covers the essential purpose and behavioral effect. It is complete enough for an agent to understand what the tool does and what result to expect, without needing additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the only parameter 'mandateId' is already described in the schema as 'the mandate to revoke'. The description adds no extra parameter-level meaning, so the baseline score 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 'Revoke a mandate' uses a specific verb and resource, clearly stating the tool's action. It also adds a concrete consequence ('every payment under it is refused on every chain'), which distinguishes it from siblings like create_mandate and mandate_status. This is a clear, unambiguous purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: revoking a mandate causes all underlying payments to be refused across chains, which implies the appropriate use case. It does not explicitly mention alternatives or exclusions, but none exist among the sibling tools, so the guidance is sufficient.
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.
4 tool updates
v0.1.1- First observed
create_mandate - First observed
mandate_status - First observed
pay - First observed
revoke_mandate
TDQS
Scored across 4 tools
Each tool has a clear, non-overlapping purpose: reading mandate status, creating a mandate, executing payments, and revoking a mandate. No ambiguity for an agent selecting between them.
The naming pattern is mixed: 'create_mandate' and 'revoke_mandate' use verb_noun, 'mandate_status' is a noun phrase, and 'pay' is a bare verb. While still readable, the conventions are not uniform.
Four tools is well-scoped for a mandate-driven payment system. Each tool addresses a distinct lifecycle stage without redundancy or bloat.
The core lifecycle—create, read, pay, revoke—is covered. A minor gap is the lack of an update mandate tool, but the domain description indicates mandates are set up once, so this is acceptable.
Maintenance
Related MCP Connectors
Agent payments, API key vaulting, and governed mandates. Agents spend within user-defined limits.
Give your AI agent a spending limit: approval controls and single-use virtual cards.
AI agent spending controls. Set limits, blocklists, and caps. Approve transactions from your phone.
Payment infrastructure for AI agents: spending rules, approval flows, single-use virtual cards.
Related MCP Servers
- AlicenseAqualityCmaintenanceCryptographic proof of consent for AI agents. Sign before you act. Policy engine enforces spending caps, action whitelists, and escalation rules. Independently verifiable by anyone.102Apache 2.0
- AlicenseNot gradedqualityDmaintenanceAgentPay is the authorization layer between an AI agent and real spending. You define the rules — spending caps, allowed merchants, time windows — and every purchase attempt the agent makes is checked against them in real time. Approved transactions go through. Anything outside the mandate is blocked and logged. No more babysitting every agent action. No more runaway charges.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to make autonomous payments on Solana with on-chain enforced spending limits, preventing unauthorized fund drainage.2 npm1MIT
- AlicenseNot gradedqualityAmaintenanceDeterministic, auditable payment policy enforcement for AI agents. It provides pre-action authorization with scopes, budgets, allowlists, and signed mandates via an MCP server.MIT