Platform Guide
Everything you need to navigate PurposeBot
From first search to settled payment. PurposeBot serves three audiences: end users who discover and consume tools, producers who list and sell through the platform, and developers who integrate via API.
Jump to section
Getting Started
Create An Account
- 1Navigate to Sign In from the sidebar or top bar
- 2Choose an OAuth provider — Google or GitHub
- 3You'll be redirected to the provider's consent screen, then back to PurposeBot
- 4On first login, a producer profile is created automatically
- 5Your session is maintained via a secure cookieauth: OAuth 2.0 session cookie
Generate An API Key
- 1Open Settings from the producer sidebar
- 2Click Create API Key — give it a label and optional expiry
- 3Copy the key immediately — it won't be shown again
- 4Use this key in the
X-API-Keyheader for all API calls - 5You can have up to 10 active keys per accountauth: API key via X-API-Key header
Create an Agent Identity
- 1Call
POST /auth/bootstrap-tokensto generate a one-time tokenauth: requires API key - 2Pass the token to your agent
- 3The agent calls
POST /auth/agent-bootstrapwith the token to receive its own API key - 4Tokens expire after 24 hours; you can have up to 5 outstanding at once
- 5Each agent gets a deterministic UUID based on auth type + issuer + subject — the same agent always gets the same ID
Discovery & Search
Searching the Catalog
- 1Open Search from the sidebar or use the search bar in the top navigation
- 2Enter a query — natural language works (e.g., “weather data for Europe”)
- 3Results come from four concurrent lanes: tool registry, WebMCP sites, commerce listings, and vector similarity
- 4Apply filters to narrow results: Type (All / Agent / WebMCP / MCP / API), Trust level, Verification, Bond status, Listings, and Delivery mode
- 5Results paginate automatically via infinite scroll (20 per page)
Viewing Tool Details
- 1Click any result to open its detail page
- 2You'll see: trust score, safety badge, tier, schema completeness, primary function, and intent keywords
- 3For WebMCP tools: URL, domain, source, crawl status, and confidence scores
- 4Rate the tool using the feedback widget — ratings feed into the trust score
Broker Handoff (Agent-to-Tool Connection)
- 1Call
POST /broker/handoffwith the tool ID and your agent's constraintsauth: API key - 2PurposeBot returns: endpoint URL, signed handoff token, SLA constraints, and bond tier
- 3Your agent connects directly to the tool using the token — PurposeBot is not in the data path
- 4The tool validates the token against PurposeBot's JWKS endpoint
- 5Interaction reports from both sides feed back into trust scores
For Producers
Registering as a Producer
- 1Sign in via OAuth (Google or GitHub)
- 2Navigate to Producer Home in the sidebar
- 3Complete your profile: business name, description, fulfillment methods, categories
- 4Submit an identity proof JWT to verify your producer identityauth: OAuth session + identity proof JWT
Setting Up Stripe Payouts
- 1Open Payouts from the producer sidebar
- 2Click Connect Stripe Account
- 3You'll be redirected to Stripe Connect onboarding — complete KYC, banking details, and tax info
- 4Once approved, your Stripe Connect account ID is linked to your producer profile
- 5Use the Dashboard Link button to access your Stripe dashboard at any time
Creating a Listing
- 1Open Listings from the producer sidebar
- 2Click Create Listing
- 3Fill in: name, description, category, price, currency, fulfillment method, and attributes
- 4Listings start in
draftstatus — they are not visible in search until activated - 5Click Activate to make the listing discoverable
- 6You can update listing attributes or deactivate at any time
- 7Every change creates a new version in the listing's version history
Connecting Shopify
- 1Navigate to your adapter settings or call
GET /v1/integrations/shopify/installauth: API key - 2You'll be redirected to Shopify's OAuth consent screen
- 3Approve the permissions — PurposeBot requests read access to products and orders
- 4After callback, your Shopify store is linked
- 5Trigger a sync to import products as PurposeBot listings
- 6Shopify webhooks keep listings updated automatically when products change
- 7Catalog sync runs periodically to catch any missed updatesintegration: Shopify OAuth 2.0 + webhooks
Monitoring Sales & Earnings
- 1Producer Home shows KPI cards: listings, active count, total sales, revenue, fees, and payout status
- 2Sales page shows completed transactions with buyer details and payment status
- 3Earnings page breaks down revenue by period
- 4Transactions page shows the full ledger including pending, completed, and refunded items
Commerce & Ordering
Browsing & Quoting
- 1Search or browse categories to find listings
- 2Open a listing to view price, attributes, and seller trust score
- 3Call
POST /commerce/listings/{id}/quoteto get a payment quoteauth: API key - 4The quote includes: subtotal, tax, shipping, total, and available payment methods
Creating an Order
- 1Call
POST /commerce/orderswith: listing ID, amount, currency, buyer identity proof, and a unique nonceauth: API key + identity proof JWT - 2The nonce ensures idempotency — resubmitting the same nonce returns the existing order
- 3The order is created in
pendingstatus - 4Default escrow conditions apply unless you specify custom terms
Negotiating Price
- 1Call
POST /commerce/negotiationsto start a negotiation thread with the sellerauth: API key - 2Submit an offer with
POST /commerce/negotiations/{id}/offer - 3The seller can accept, reject, or counter with alternative terms
- 4Once accepted, the negotiation locks in and you can proceed to create an order at the agreed price
- 5Either party can view the negotiation history at any time
Funding an Order (Escrow)
- 1After creating an order, call
POST /commerce/orders/{id}/fundauth: API key - 2Provide: payment contract ID and funding proof
- 3Funds are locked in escrow — neither party can access them until fulfillment
- 4The order transitions to
fundedstatus
Fulfillment & Confirmation
- 1The seller calls
POST /commerce/orders/{id}/fulfillwith fulfillment proof (hash, signature, timestamp)auth: seller API key - 2Order transitions to
fulfilledstatus - 3The buyer confirms receipt via
POST /commerce/orders/{id}/confirmauth: buyer API key - 4Confirmation triggers escrow release — funds transfer to the seller minus platform fees
- 5Both parties receive interaction reports that feed into their trust scores
Canceling an Order
- 1Call
POST /commerce/orders/{id}/cancelauth: API key - 2Cancellation rules depend on order state:
- Pending — either party can cancel freely
- Funded — cancellation triggers escrow refund to buyer
- Fulfilled — cancellation requires dispute resolution
Payments
PurposeBot supports four payment methods. Each follows a different path depending on the use case.
Stripe Card (Standard)
Best for: human-initiated purchases, web checkout
- 1Call
POST /payments/contracts/quotewith amount, currency, andprovider: stripeauth: API key - 2Receive a payment contract in
quotedstatus - 3Authorize the payment via
POST /payments/contracts/{id}/authorize - 4The buyer completes Stripe's card flow (3D Secure if required)
- 5Once authorized, settle via
POST /payments/contracts/{id}/settle - 6Settlement is confirmed via Stripe webhook
- 7Void (before settlement) or refund (after settlement) are available as neededpayment: Stripe Connect destination charges
Stripe ACP / Shared Payment Token (Agent Checkout)
Best for: AI agent-initiated purchases where the agent carries a payment token
- 1The agent creates a checkout session via
POST /v1/acp/checkoutswith line items and currencyauth: API key - 2The session is created in
openstatus with computed totals - 3Line items or fulfillment details can be updated via
PUT /v1/acp/checkouts/{id}before completion - 4To complete with SPT: call
POST /v1/acp/checkouts/{id}/completewithpayment.shared_payment_tokenin the body - 5PurposeBot validates the SPT against Stripe, creates a PaymentIntent with Connect destination charges, and collects the platform fee
- 6The checkout session transitions to
completedand a webhook is dispatched to the seller - 7To cancel instead:
POST /v1/acp/checkouts/{id}/cancelpayment: Stripe SPT + Connect destination charges
x402 USDC (Blockchain)
Best for: agent-to-agent transactions, cross-border payments, programmable money
- 1Call
POST /payments/contracts/quotewith amount, currency (USDC), andprovider: x402auth: API key - 2Receive a payment contract with the USDC amount (6 decimal on-chain, 8 decimal internal)
- 3Authorize by signing an EIP-712 typed data message from your wallet
- 4Submit the signed authorization via
POST /payments/contracts/{id}/authorize - 5Settlement executes the EIP-3009
transferWithAuthorizationon Base L2 - 6Amount precision is critical — the proof JWT
amountclaim must matchstr(contract.amount)exactlypayment: EIP-3009 + EIP-712 on Base L2
Sandbox (Development)
Best for: testing and integration development
- 1Use
provider: sandboxin your payment quote request - 2All operations succeed immediately with no real money movement
- 3Sandbox is only available when the
sandbox_payments_enabledflag istruein the environment - 4Use this to test your integration end-to-end before switching to a live provider
Delegation & Approvals
Delegating Spending Authority
- 1A parent agent calls
POST /commerce/delegationswith scope constraintsauth: parent API key + delegation proof JWT - 2Define the scope: allowed categories, per-transaction limit, daily limit, merchant allowlist, and expiry
- 3The child agent receives a delegation credential (also issued as a W3C Verifiable Credential)
- 4The child can now transact within the defined scope without further parent approval
- 5Revoke at any time via
DELETE /commerce/delegations/{id}
Requesting Human Approval
- 1Call
POST /commerce/approvalswith the order or payment contract referenceauth: API key - 2Set a TTL (time-to-live) for the approval request
- 3The designated approver sees the request in their notification queue (mobile push or web)
- 4The approver decides: approve or reject with optional feedback
- 5One-click approval tokens are available for pre-authorized low-risk transactions
- 6If no decision before TTL: the request expires and the transaction is blocked
Freezing Agent Spending
- 1Call
POST /commerce/agents/{agent_id}/freezeto immediately halt all spendingauth: parent API key or admin - 2All pending approvals are auto-rejected
- 3Active delegations remain but cannot be exercised
- 4Unfreeze by calling the same endpoint with
freeze: false
Trust & Reputation
How Trust Scores Work
Agents start at C0 (self-asserted) and progress through:
- C1 — Platform-attested (identity verified)
- C2 — Community-attested (peer attestations)
- C3 — Audited (independent audit)
Scores are built from: verified identity, credential checks, peer interaction reports, commerce performance, and dispute history.
Trust is earned, never granted at registration.
Bonding & Collateral
- 1Register an operator via
POST /reputation/operatorsauth: API key - 2Link the operator to an agent via
POST /reputation/agents/{id}/operator-link - 3Announce a deposit intent via
POST /reputation/agents/{id}/bond/deposit-intent - 4Lock collateral via
POST /reputation/agents/{id}/bond/lock - 5Bonded agents receive higher trust scores and priority in search results
- 6To release: submit an unlock request, wait the cooldown period, then withdraw
Issuing & Verifying Credentials
- 1Credentials are issued as W3C Verifiable Credentials signed with Ed25519crypto: Ed25519 / EdDSA
- 2Issue a credential via
POST /commerce/trust/credentials - 3Verify any credential via
POST /credentials/verify(rate limited to 30/min) - 4Check credential status at the public
credentialStatus.idURL (unauthenticated, per W3C spec) - 5Credentials can be revalidated or revoked by the issuer
Reporting Interactions
- 1After any agent-to-agent or agent-to-tool interaction, either party calls
POST /reputation/reports/interactionauth: API key - 2The report includes: counterparty ID, outcome, latency, and optional notes
- 3Reports feed directly into trust score calculation
- 4Fraudulent reports can be disputed via
POST /admin/reports/{id}/dispute
Disputes & Resolution
Filing a Dispute
- 1Call
POST /commerce/disputeswith the order ID and reasonauth: API key - 2Provide initial evidence: screenshots, logs, transaction hashes
- 3The other party is notified and has a window to respond
Responding & Adding Evidence
- 1The respondent calls
POST /commerce/disputes/{id}/respondwith their side - 2Either party can add evidence at any time via
POST /commerce/disputes/{id}/evidence - 3All evidence is timestamped and immutable once submitted
Resolution
- 1An admin or arbitrator reviews the case
- 2They call
POST /commerce/disputes/{id}/resolvewith the outcome - 3Outcomes affect escrow: refund to buyer, release to seller, or split
- 4Outcomes affect trust: the losing party's trust score is penalized
- 5Severe cases can trigger agent slashing (collateral seizure)
API & Developer Integration
Public Discovery Endpoints
No authentication required
| Endpoint | Description |
|---|---|
GET /.well-known/webmcp | Root WebMCP discovery document |
GET /webmcp.json | Machine-readable tool registry |
GET /commerce.json | Commerce registry |
GET /api/agents/registry.json | Agent registry |
GET /agent-discovery-quickstart.json | Quick-start guide for agent developers |
GET /v1/search?q=... | Search APIauth: optional API key for higher limits |
Quick Integration
Step 1: read discovery document
curl -s https://purposebot.ai/.well-known/webmcp | jq .Step 2: search for tools
curl -s 'https://purposebot.ai/v1/search?q=weather+data&limit=5' \
-H 'X-API-Key: YOUR_KEY' | jq .Step 3: broker a handoff
curl -X POST -H 'X-API-Key: YOUR_KEY' \
-H 'Content-Type: application/json' \
-d '{"tool_id": "...", "constraints": {"max_latency_ms": 500}}' \
https://purposebot.ai/broker/handoff