Boundra — Payment Approval Gateway for AI Agents
Allow, ask, or veto — a policy decision point your agent consults before signing any payment
Should I use this
Quality & Safety
Findings (2)
- LOWin get_policy
- LOWin get_policy_versions
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"boundra": {
"command": "uvx",
"args": [
"boundra-mcp"
]
}
}
}Runnable packages
0.1.1stdioRemote endpoints
https://api.boundra.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (11)
⚪evaluate_payment(amount, recipient, purpose, expected_amount, source_content, ...)
Evaluate a payment intent. MUST be called before executing any payment. ALLOW = you may pay; DENY = you must abandon; ASK = a challenge is returned — relay the reason to the user, then retry with approval_token once the user signs. An optional mandate parameter carries a user-issued single-task authorization.
Input Schema
{
"type": "object",
"properties": {
"amount": {
"title": "Amount",
"type": "number"
},
"recipient": {
"title": "Recipient",
"type": "string"
},
"purpose": {
"title": "Purpose",
"type": "string"
},
"expected_amount": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Expected Amount"
},
"source_content": {
"default": "",
"title": "Source Content",
"type": "string"
},
"approval_token": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Approval Token"
},
"owner": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Owner"
},
"agent_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Agent Id"
},
"mandate": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Mandate"
}
},
"required": [
"amount",
"recipient",
"purpose"
],
"title": "evaluate_paymentArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "evaluate_paymentOutput"
}🟡request_policy_change(agent_id, request, reason)
[For agents] Ask the user for a policy/budget change (e.g. 'raise daily budget from 50 to 80'). The request is queued for user approval; the user signs and publishes a new policy version. Agents can NEVER change policy directly.
Input Schema
{
"type": "object",
"properties": {
"agent_id": {
"title": "Agent Id",
"type": "string"
},
"request": {
"title": "Request",
"type": "string"
},
"reason": {
"title": "Reason",
"type": "string"
}
},
"required": [
"agent_id",
"request",
"reason"
],
"title": "request_policy_changeArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "request_policy_changeOutput"
}🟢get_policy(owner, agent_id)
View the active signed payment policy for an owner (and optionally an agent scope)
Input Schema
{
"type": "object",
"properties": {
"owner": {
"title": "Owner",
"type": "string"
},
"agent_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Agent Id"
}
},
"required": [
"owner"
],
"title": "get_policyArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_policyOutput"
}🟢get_spend_report(owner)
View today's spend summary for an owner
Input Schema
{
"type": "object",
"properties": {
"owner": {
"title": "Owner",
"type": "string"
}
},
"required": [
"owner"
],
"title": "get_spend_reportArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_spend_reportOutput"
}🟢get_audit_trail(owner, limit)
View recent payment-approval audit records for an owner
Input Schema
{
"type": "object",
"properties": {
"owner": {
"title": "Owner",
"type": "string"
},
"limit": {
"default": 10,
"title": "Limit",
"type": "integer"
}
},
"required": [
"owner"
],
"title": "get_audit_trailArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_audit_trailOutput"
}🟡set_policy(owner, scope, version, nl_rule, prev_hash, ...)
[USER ONLY] Submit a new policy version. Must carry the user's wallet EIP-191 signature over the policy document; accepted only after signature + version-chain checks pass. Agents MUST NOT call this tool.
Input Schema
{
"type": "object",
"properties": {
"owner": {
"title": "Owner",
"type": "string"
},
"scope": {
"title": "Scope",
"type": "string"
},
"version": {
"title": "Version",
"type": "integer"
},
"nl_rule": {
"title": "Nl Rule",
"type": "string"
},
"prev_hash": {
"title": "Prev Hash",
"type": "string"
},
"created_at": {
"title": "Created At",
"type": "number"
},
"signature": {
"title": "Signature",
"type": "string"
},
"agent_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Agent Id"
}
},
"required": [
"owner",
"scope",
"version",
"nl_rule",
"prev_hash",
"created_at",
"signature"
],
"title": "set_policyArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "set_policyOutput"
}⚪revoke_policy(owner, scope, revoked_through, created_at, signature, ...)
[USER ONLY] Revoke a policy chain (takes effect immediately; subsequent payments default to DENY). Must carry the user's wallet signature over the revocation statement.
Input Schema
{
"type": "object",
"properties": {
"owner": {
"title": "Owner",
"type": "string"
},
"scope": {
"title": "Scope",
"type": "string"
},
"revoked_through": {
"title": "Revoked Through",
"type": "integer"
},
"created_at": {
"title": "Created At",
"type": "number"
},
"signature": {
"title": "Signature",
"type": "string"
},
"agent_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Agent Id"
}
},
"required": [
"owner",
"scope",
"revoked_through",
"created_at",
"signature"
],
"title": "revoke_policyArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "revoke_policyOutput"
}🟢get_policy_versions(owner)
View a user's policy version history (version chain + hashes, verifiable against on-chain commitments)
Input Schema
{
"type": "object",
"properties": {
"owner": {
"title": "Owner",
"type": "string"
}
},
"required": [
"owner"
],
"title": "get_policy_versionsArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_policy_versionsOutput"
}🟡list_policy_requests
List pending agent policy-change requests
Input Schema
{
"type": "object",
"properties": {},
"title": "list_policy_requestsArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "list_policy_requestsOutput"
}🟢list_templates
List policy templates (personal assistant / travel / dev API / procurement)
Input Schema
{
"type": "object",
"properties": {},
"title": "list_templatesArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "list_templatesOutput"
}⚪render_template(template_id, whitelist, daily, per_tx, ask_above)
Render a natural-language rule from a template + parameters (then compile, sign & publish)
Input Schema
{
"type": "object",
"properties": {
"template_id": {
"title": "Template Id",
"type": "string"
},
"whitelist": {
"items": {
"type": "string"
},
"title": "Whitelist",
"type": "array"
},
"daily": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Daily"
},
"per_tx": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Per Tx"
},
"ask_above": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Ask Above"
}
},
"required": [
"template_id",
"whitelist"
],
"title": "render_templateArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "render_templateOutput"
}Community
Evidence