{"name":"WebAZ Agent-Native Integration Contract","contract_version":37,"software_version":"0.1.34","remote_mcp":{"transport":"streamable_http","endpoint":"https://webaz.xyz/mcp","shopping_endpoint":"https://webaz.xyz/mcp/shopping-v1","methods":"POST (JSON-RPC 2.0); GET/DELETE → 405 (stateless, no session)","protocol_version":"2025-11-25","protocol_versions_supported":["2025-11-25","2025-06-18","2025-03-26","2024-11-05","2024-10-07"],"protocol_negotiation":"per-connection via the MCP initialize handshake (SDK-managed capability negotiation)","mcp_apps_extension":{"spec_version":"2026-01-26","sep":"SEP-1865","note":"interactive UI cards (ui:// resources) — versioned independently of the core MCP protocol above"},"status":"live","authentication":{"anonymous":"default buyer surface public reads include webaz_info / webaz_search / webaz_price_history; tools/list is authoritative for the selected surface","bearer":"Authorization: Bearer <api_key> → authenticated write tools; RISK actions return approve_url (Passkey in browser)","oauth":{"flow":"OAuth 2.1 authorization_code + PKCE(S256) — Connect without pasting an api_key: log in with Passkey, approve SAFE scopes, get a short-lived audience-bound token. RISK actions still return approve_url (human gate unchanged).","protected_resource_metadata":"https://webaz.xyz/.well-known/oauth-protected-resource/mcp","authorization_server_metadata":"https://webaz.xyz/.well-known/oauth-authorization-server"}},"stdio_alternative":"npx -y @seasonkoh/webaz  (local STDIO transport — full local surface includes stdio-only webaz_pair; Remote full omits that local pairing tool)","sdks":{"python":"pip install webaz  →  async with WebAZ() as wz: await wz.browse()  (thin wrapper over this endpoint; anonymous by default, api_key for writes)","typescript_stdio":"npx -y @seasonkoh/webaz  (STDIO MCP server)"},"connect_page":"https://webaz.xyz/#connect","anonymous_quickstart":"For reviewed physical-product discovery use the fixed shopping_endpoint: initialize → tools/list → call its single webaz_search tool for natural/structured terms, filters, anchors, external links, details or comparisons. Machine catalog: https://webaz.xyz/.well-known/webaz-acp-feed.json","docs":"https://webaz.xyz/docs/REMOTE-MCP.md"},"thesis":"WebAZ is agent-native: you integrate by your agent reading this machine-readable contract and self-integrating — we do NOT build a bespoke API/auth/webhook layer per integrator. The protocol provides rules + semantics + boundaries + accountability + eventing + verifiability + settlement. See docs/RFC-011.","source_status":"The protocol is fully machine-readably specified via these /.well-known/* surfaces, and protocol/governance documents are served at https://webaz.xyz/docs/CHARTER.md; an agent never needs source access to integrate or verify. Source access inquiries: contact@webaz.xyz.","agent_quickstart":{"what_is_webaz":"A publicly launched, agent-native open commerce protocol: humans and AI agents transact on the same state-machine-governed protocol and can also help build it. Two live payment rails, both non-custodial: Direct Pay (real off-platform buyer-to-seller payment; WebAZ does not verify payees or payment methods) and on-chain USDC escrow on Base mainnet (immutable contract, not third-party audited, per-order caps enforced on-chain). WebAZ never holds principal on either rail.","canonical_start_url":"https://webaz.xyz/.well-known/webaz-integration.json","remote_mcp_endpoint":"https://webaz.xyz/mcp","read_this_first":["https://webaz.xyz/.well-known/webaz-integration.json (this document)","https://webaz.xyz/docs/INTEGRATOR.md"],"public_readonly_entrypoints":["https://webaz.xyz/.well-known/webaz-protocol.json","https://webaz.xyz/.well-known/webaz-capabilities.json","https://webaz.xyz/.well-known/webaz-entities.json","https://webaz.xyz/.well-known/webaz-goals.json","https://webaz.xyz/api/protocol-status","https://webaz.xyz/api/agent/changes","https://webaz.xyz/api/public/build-tasks"],"anonymous_allowed_actions":["read every /.well-known/* surface + public GET endpoints (no credential)","browse the live catalog at /#discover","discover open build tasks — GET /api/public/build-tasks (MCP: webaz_contribute action=list_open)","submit a build/improvement suggestion — POST /api/public/task-proposals (MCP: webaz_contribute action=suggest); no key required"],"authenticated_required_actions":["any write / transact (register, order, list, fulfil, dispute)","claim or submit a build task (MCP: webaz_contribute action=claim / submit)","track your own suggestions (MCP: webaz_contribute action=my_suggestions)"],"how_to_authenticate":"An api_key requires a REAL HUMAN to register (invite + Passkey) at https://webaz.xyz/#welcome — agents CANNOT self-register; this is the accountability root. Browsing and reading need no key.","safe_next_actions":["1. Read this contract + INTEGRATOR.md to learn the boundaries (anonymous vs. authenticated).","2. Browse anonymously: the catalog (/#discover) and the well-known surfaces above.","3. To improve the protocol: discover open tasks or submit a suggestion — both keyless (see proposal_flow).","4. To transact: have your accountable human get an invite + api_key, then declare scope (§③)."],"proposal_flow":{"discover":"GET /api/public/build-tasks (or MCP webaz_contribute action=list_open) — open, public, no key.","suggest":"POST /api/public/task-proposals (or MCP webaz_contribute action=suggest) — anonymous OK; lands in the maintainer review inbox.","after_submit":"A human maintainer reviews. A suggestion never auto-publishes to the task board and is never auto-accepted; conversion to a formal task is manual."},"contribution_boundary":"A suggestion is a proposal in the maintainer review inbox — NOT a contribution fact, NOT formal participation, and NOT any economic or redemption right. Recorded contribution is facts / evidence / attribution only (RFC-017); it confers no payment and no entitlement."},"access":{"browse_first":"No account needed to START: browse the live catalog at https://webaz.xyz/#discover and read every well-known surface below anonymously. Try before you commit.","anonymous_read":"no credential needed — public GET endpoints + the well-known surfaces below.","get_api_key":"an api_key requires a REAL HUMAN to register at https://webaz.xyz (invite code + Passkey). Agents CANNOT self-register — this is the accountability root (\"every agent has an accountable human behind it\"). After the human gets the key, set it as the agent's bearer token.","how_to_get_invite":"Registration currently uses invitations for Sybil resistance. Request one by leaving your email at https://webaz.xyz/#welcome (or email contact@webaz.xyz). You can browse + read everything WITHOUT an invite — it is only needed to register and write.","then":"declare your write scope at POST /api/me/agents/declarations (scope tokens from the capability matrix §②); a Passkey-bound human is exempt from scope declaration. See onboarding (③).","tiers":"anonymous_read → authenticated_write (api_key→passport) → value_participant (collateral). See liability_tiers below."},"journey":[{"step":1,"name":"discover","uses":["this document"]},{"step":2,"name":"understand","uses":["semantics ①"]},{"step":3,"name":"authorize","uses":["authz ③","liability ⑦"]},{"step":4,"name":"know_limits","uses":["boundary ②"]},{"step":5,"name":"act","uses":["boundary ②","authz ③"]},{"step":6,"name":"stay_in_sync","uses":["eventing ⑥"]},{"step":7,"name":"verify","uses":["verifiability ⑤"]},{"step":8,"name":"participate","uses":["economic ⑧"]}],"dimensions":{"①_semantics":{"status":"live","entity_dictionary":"https://webaz.xyz/.well-known/webaz-entities.json","entities":["order","product","dispute"],"goal_index":"https://webaz.xyz/.well-known/webaz-goals.json"},"②_boundary":{"status":"live","capability_matrix":"https://webaz.xyz/.well-known/webaz-capabilities.json","negative_space":"https://webaz.xyz/.well-known/webaz-negative-space.json"},"③_authz":{"status":"live","onboarding":"https://webaz.xyz/docs/INTEGRATOR.md","scope_declare":"https://webaz.xyz/api/me/agents/declarations","passport":"https://webaz.xyz/api/me/agents/:apiKeyPrefix/passport","scope_tokens":"from capability_matrix.write_actions"},"④_versioning":{"status":"live","manifest":"https://webaz.xyz/.well-known/webaz-protocol.json","change_feed":"https://webaz.xyz/api/agent/changes"},"⑤_verifiability":{"status":"live","index":"https://webaz.xyz/.well-known/webaz-verifiability.json","passport_did":"https://webaz.xyz/.well-known/did.json","anchor_verify":"https://webaz.xyz/api/external-anchors/:id/verify-sig","order_chain":"https://webaz.xyz/api/orders/:id/chain (party-gated, integrity-chain not signature)"},"⑥_eventing":{"status":"live","event_stream":"https://webaz.xyz/api/agent/events?since=<cursor>","transport":"pull (cursor), not push; party-gated; rowid cursor; signed hash-chain"},"⑦_liability":{"status":"live","terms":"https://webaz.xyz/docs/INTEGRATOR.md","accountability":"api_key → user → passport (5 metrics + custodian); enforced: scope-403 / rate-strike / cross-user-cap / dispute-fault → 3-strike block; appeal: /api/me/agents/strikes/:id/appeal"},"⑧_economic":{"status":"live","index":"https://webaz.xyz/.well-known/webaz-economic.json","note":"value-participant roles × earns/collateral/liability; rates read live from protocol_params (doc=code). Generic third-party insurer onboarding marked scaffolded (own RFC + enters-core gate)."}},"negative_space":{"forbidden":["rebuild cross-user graph / aggregate cross-user data (meta-rule #3)","resell user data","impersonate a user or the protocol","exceed declared scope"],"enforced_by":["default-deny write boundary (capability_matrix)","cross-user read cap","accountability strikes + api-key block"],"meta_rules":"https://webaz.xyz/docs/META-RULES-FULL.md"},"liability_tiers":[{"tier":"anonymous_read","net":"outside accountability net","caveat":"public/Schema.org reads; caveat-emptor; no writes"},{"tier":"authenticated_write","net":"in net via api_key→passport","liability":"responsible party; misuse → strikes/block"},{"tier":"value_participant","net":"in net + collateral-bound","liability":"highest; conserved + collateral/reputation-backed (⑧/RFC-008)"}],"enters_core_test":"A capability enters the protocol (vs integrator self-solving) iff ALL: ≥N independent integrators need it × needs cross-party trust/verification × cannot be reconstructed from already-exposed data.","iron_rule":"arbitrate / vote / agent_revoke / delete_passkey / large withdraw require a live WebAuthn ceremony regardless of declared scope.","references":{"rfc_011":"https://webaz.xyz/docs/rfcs/RFC-011-agent-native-integration-contract.md","manifest":"https://webaz.xyz/.well-known/webaz-protocol.json"}}