openterms-mcp

Recibos de consentimento assinados com Ed25519 + mecanismo de política

Documentação

Openterms

Recibos de consentimento criptográficos de código aberto + proteções programáveis + verificação de provedor para agentes de IA.

Seu agente comprova o que concordou. Sua política controla o que ele pode fazer. O provedor de API pode verificar ambos.

Licença Testes

Demo ao Vivo · Início Rápido · Auto-Hospedagem · Servidor MCP · Contribuindo · Open Receipt Spec

O Que Ele Faz O Openterms fica entre seu agente de IA e as ações que ele executa. Três camadas:

  1. Recibos — Antes de seu agente chamar uma API, ele recebe um recibo assinado com Ed25519. JSON canônico (RFC 8785), hash SHA-256, criptografia real. Qualquer pessoa pode verificá-lo usando chaves públicas — sem necessidade de chave de API, sem exigir confiança no servidor.

  2. Mecanismo de Política — Limites diários de gastos, listas de permissão de tipos de ação, limites de escalonamento. O mecanismo de política avalia antes de o recibo ser assinado. Ações negadas nunca recebem um recibo.

  3. Verificação de Provedor — Provedores de API registram sua URL de termos e verificam o consentimento do agente antes de atender solicitações. Uma chamada GET pública. Ambos os lados da transação confiam na prova.

Início Rápido 60 segundos até seu primeiro recibo:

git clone https://github.com/jstibal/openterms.git cd openterms pip install flask pyjwt cryptography pyyaml bash quickstart.sh

Ou com Docker:

git clone https://github.com/jstibal/openterms.git cd openterms docker compose up --build

Em outro terminal:

bash quickstart.sh

A emissão de recibos é gratuita — sem carteira, sem depósito, sem pagamento necessário.

Auto-Hospedagem Execute sua própria instância do Openterms:

Opção 1: Direto

pip install flask pyjwt cryptography pyyaml python run.py

Servidor em http://localhost:5000

Opção 2: Docker

docker compose up --build

Opção 3: Aponte o servidor MCP para sua instância

export OPENTERMS_API_URL=http://localhost:5000 python openterms_mcp_server.py

Tudo roda localmente. Banco de dados SQLite, sem dependências externas.

Serviço Hospedado Não quer auto-hospedar? Use a instância hospedada em openterms.com — mesmo código de código aberto, gerenciado para você.

Servidor MCP 10 ferramentas para agentes de IA:

Ferramenta O que faz issue_receipt Recibo assinado antes de qualquer ação, com cabeçalhos de verificação de provedor verify_receipt Verificar integridade criptográfica do recibo (público) verify_receipt_by_hash Consultar e verificar por hash canônico (público) check_balance Saldo do workspace get_pricing Preço por recibo list_receipts Recibos recentes get_policy Proteções ativas — chamar na inicialização simulate_policy Pré-verificação: esta ação seria permitida? policy_decisions Trilha de auditoria de cada permitir/negar/escalonar provider_activity Estatísticas de recibos para sua API (autenticação de provedor)

Configuração MCP { "mcpServers": { "openterms": { "command": "python3", "args": ["openterms_mcp_server.py"], "env": { "OPENTERMS_API_URL": "https://openterms.com", "OPENTERMS_API_KEY": "openterms_your_key_here" } } } }

Como Funciona a Verificação de Provedor Agent Openterms API Provider | | | |-- issue_receipt ------->| | |<-- receipt + headers ---| | | |-- webhook notification -->| | | | |-- API call + headers ---|-------------------------->| | |<-- verify/{hash} ---------| | |-- receipt data ---------->| |<--------- response -----|---------------------------|

Agente emite recibo → obtém cabeçalho X-Openterms-Receipt Agente inclui cabeçalho na chamada de API Provedor chama GET /v1/receipts/verify/{hash} — público, sem autenticação Válido → atende. Inválido → rejeita.

Endpoints da API

Núcleo Método Caminho Autenticação Descrição POST /v1/receipts Bearer Emitir recibo assinado POST /v1/receipts/verify Nenhum Verificar recibo GET /v1/receipts/verify/{hash} Nenhum Verificar por hash GET /v1/receipts Bearer Listar recibos GET /.well-known/jwks.json Nenhum Chaves de assinatura públicas

Mecanismo de Política Método Caminho Autenticação Descrição GET /v1/policy Bearer Política ativa PUT /v1/policy Admin Criar/atualizar política POST /v1/policy/simulate Bearer Testar ação hipotética GET /v1/policy/decisions Bearer Trilha de auditoria de decisões

Verificação de Provedor Método Caminho Autenticação Descrição POST /v1/providers Nenhum Registrar como provedor POST /v1/providers/verify Provedor Verificar domínio GET /v1/provider/stats Provedor Estatísticas de recibos GET /v1/provider/receipts Provedor Recibos recentes

Testes

make test

120 testes passando (80 núcleo + 40 verificação de provedor)

Arquitetura openterms/ ├── app.py # API Flask (1135 linhas) ├── db.py # Banco de dados SQLite (15 tabelas) ├── openterms_mcp_server.py # Servidor MCP + CLI (10 ferramentas) ├── core/ │ ├── canonical.py # Canonicalização RFC 8785 │ └── signing.py # Assinatura Ed25519 + JWKS ├── services/ │ ├── receipt_service.py # Pipeline de recibos │ ├── ledger_service.py # Rastreamento de saldo │ └── policy_engine.py # Avaliação de regras ├── tests/ │ ├── test_core.py # 80 testes │ └── test_mvp3.py # 40 testes ├── Dockerfile ├── docker-compose.yml ├── quickstart.sh └── .env.example

Roteiro

Fase Status O que faz MVP1 ✅ Lançado Recibos assinados — registrar o que aconteceu MVP2 ✅ Lançado Mecanismo de política — aplicar o que é permitido MVP3 ✅ Lançado Verificação de provedor — ambos os lados confiam na prova

ORS Spec 🔄 Em andamento Open Receipt Specification — formato portátil

Integrações 🔄 Em andamento LangChain, CrewAI callbacks de uma linha

MVP4 Planejado Encadeamento de recibos, certificação de agentes

Contribuindo

Veja CONTRIBUTING.md. Recebemos especialmente integrações de frameworks, SDKs de linguagens e feedback sobre a Open Receipt Specification.

Licença Apache 2.0 — veja LICENSE.

Copyright 2026 Staticlabs Inc.