Boundra — Payment Approval Gateway for AI Agents
Allow, ask, or veto — a policy decision point your agent consults before signing any payment
我該用這個嗎
品質與安全性
發現項目(2)
- LOW在 get_policy 中
- LOW在 get_policy_versions 中
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"boundra": {
"command": "uvx",
"args": [
"boundra-mcp"
]
}
}
}可執行的套件
0.1.1stdio遠端端點
https://api.boundra.io/mcpstreamable-http它能做什麼
工具清單
工具(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.
輸入結構描述
{
"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"
}輸出結構描述
{
"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.
輸入結構描述
{
"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"
}輸出結構描述
{
"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)
輸入結構描述
{
"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"
}輸出結構描述
{
"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
輸入結構描述
{
"type": "object",
"properties": {
"owner": {
"title": "Owner",
"type": "string"
}
},
"required": [
"owner"
],
"title": "get_spend_reportArguments"
}輸出結構描述
{
"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
輸入結構描述
{
"type": "object",
"properties": {
"owner": {
"title": "Owner",
"type": "string"
},
"limit": {
"default": 10,
"title": "Limit",
"type": "integer"
}
},
"required": [
"owner"
],
"title": "get_audit_trailArguments"
}輸出結構描述
{
"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.
輸入結構描述
{
"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"
}輸出結構描述
{
"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.
輸入結構描述
{
"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"
}輸出結構描述
{
"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)
輸入結構描述
{
"type": "object",
"properties": {
"owner": {
"title": "Owner",
"type": "string"
}
},
"required": [
"owner"
],
"title": "get_policy_versionsArguments"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "get_policy_versionsOutput"
}🟡list_policy_requests
List pending agent policy-change requests
輸入結構描述
{
"type": "object",
"properties": {},
"title": "list_policy_requestsArguments"
}輸出結構描述
{
"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)
輸入結構描述
{
"type": "object",
"properties": {},
"title": "list_templatesArguments"
}輸出結構描述
{
"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)
輸入結構描述
{
"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"
}輸出結構描述
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "render_templateOutput"
}社群
證據