Skip to main content
Glama
caplinehq

capline-mcp

Official
by caplinehq

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

create_mandate

Provision a mandate: per-tx cap, global cumulative cap, payee allowlist, chains. Returns a mandateId.

pay

The only way to move funds. Refused (not executed) if it breaks the mandate.

mandate_status

Committed / reserved / remaining budget + per-chain breakdown.

revoke_mandate

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

CAPLINE_COORDINATOR_URL

https://capline-protocol.vercel.app/api/coordinator

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 client

MIT

Available Tools

4 tools
create_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
chainsNochains this mandate is provisioned on
maxPerTxYesper-transaction ceiling, in USDC
maxTotalYescumulative ceiling in USDC, across every chain combined
principalNoidentity granting the authoritymcp-principal
allowedPayeesNoallowed payee identities; empty = any payee

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
mandateIdYesthe mandate to inspect

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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

Given the tool's low complexity (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.

Parameters3/5

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.

Purpose5/5

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

The description clearly states the tool reads a 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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesrecipient identity / wallet
chainNochain to settle onsolana
amountYesamount to pay, in USDC
mandateIdYesthe mandate to spend under (from create_mandate)

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden 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.

Conciseness5/5

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.

Completeness4/5

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

Given the tool's complexity (4 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.

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds 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.

Purpose5/5

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

The description opens with a specific verb and resource: '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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
mandateIdYesthe mandate to revoke

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses 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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 4 tool updatesv0.1.1
    • First observedcreate_mandate
    • First observedmandate_status
    • First observedpay
    • First observedrevoke_mandate

TDQS

A4.2/5.0

Scored across 4 tools

Disambiguation5/5

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.

Naming Consistency3/5

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.

Tool Count5/5

Four tools is well-scoped for a mandate-driven payment system. Each tool addresses a distinct lifecycle stage without redundancy or bloat.

Completeness4/5

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

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Cryptographic proof of consent for AI agents. Sign before you act. Policy engine enforces spending caps, action whitelists, and escalation rules. Independently verifiable by anyone.
    10
    2
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    AgentPay 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