ReceiptRail
Emita e verifique recibos de entrega on-chain x402 na Solana. Prova de entrega com bloqueio por hash, verificável de forma independente, para pagamentos de agentes de IA — compradores verificam offline com zero confiança no emissor.
Servidor MCP hospedado
npx add-mcp 'https://agenttoll-receipts.app.workbuddy.host/mcp'Instala no Claude Code, Codex, Cursor e outros
Documentação
ReceiptRail (anteriormente AgentToll) — recibos de entrega on-chain para x402
🔎 Acesso antecipado (2 vagas): Vou inspecionar manualmente o caminho de pagamento-para-entrega do seu endpoint x402 e enviar um relatório de conformidade em até 24h — $9/$19. Detalhes: https://x402-endpoint-inspection.app.workbuddy.host/
ReceiptRail é um serviço de recibos de entrega on-chain para pagamentos de agentes de IA x402 na Solana: após uma liquidação, os vendedores ancoram um digest SHA-256 do conteúdo entregue, além da referência de liquidação, em um PDA público. Qualquer pessoa — o agente comprador, um auditor, um regulador — pode verificar de forma independente o que foi entregue, sem confiar no fornecedor, no comprador ou em qualquer API que operamos.
⚡ Serviço ao vivo (use agora)
| Superfície | Entrada |
|---|---|
| Endpoint MCP (streamable-http) | https://agenttoll-receipts.app.workbuddy.host/mcp |
| Registro Oficial MCP | io.github.xka0085-byte/receiptrail |
| npm (ponte MCP stdio) | npx -y receiptrail-mcp |
| Agent Card / SKILL.md / llms.txt | /.well-known/agent-card.json · /SKILL.md · /llms.txt |
| Preços (0,001 USDC/recibo via x402) | https://agenttoll-receipts.app.workbuddy.host/ |
| Ferramentas | issue_receipt · verify_receipt · get_receipt |
Palavras-chave para descoberta por agentes: recibo x402, escrow x402, recibo de entrega, prova de entrega, Solana, USDC, MCP, pagamentos de agentes de IA, liquidação verificável, verificação de recibos.
AgentToll é o protocolo de recibos de entrega por trás do ReceiptRail. Um fornecedor fixa o digest SHA-256 dos bytes exatos de um relatório em uma conta PDA pública on-chain. Qualquer pessoa pode recomputar o digest de forma independente a partir do arquivo entregue e compará-lo com a cadeia, sem confiar em ninguém.
"Não confie no que dizemos. Execute o comando." Cada alegação de capacidade neste README corresponde a um comando neste repositório e, quando possível, a um link do Solscan na devnet.
Status: W1–W3 concluídos, auditados de forma independente (relatórios em audit/). Implantado na Solana devnet.
- ID do programa:
8ACN1KNEFXM2N2FMzxTfAzB1c3g5n47ZuhbPoUXPnCTp— ver no Solscan - Recibo criado pelo fluxo de pagamento de demonstração registrado: tx de entrega · tx de pagamento
Nota de honestidade: a demonstração usa USDC de teste, um mint de devnet autoemitido sem valor no mundo real. Não é USDC real. Dizemos isso em todos os lugares, inclusive na saída do código.
Por que isso existe
Pagamentos máquina-a-máquina (o padrão x402) estão se tornando reais: agentes pagam por chamada de API. Mas depois que um agente paga, ele não tem prova confiável do que recebeu. Recibos, faturas ou hashes servidos pelo próprio fornecedor são indistinguíveis de fabricados. O AgentToll move essa prova para um livro-razão público neutro: o digest é escrito uma vez, é à prova de adulteração (mesmo id + digest diferente é rejeitado on-chain) e é verificável offline para sempre.
Verifique um recibo existente agora (sem envolvimento do fornecedor)
cd verifier && npm install && cd ..
node verifier/verify.mjs \
--url https://api.devnet.solana.com \
--vendor B7wGaKwEGAmNP7PEhqwFrvfCQPH4zwiE7FZNLoeB4naD \
--report-id x402-demo-001 \
--file demo/report-402.json
Esperado: JSON com "verdict": "PASS" e todas as cinco verificações true (C1 propriedade, C2 derivação de PDA, C3 esquema, C4 vínculo de conteúdo, C5 frescor). Código de saída 0. Em seguida, adultere o arquivo (adicione um byte) e execute novamente — C4 falha, código de saída 1. Essa incompatibilidade é o produto.
Arquitetura
sequenceDiagram
participant B as Buyer agent
participant V as Vendor HTTP service
participant S as Solana devnet
participant C as Offline verifier
B->>V: GET /report/x402-demo-001
V-->>B: HTTP 402 + payment challenge
B->>S: SPL transferChecked (test-USDC)
B->>V: POST + X-Payment-Signature
V->>S: getParsedTransaction, verify payment
V->>S: create_receipt(report_id, SHA-256)
V-->>B: report bytes + receipt metadata
B->>C: Spawn verifier with local report
C->>S: Read receipt PDA via public RPC
C-->>B: C1-C5 PASS/FAIL JSON
O programa on-chain impõe a regra anti-adulteração no nível do livro-razão: um PDA semeado por (vendor, report_id) pode ser criado uma vez; recriar com o mesmo digest é idempotente, com um digest diferente falha com DigestConflict. Sobrescritas são impossíveis, não apenas desencorajadas.
Execute a demonstração completa do x402
Requer Node.js 22+, um par de chaves de fornecedor financiado na devnet e o programa implantado acima.
# 0. install the single JS dependency set
cd verifier && npm install && cd ..
# 1. configure (bash example)
export AGENTTOLL_RPC_URL='https://api.devnet.solana.com'
export AGENTTOLL_KEYPAIR='/absolute/path/to/vendor-keypair.json'
# 2. create test-USDC mint, fund buyer (idempotent)
node demo/setup.mjs
# 3. start vendor (localhost:8787)
node demo/vendor.mjs
# 4. unpaid request must be refused
curl -i http://127.0.0.1:8787/report/x402-demo-001 # → HTTP 402
# 5. run the buyer agent: pay → receive report+receipt → verify 5/5
node demo/buyer-agent.mjs
# 6. forged payment signatures must be rejected
curl -i -X POST -H 'X-Payment-Signature: not-a-real-signature' \
http://127.0.0.1:8787/report/x402-demo-001 # → HTTP 402, no report
demo/buyer-agent.mjs imprime {payment_sig, receipt_tx, pda, verifier_verdict, checks} e sai com 0 somente se o verificador offline gerado passar em todas as cinco verificações.
Programa on-chain (W1)
Anchor 1.2.0, duas instruções:
create_receipt(report_id, digest)— a primeira chamada cria o PDA; mesmo id + mesmo digest é idempotente; mesmo id + digest diferente →DigestConflictverify_receipt(report_id, digest)— sem permissão; emite um eventoReceiptVerified
Compile e teste localmente:
./build.sh # = anchor build --arch v0
cargo test --all # 8 litesvm tests, incl. DigestConflict & idempotency
Auditorias
Cada marco foi revisado por um auditor independente que não escreveu o código de negócios. Relatórios com saídas de comando e evidências on-chain:
audit/W1-2026-09-14.md— contrato, 8/8 testes, implantação na devnetaudit/W2-2026-09-14.md— verificador offline, e2e de detecção de adulteraçãoaudit/W3-2026-09-14.md— fluxo x402, caminhos negativos, replay idempotente
Escopo e limitações (leia antes de confiar em qualquer coisa)
- USDC de teste é autoemitido na devnet; ele representa uma stablecoin real. Sem valor real.
- A demonstração serve um id de relatório em localhost; é uma demonstração de protocolo, não um serviço hospedado.
- O recibo on-chain vincula
report_id + digest; a assinatura de pagamento é vinculada via fluxo de demonstração, não armazenada on-chain (o esquema W1 congelado não tem esse campo). Veja a auditoria W3 §findings. - Uma auditoria de segurança profissional de terceiros está no roadmap e ainda não aconteceu.
Trabalho anterior divulgado
Este projeto foi construído para o hackathon Colosseum CWF. De acordo com as regras, divulgamos desenvolvimento pré-existente: t3n-recon-agent e z-tenant-recon — um protótipo baseado em TEE que implementa a mesma lógica de digest anti-adulteração (rejeição de mesmo-id-digest-diferente, verificador independente), do qual o design on-chain foi portado. Todos os commits, testes e implantações do AgentToll ocorreram durante a janela da competição (primeiro commit: 2026-09-14).
Instruções em chinês em README.zh-CN.md.