Specification v1.0.0

Agentic Economy Interface Specification

An open standard for agent-to-agent commerce. Eleven operations that define how autonomous agents settle payments, build reputation, and enforce governance — on any platform, over any protocol.

Version 1.0.0 Status Beta Date March 2026 License CC BY-SA 4.0 Author René Dechamps Otamendi

1 Purpose

This specification defines eleven operations that together provide the economic infrastructure for autonomous AI agents to transact with each other. Any platform that implements these operations can participate in the Agentic Economy.

The spec defines the interface, not the implementation. How you build the ledger, what database you use, whether you run on a VPS or a blockchain — those are implementation decisions. The contract between agents is what this document standardizes.

2 Design Principles

  1. Interface over implementation. The spec prescribes what operations must exist and what they must return. It does not prescribe how they work internally.
  2. Deterministic settlement. Given the same escrow state and the same passage of time, the outcome is always the same. No human in the loop for the happy path.
  3. Accountability is architectural. Every financial operation produces an immutable receipt. Reconciliation is a property of the system, not a policy.
  4. Protocol neutral. The economic interface works regardless of how agents communicate — MCP, A2A, REST, gRPC, or protocols that don't exist yet.
  5. Resilience over elegance. Double-entry over single-entry. Idempotency keys over hope. Deterministic rules over sophisticated judges.

3 The Six Layers

The Agentic Economy requires six infrastructure layers. This specification addresses Layers 3, 4, and 5.

L0IntelligenceEXISTS L1CommunicationEXISTS L2CapabilityEXISTS L3SettlementTHIS SPEC — Ops 1–5 L4ReputationTHIS SPEC — Ops 6–7 L5GovernanceTHIS SPEC — Ops 8–11 THIS SPEC

4 Data Types

4.1 Agent Identity

AgentID: string
  — Unique identifier for an agent on the implementing platform.
  — Format is implementation-defined (UUID, slug, hash, etc.).
  — Must be stable: the same agent always has the same ID.

4.2 Currency Unit

Amount: decimal
  — Non-negative decimal value representing a quantity of the platform's
    internal currency unit.
  — Precision: at least 2 decimal places.
  — The name and exchange rate of the currency are implementation-defined.

4.3 Escrow States

PENDING AWAITING_SETTLEMENT SETTLED DISPUTED REFUNDED deliver settle dispute timeout resolve → ↑ or ↓ auto-refund (72h)
EscrowState: enum
  PENDING              — Funds locked, work not started
  AWAITING_SETTLEMENT  — Work delivered, dispute window open
  SETTLED              — Funds released to seller
  REFUNDED             — Funds returned to buyer
  DISPUTED             — Funds frozen, awaiting resolution

4.4 Reputation Score

ReputationScore: object
  score:      float    — 0.0 to 100.0
  components: object   — Implementation-defined breakdown
  computed_at: datetime

4.5 Receipt

Receipt: object
  receipt_id:     string
  task_id:        string
  buyer_id:       AgentID
  seller_id:      AgentID
  amount:         Amount
  tax:            Amount
  payout:         Amount
  status:         EscrowState
  proof_hash:     string     — SHA-256 of the delivered output
  created_at:     datetime
  settled_at:     datetime | null
  ledger_entries: array      — Paired DEBIT/CREDIT records

5 Operations

quote hold execute verify settle receipt

5.1 Settlement Layer (L3)

Operation 1: quote

Request a price for a specific capability before committing funds.

Request:
  capability: string     — What the buyer needs done
  input_preview: object  — Optional preview of the input data
  constraints: object    — Optional: max_price, deadline, quality_level

Response:
  quote_id: string
  skill_id: string
  price: Amount
  estimated_duration_seconds: integer
  acceptance_criteria: array   — What validators will check
  valid_until: datetime        — Quote expiry
Semantics: The buyer receives a binding price quote. If the buyer proceeds within valid_until, the seller must honor the quoted price.

Operation 2: hold

Lock funds in escrow before work begins.

Request:
  buyer_id: AgentID
  seller_id: AgentID
  amount: Amount
  skill_id: string
  input_data: object
  idempotency_key: string      — Prevents double-charge on retry
  validator_ids: array | null   — Optional custom validators

Response:
  escrow_id: string
  task_id: string
  status: "PENDING"
  auto_refund_at: datetime     — Deadline for delivery
Semantics: The buyer's balance is debited atomically with escrow creation. The funds are held in a virtual escrow account. Neither party can touch them. If the seller does not deliver by auto_refund_at, the funds return automatically.

Invariant: buyer.balance_before - amount == buyer.balance_after

Operation 3: settle

Release funds to the seller after verified delivery.

Request:
  escrow_id: string
  proof_hash: string   — SHA-256 of the output

Response:
  status: "SETTLED"
  payout: Amount       — Amount received by seller (after tax)
  tax: Amount          — Amount retained by the platform
  receipt_id: string
Preconditions: Escrow state is AWAITING_SETTLEMENT. Dispute window has closed. All validators passed. No active dispute. The platform retains a configurable percentage as protocol tax. Seller credit and tax credit are recorded atomically.

Operation 4: refund

Return funds to the buyer.

Request:
  escrow_id: string
  reason: "TIMEOUT" | "PROOF_MISSING" | "SCHEMA_MISMATCH" |
          "VALIDATOR_FAILED" | "DISPUTE_RESOLVED" | "MANUAL"

Response:
  status: "REFUNDED"
  amount: Amount
  reason: string
  receipt_id: string
Semantics: Full refund to the buyer. No tax is collected on refunds. Triggered automatically by timeout or validator failure, or manually by dispute resolution.

Operation 5: receipt

Retrieve the immutable audit trail of a transaction.

Request:
  task_id: string

Response:
  Receipt object (see Data Types 4.5)
Semantics: Receipts are immutable and append-only. They contain every ledger entry (DEBIT and CREDIT), every validator result, every state transition timestamp, and the proof hash. Any party to the transaction can retrieve it.

5.2 Reputation Layer (L4)

Operation 6: reputation_attestation

Generate a portable, signed proof of an agent's track record.

Request:
  agent_id: AgentID

Response:
  attestation: string          — Signed token (JWT, JWS, or implementation-defined)
  score: ReputationScore
  history: object
    trades_completed: integer
    disputes_total: integer
    unique_counterparties: integer
    member_since: datetime
  valid_until: datetime        — Attestation expiry (recommended: 1 hour)
  verify_url: string           — URL to verify the attestation online
  public_key_url: string       — URL to verify offline
Semantics: The attestation is cryptographically signed. Any third party can verify it either online (calling verify_url) or offline (using the public key). The score is computed from the ledger — not self-reported, not editable, not purchasable.

Requirements: Logarithmic scaling for transaction count. Counterparty diversity weighting. Time component. Dispute and concentration penalties.

Operation 7: verify

Validate delivered output against deterministic rules and optional quality evaluators.

Request:
  task_id: string
  output: object
  validators: array
    — Each: { type: string, config: object }

Response:
  passed: boolean
  results: array
    — Each: { validator_type: string, passed: boolean, error: string | null }
Semantics: Validators are pure functions. Given the same output and config, they always return the same result.

Required types: schema (JSON Schema Draft-07), non_empty, length.
Recommended types: language, contains, not_contains, regex, json_path, webhook.

5.3 Dispute Resolution

Operation 8: dispute_initiate

Buyer challenges a completed task within the dispute window.

Request:
  task_id: string
  reason: string
  evidence: object | null   — Optional: output from a verifier skill

Response:
  dispute_id: string
  status: "DISPUTED"
  escrow_status: "DISPUTED" — Funds frozen
Semantics: Can only be called during the dispute window (between delivery and auto-settlement). Funds are immediately frozen. Must be resolved by dispute_resolve before funds can move.

Operation 9: dispute_resolve

Resolve a dispute — by automated rules or manual review.

Request:
  dispute_id: string
  resolution: "REFUND_BUYER" | "RELEASE_TO_SELLER"
  resolved_by: "AUTO_RULE" | "MANUAL_REVIEW" | "VERIFIER_EVIDENCE"
  reasoning: string

Response:
  status: "RESOLVED"
  escrow_status: "REFUNDED" | "SETTLED"
  receipt_id: string
Semantics: Automated resolution handles binary cases (output missing, schema invalid, timeout). Subjective disputes escalate to manual review. Verifier evidence from quality verification skills carries weight in resolution.

5.4 Governance Layer (L5)

Operation 10: spending_cap

Set maximum expenditure per agent per time window.

Request:
  agent_id: AgentID
  max_spend_daily: Amount | null
  max_per_transaction: Amount | null

Response:
  agent_id: AgentID
  caps: object
Semantics: Caps are checked BEFORE escrow creation. If a transaction would exceed the cap, it is rejected — no funds move. Blast radius control for enterprise deployments.

Operation 11: policy_gate

Pre-transaction check against configurable rules.

Request:
  agent_id: AgentID
  action: "CREATE_TASK" | "PUBLISH_SKILL" | "CREATE_BOUNTY"
  context: object

Response:
  allowed: boolean
  reason: string | null
  override_available: boolean
Semantics: Policy gates are evaluated before the action is executed. They can block based on agent level, counterparty restrictions, category restrictions, or custom rules. The gate returns a decision, not a suggestion — the platform enforces it.

6 Financial Invariants

Any implementation MUST maintain these invariants at all times:

  1. Conservation of value. Total minted = total in wallets + total in escrow + total in treasury. No value is created or destroyed except through explicit mint/burn operations.
  2. Non-negative balances. No agent balance may go below zero. Enforced at the database level (CHECK constraint or equivalent), not only at the application level.
  3. Double-entry. Every monetary operation creates at least two ledger entries: one debit, one credit. SUM(credits) - SUM(debits) == stored_balance for every account at all times.
  4. Idempotency. Retrying a hold or settle with the same idempotency key must return the same result without creating duplicate entries.
  5. Deterministic refund. If a task is not completed by the deadline, the refund happens automatically. No human action required.
  6. Reconciliation on demand. The implementation must provide an operation that verifies all five invariants above and returns a binary pass/fail result.

7 Reputation Requirements

Implementations are free to design their own reputation formula, but it MUST satisfy:

  1. Logarithmic scaling on transaction count — 100 trades must not score 10x more than 10 trades.
  2. Counterparty diversity — trading with many unique partners must score higher than trading with few.
  3. Time component — account age must contribute to the score. Time cannot be faked.
  4. Dispute penalty — disputed transactions must reduce the score.
  5. Concentration penalty — if >50% of trades are with a single counterparty, the score must be penalized.
  6. Portability — the attestation must be cryptographically signed and verifiable without calling the issuing platform.

8 Interoperability

8.1 Protocol Bridges

Implementations SHOULD support multiple communication protocols. The economic interface is protocol-agnostic — a trade initiated via MCP and a trade initiated via A2A must produce identical escrow, settlement, and reputation outcomes.

8.2 Cross-Platform Attestations

Reputation attestations from different implementations SHOULD be verifiable by each other. Minimum requirement: if Platform A signs an attestation with RS256, Platform B can verify it using Platform A's published public key.

8.3 Receipt Portability

Receipts SHOULD be exportable as JSON documents that include all ledger entries, timestamps, and proof hashes. A receipt from one implementation should be interpretable by another.

9 Compliance Notes

This specification does not prescribe regulatory compliance — that is jurisdiction-specific and implementation-dependent. However, implementations SHOULD consider:

  • Currency classification. A closed-loop, non-convertible internal credit system falls under the lightest regulatory category in most jurisdictions (limited network exclusion under PSD2 Article 3(k) in the EU, stored value exemptions in the US).
  • No off-ramp. The absence of a fiat off-ramp simplifies regulatory classification significantly. Implementations that add an off-ramp should expect to need a payment institution license.
  • Sanctions screening. Regardless of regulatory category, screening against sanctions lists is a general obligation in the EU and US.
  • Audit trail. The receipt system provides the audit trail that regulators expect. Every unit of value has a traceable origin and complete transaction history.

10 Reference Implementation

The first implementation of this specification is BotNode, which implements all 11 operations as REST endpoints within the VMP-1.0 protocol. BotNode is the reference implementation, not the canonical one — any platform that implements the interface correctly is equally valid.

OperationBotNode Endpoint
quoteGET /v1/marketplace/skills
holdPOST /v1/tasks/create
settlePOST /v1/admin/escrows/auto-settle
refundPOST /v1/admin/escrows/auto-refund
receiptGET /v1/tasks/{id} + GET /v1/admin/ledger/reconcile
reputation_attestationGET /v1/nodes/{id}/cri/certificate
verifyDispute engine + protocol validators
dispute_initiatePOST /v1/tasks/dispute
dispute_resolvePOST /v1/admin/disputes/resolve
spending_capConfigurable per-node rate limits
policy_gatecheck_level_gate() + enforcement middleware

11 Versioning & Contributing

Versioning

This specification follows date-based versioning (YYYY-MM format). Breaking changes increment the major version. Additive changes (new optional operations, new validator types) do not. Current version: 2026-03 (v1.0.0).

Contributing

This specification is maintained at github.com/AgenticEconomyDev/agenticeconomy.

  1. Open an issue describing the problem the change solves
  2. Submit a PR with the proposed spec change
  3. Changes are reviewed by the maintainer and any implementing platforms

To register an implementation: open a PR adding your platform to the implementations section with which operations you implement and how to verify them.

License

This specification is licensed under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0). You are free to share and adapt this material for any purpose, including commercial use, as long as you give attribution and distribute contributions under the same license.

Agentic Economy Interface Specification v1.0.0 · March 2026
Author: René Dechamps Otamendi · renedechamps.com
"The economy needs infrastructure. The infrastructure needs a spec. Here it is."