Boundra — Payment Approval Gateway for AI Agents

Allow, ask, or veto — a policy decision point your agent consults before signing any payment

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
95%
Integridad del esquema
67%
Calidad de los nombres
96%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (2)

  • LOWTool 'get_policy' description lacks action verben get_policy
  • LOWTool 'get_policy_versions' description lacks action verben get_policy_versions

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~1,595Tokens (definiciones de herramientas)
~1.3 KBTamaño de respuesta típico
Impacto moderado en la atención (1.25% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "boundra": {
      "command": "uvx",
      "args": [
        "boundra-mcp"
      ]
    }
  }
}

Paquetes ejecutables

pypiboundra-mcp0.1.1stdio

Puntos de conexión remotos

https://api.boundra.io/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (11)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
⚪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.

Esquema de entrada

{
  "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"
}

Esquema de salida

{
  "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.

Esquema de entrada

{
  "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"
}

Esquema de salida

{
  "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)

Esquema de entrada

{
  "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"
}

Esquema de salida

{
  "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

Esquema de entrada

{
  "type": "object",
  "properties": {
    "owner": {
      "title": "Owner",
      "type": "string"
    }
  },
  "required": [
    "owner"
  ],
  "title": "get_spend_reportArguments"
}

Esquema de salida

{
  "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

Esquema de entrada

{
  "type": "object",
  "properties": {
    "owner": {
      "title": "Owner",
      "type": "string"
    },
    "limit": {
      "default": 10,
      "title": "Limit",
      "type": "integer"
    }
  },
  "required": [
    "owner"
  ],
  "title": "get_audit_trailArguments"
}

Esquema de salida

{
  "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.

Esquema de entrada

{
  "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"
}

Esquema de salida

{
  "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.

Esquema de entrada

{
  "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"
}

Esquema de salida

{
  "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)

Esquema de entrada

{
  "type": "object",
  "properties": {
    "owner": {
      "title": "Owner",
      "type": "string"
    }
  },
  "required": [
    "owner"
  ],
  "title": "get_policy_versionsArguments"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "get_policy_versionsOutput"
}
🟡list_policy_requests

List pending agent policy-change requests

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "title": "list_policy_requestsArguments"
}

Esquema de salida

{
  "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)

Esquema de entrada

{
  "type": "object",
  "properties": {},
  "title": "list_templatesArguments"
}

Esquema de salida

{
  "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)

Esquema de entrada

{
  "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"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "render_templateOutput"
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada11 herramientas