SAAX Protocol
Server Details
Durable commitment lifecycle, verification, governance and recovery layer for agentic commerce.
- Status
- Healthy
- Uptime
- 91.3% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- bryantrudy24/saax-protocol
- GitHub Stars
- 0
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 26 tools
Most tools occupy clearly distinct lifecycle slots, and descriptions actively cross-reference siblings (get_commitment vs get_commitment_status vs list_commitments, etc.), which strongly aids selection. The remaining friction is the dense read cluster (get_commitment_status / get_commitment_history / get_recovery_status / get_pending_actions) and the easy-to-confuse pair get_evidence_verification (an action) vs verify_evidence (also an action) vs list_evidence.
Nearly everything follows a clean verb_noun snake_case pattern (create_commitment, accept_commitment, submit_evidence, raise_dispute, list_capabilities). Exceptions are minor: `ping` has no verb_noun form, and `get_evidence_verification` uses a get_ prefix for what is actually a verification operation, which slightly misleads.
26 tools sits just past the heavy threshold, and the domain (governance lifecycle + evidence + disputes + routing + discovery) is genuinely large, so most tools earn their place. Still, the several overlapping commitment-read tools could plausibly be consolidated into fewer calls, making the surface heavier than necessary.
The surface covers the full nonfinancial lifecycle: prepare -> accept -> create -> cancel/close/resume, plus history, recovery, evidence submit/verify/list, and dispute raise/resolve/list, with discovery and fee tools. Gaps are mostly deliberate (no settlement, escrow release, or refund tools; no commitment amendment/update) and are documented, but an agent needing a financial step or term amendment hits a dead end inside this tool set.
Available Tools
26 toolsaccept_commitmentAccept a signed proposal and create exactly one authenticated commitmentAInspect
Accepts a signed preflight proposal with explicit buyer authorization and creates exactly ONE authenticated SAAX commitment. Revalidates the proposal (trusted provider key, profile version, expiry, combination, manifest digest), verifies the BUYER'S SIGNATURE over the exact proposal digest and terms digest, durably accepts once (single-writer store), and returns the operation + commitment. Creates NO payment authorization, custody funding, service execution, or release. A buyer acceptance is NOT a payment authorization or evaluator release verdict. Errors are typed DSC_* codes. Idempotent: same idempotencyKey + same request returns the same operation; same key + different request -> DSC_NONCE_CONFLICT; a single-use proposal cannot be re-accepted under a new key -> DSC_PROPOSAL_REUSED.
Inputs: proposal (required), acceptance (required), idempotencyKey (required).
cancel_commitmentCancel a commitmentAInspect
Cancels a commitment when the caller (verified by EIP-712 proof) holds buyer or authority authorization with cancel scope. Terminal and nonfinancial � no payment, refund, or settlement is executed. Reconciles authoritative state first. Idempotent via idempotencyRef.
Inputs: role (required), proof (required), agentId (required), commitmentId (required), +2 more.
close_commitmentClose a fulfilled commitmentAInspect
Closes a fulfilled commitment (settled -> finalized) when the caller (verified by EIP-712 proof) holds system or authority authorization. Nonfinancial � no settlement, escrow release, or refund is executed. Reconciles authoritative state first. Idempotent via idempotencyRef.
Inputs: role (required), proof (required), agentId (required), commitmentId (required), +1 more.
create_commitmentCreate a rail-neutral commitmentAInspect
Creates a governed commitment between a buyer and a seller and persists it to the SAAX commitment store. The commitment is settlement-rail-neutral: settlementRail is metadata only (x402, mpp, ap2, acp, or unspecified) and is NEVER a prerequisite. Returns the new commitment id (saax_), createdAt, status, and the settlementRail. Call this BEFORE any payment flow to establish the governed commitment record. Once created, use get_commitment to read the manifest.
Inputs: terms (required), buyerId (required), sellerId (required), acceptanceCriteria (required), +3 more.
get_authority_validationValidate an authority proofAInspect
Validates an authority proof against a commitment. Requires an active SAAX Premium subscription. For evidence verification, use get_evidence_verification.
Inputs: proof (required), commitment (required), subscriptionEmail (required).
get_commitmentGet a commitment manifestAInspect
Returns the full commitment object for a given commitment ID — including terms, state, manifest hash, and evidence references. Call this when an agent needs the complete commitment record. For status-only polling, use get_commitment_status. For listing all commitments for a subscriber, use list_commitments.
Inputs: commitmentId (required).
get_commitment_historyGet the durable lifecycle journal for a commitmentAInspect
Returns the append-only lifecycle event ledger for a commitment � every recorded transition with actor, authority reference, state version, and evidence reference. The caller must present an EIP-712 authority proof binding its identity to the commitment. Read-only; reconciles the authoritative commitment before returning. For a compact status, use get_commitment_status; for recovery guidance, use get_recovery_status.
Inputs: role (required), proof (required), agentId (required), commitmentId (required).
get_commitment_statusGet a commitment's lifecycle stateAInspect
Returns only the current lifecycle state for a given commitment ID, plus the recommended next action for the calling agent. Call this before retrying any commitment that timed out — an unknown outcome is a status check, not another POST. The next_action field tells the agent whether to retry, poll, or stop. For the full commitment record, use get_commitment.
Inputs: commitmentId (required).
get_evidence_verificationVerify evidence against acceptance criteriaAInspect
Verifies external evidence against a commitment's acceptance criteria. Requires an active SAAX Premium subscription. For authority proof validation, use get_authority_validation.
Inputs: evidence (required), criterion (required), commitment (required), subscriptionEmail (required).
get_pending_actionsGet the caller's permitted next lifecycle actionsAInspect
Returns the lifecycle actions the caller (verified by EIP-712 proof) may currently perform on a commitment � derived from the canonical transition map, the caller's role, and the caller's durable authorization scope. Read-only. For full recovery context, use get_recovery_status.
Inputs: role (required), proof (required), agentId (required), commitmentId (required).
get_protocol_infoGet SAAX Protocol informationAInspect
Returns the SAAX Protocol version, available capability count, and the URL to the specification. Call this when an agent needs a one-time overview of the protocol. For pricing, use get_routing_fee. For the full capability list, use list_capabilities. For a liveness check, use ping.
Inputs: no named parameters.
get_recovery_statusGet recovery status and pending actions for a commitmentAInspect
Returns the authoritative commitment state, the caller's authorization status (active/revoked/expired), whether the commitment is recoverable, and the caller's permitted next actions. Reconciles the durable commitment row and the caller's authorization record before returning. The caller must present an EIP-712 authority proof. Read-only. For the raw journal, use get_commitment_history; to continue a workflow, use resume_commitment.
Inputs: role (required), proof (required), agentId (required), commitmentId (required).
get_routing_feeGet SAAX routing feeAInspect
Returns the current routing fee schedule. Call this before initiating a routing request to determine the expected cost. For capability discovery, use list_capabilities. For protocol overview, use get_protocol_info.
Inputs: no named parameters.
get_supplier_detailsGet supplier detailsAInspect
Returns the detailed record for one supplier in the SAAX Router index: identifier, name, description, services (name/endpoint/version), owner and source provenance. Call this after route_request or list_capabilities to inspect a specific supplier before preparing a commitment. Read-only; exact supplier_id match only (no enumeration). A registry entry is not a guarantee of service quality or verification.
Inputs: supplier_id (required).
list_capabilitiesList routed capabilitiesAInspect
Returns the capabilities currently indexed by the SAAX Router, with supplier counts per capability. Call this to discover what can be routed. For pricing of a specific capability, use get_routing_fee. For protocol overview, use get_protocol_info.
Inputs: no named parameters.
list_commitmentsList commitments for a subscriberAInspect
Returns all commitments associated with a subscription email. Requires an active SAAX Premium subscription. Call this to retrieve commitment history for a subscriber. For a single commitment by ID, use get_commitment. For status-only checks, use get_commitment_status.
Inputs: subscriptionEmail (required).
list_disputesList disputes for a commitmentAInspect
Returns the durable dispute records for a commitment (dispute identifiers, status, resolution, attribution, timestamps). The caller must present an EIP-712 authority proof and hold an active authorization on the commitment. Commitment-scoped: callers with no authorization see nothing. Optional status filter. Read-only.
Inputs: proof (required), agentId (required), commitmentId (required), limit, +2 more.
list_evidenceList evidence for a commitmentAInspect
Returns the durable evidence records for a commitment (stable identifiers, integrity references, submitter attribution, status, timestamps � never raw payload content). The caller must present an EIP-712 authority proof and hold an active authorization on the commitment. Commitment-scoped: callers with no authorization on the commitment see nothing. Optional status filter (submitted|verified|rejected|disputed). Read-only.
Inputs: proof (required), agentId (required), commitmentId (required), limit, +2 more.
pingPingAInspect
Returns a lightweight liveness response. Call this to verify the endpoint is reachable. Do not use for discovery, capability listing, or pricing — use get_protocol_info, list_capabilities, or get_routing_fee instead.
Inputs: no named parameters.
prepare_commitmentPrepare a free, nonbinding signed proposal (preflight)AInspect
Prepares a free, NONBINDING signed proposal (preflight) for a desired SAAX capability. Validates capability, schema/version/digest, units, and the exact supported network/asset/rail/mode combination; returns a provider-signed proposal binding the request digest and normalized terms. Creates NO agreement, payment, custody deposit, service execution, resource reservation, or spending authority. A provider signature is NOT buyer acceptance. No preflight fee. Errors are typed DSC_* codes.
Inputs: units (required), schema (required), issuedAt (required), capability (required), +5 more.
raise_disputeRaise a dispute on a commitmentAInspect
Raises a durable dispute on a commitment and transitions it to the disputed state. The caller must present an EIP-712 authority proof and hold an unrevoked, unexpired authorization on the commitment (verified in-transaction). Disputes may only be raised from evidence_submitted or fulfilled states per the canonical lifecycle. Dispute resolution NEVER triggers a financial transfer. Idempotent per idempotencyRef.
Inputs: proof (required), reason (required), agentId (required), commitmentId (required), +3 more.
resolve_disputeResolve an open disputeAInspect
Records an evaluator decision on an open dispute and transitions the commitment to the canonical nonfinancial outcome (continue|rework|satisfied|against). The caller must present an EIP-712 authority proof and hold an unrevoked, unexpired EVALUATOR authorization on the commitment (verified in-transaction). Resolution NEVER executes a financial transfer or settlement. Idempotent per idempotencyRef.
Inputs: proof (required), agentId (required), outcome (required), disputeId (required), +2 more.
resume_commitmentResume a commitment after the original agent terminatedAInspect
Lets an independently authorized replacement agent continue a commitment. Reconciles the authoritative state, verifies the caller's EIP-712 authority proof, and executes the requested nonfinancial transition through the canonical transition engine. The replacement agent must hold its OWN durable authorization (no automatic inheritance). Duplicate requests are idempotent. Financial transitions (settle/finalize with settlement, escrow release, refunds) are NOT exposed. For inspection first, use get_recovery_status or get_pending_actions.
Inputs: role (required), proof (required), action (required), agentId (required), +5 more.
route_requestRoute a demand to ranked suppliersAInspect
Submits a capability request and returns ranked supplier matches. Commitment creation with payment runs through the HTTP POST /route endpoint, not this tool. Use list_capabilities first to discover available capabilities. For commitment lookup after routing, use get_commitment.
Inputs: capability (required), budget, deadline.
submit_evidenceSubmit fulfillment evidenceAInspect
Durably submits evidence for a commitment. The caller must present an EIP-712 authority proof; the recovered signer must hold an unrevoked, unexpired provider or buyer authorization on the commitment (verified in-transaction against the durable registry). The evidence envelope is validated for structure and size, bound to the commitment and optional acceptance criterion, and persisted with the verified submitter attribution and an integrity payload hash. Idempotent per idempotencyRef: a replay returns the original record; reuse with a materially different payload is rejected. Submission does NOT transition the commitment state and does NOT trigger settlement, escrow release, or finalization � those require separate authorized lifecycle actions.
Inputs: proof (required), agentId (required), evidence (required), commitmentId (required), +2 more.
verify_evidenceVerify or reject submitted evidenceAInspect
Sets the verification status of a submitted evidence record to verified or rejected. The caller must present an EIP-712 authority proof and hold an unrevoked, unexpired EVALUATOR authorization on the commitment (verified in-transaction). Idempotent per verdict: re-verifying with the same verdict replays the original outcome; changing a verified record to rejected (or vice versa) is rejected without a dispute path. Does NOT auto-transition the commitment state � the caller must perform the authorized lifecycle transition separately. Rejection requires a reason.
Inputs: proof (required), agentId (required), verdict (required), evidenceId (required), +2 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
Agent-native MCP for governed commerce, x402 payments, paid capabilities, and verifiable receipts.
Deterministic, machine-verifiable dispute resolution for A2A escrows.
Machine-native capabilities with explicit contracts and machine-readable commerce.
Agent routing, safety preflight, execution receipts, best execution and verified outcomes.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceEnables multi-party conditional escrow locking, autonomous proof-of-delivery release triggers, referral fee splits, and dispute freeze protection for agentic commerce and enterprise settlement workflows.MIT
- AlicenseNot gradedqualityBmaintenanceEnables multi-party conditional escrow locking, autonomous proof-of-delivery release triggers, referral fee splits, and dispute freeze protection for agentic commerce and enterprise settlement workflows.7MIT
- AlicenseCqualityAmaintenanceMCP services for agent security preflight, source scanning, injection screening, proof-of-work policy rehearsal, carbon accounting, climate disclosure and regulatory monitoring. Use each hosted endpoint in the README. Inspect a free quote before buyer-authorized x402/USDC payment. Includes free trust and settlement tools. Maxwell rehearsal does not activate runtime protection.220Apache 2.0
- AlicenseCqualityBmaintenancePersistent multi-agent work graph and document-state machine for contracts, specs, slices, evidence, verification, handoffs, and cost-aware AI execution.7Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.