Machine Markets is the orchestration layer behind Scale. It pairs an AI agent to an activated, bonded machine, gives that pairing a policy with spend limits and an allow/denylist, and exposes a curated catalogue of capabilities and provider services the agent can search against using the machine’s context. The agent’s legitimacy is the machine’s: peaqID, Machine NFT, MCR, and trust level all carry through.Documentation Index
Fetch the complete documentation index at: https://docs.peaq.xyz/llms.txt
Use this file to discover all available pages before exploring further.
Roles
| Role | Description |
|---|---|
| Machine | An activated peaqOS device with a peaqID, Machine NFT, smart account, and bond. The machine is the principal. Funds, identity, and reputation belong to it. |
| Proxy Operator / Machine Owner | Human (or org) that controls the machine. Funds the wallet, pairs the agent, sets the policy, can revoke or repair at any time. |
| Machine Agent | Third-party AI agent (Claude, OpenAI, Virtuals, Teneo, your own) given delegated, bounded authority over the machine’s smart account. peaq does not provide the agent. |
| Machine-Side Runtime Agent | Optional process running on the device that registers local runtime endpoints. Used for skills that execute on the machine rather than at a remote provider. |
| Service Provider | External entity (QVAC, agentic.market services over x402, pay.sh services, etc.) whose service is registered in the catalogue and consumed by Machine Agents. |
Core objects
Skills vs services
Two things look similar. They aren’t.- A skill is a capability schema.
storage.objectsays “an object-storage service exposes these operations”. Skills are the contract. - A service is a concrete instance of a skill from a specific provider. “Exa search via agentic.market” is a service. Services are what you actually buy.
- Native: peaqOS executes the skill server-side or on a registered machine-side runtime endpoint. No human handoff.
- External handoff: the orchestrator returns a structured handoff (URL, contact, setup steps) and the agent or operator completes the purchase out of band. Used when a provider integration is partner-required or credentials-required.
Identity proof flow
Machine registration with the orchestrator is gated by a DID-controller signature. The flow:- Call
POST /machine-identity/challengeswith the machine’sidentityRef. The orchestrator looks up the controller addresses from peaqOS MCR data and returns a short-livedchallengeIdplus amessage. - Sign
messagewith the controller’s private key using EIP-191personal_sign. - Submit
{ challengeId, signature }asidentityProofwhen callingPOST /machines. The orchestrator verifies the signature recovers to one of the controller addresses before persisting. The stored proof is re-checked against MCR data on subsequent machine-bound writes.
Pairing flow
Pairing an agent to a machine follows the same challenge-sign-verify pattern, scoped to the agent’s wallet key:- Call
POST /machines/:machineId/agent-pairings/challengeswithagentAddress,agentProvider,agentRole, and optionalagentDid. The orchestrator returns anAgentPairingChallengewith achallengeId, a machine-boundmessage, and anexpiresAt. - The Machine Agent signs
message(EIP-191personal_sign) with the wallet key behindagentAddress. - Call
POST /machines/:machineId/agent-pairingswithagentProof: { challengeId, signature }and the delegation policy. The orchestrator verifies the signature recovers toagentAddress, persists the pairing withverificationmetadata, and returns theAgentPairingwith a signed HS256 session JWT inpairingToken. Store the token client-side and send it asx-agent-pairing-tokenon market writes. - Tokens expire (default 1 hour). Rotate by issuing a fresh challenge and calling
POST /machines/:machineId/agent-pairings/:pairingId/sessionswith the new proof. A policy change invalidates the current token’sdelegationPolicyHash, so rotate after everyPATCHto the delegation policy.
Order lifecycle
A successful purchase walks the order state machine:disputed if the buyer raises a dispute after delivery; cancelled if a refund settles before delivery; failed if execution errors; handoff if the service ships as an external handoff rather than a native skill run.
Each successful execution writes an Outcome and a Run. Outcomes record the service result; runs record the execution metadata (skill, route, status). Both are queryable via GET /runs and GET /machines/:machineId/outcomes.
Payments follow their own state machine, coupled to the order:
not_required short-circuits the payment lifecycle for free or pre-authorised services.
Payment rails
The orchestrator quotes services in the rail the provider supports:| Rail | When it shows up |
|---|---|
x402 | agentic.market services and most pay.sh services. Agent wallet responds to an HTTP 402 challenge. Execute goes through the paidHttp adapter — orchestrator replays the request with the agent’s payment headers. |
mpp | Solana micro-payment protocol. Used by some pay.sh services on Solana. |
vault-stripe / external | Card-mediated or external handoff. The orchestrator returns a structured handoff and the agent or operator settles out of band. |
wallet / wdk-usdt-transfer | Direct USDT transfer on peaq. wallet upgrades to wdk-usdt-transfer once the proof is RPC-verified against the ERC-20 Transfer log. |
onchain-escrow / escrow | Funds locked into a service-specified escrow contract. |
not-required | Free or pre-authorised services. |
offchain-record | Off-chain attestation, recorded but not RPC-verified. |
recorded: operator attestation. The orchestrator stores the proof but does not verify on-chain.rpc: the orchestrator queries an EVM RPC for the transaction receipt and the ERC-20 Transfer log, validating sender, recipient, token, and amount. Solana proofs are alwaysrecorded.
PEAQOS_PAYMENT_RPC_URL (or PEAQ_EVM_RPC_URL / PEAQOS_EVM_RPC_URL) to enable RPC verification by default.
Delegation, bounded
The orchestration layer enforces the delegation policy server-side. Spend limits, allow/denylists, and skill restrictions are checked at request time, not just at pairing time. Mutating the policy throughPATCH /machines/:machineId/agent-pairings/:pairingId takes effect immediately for new calls.
Revoking a pairing (DELETE) terminates the agent’s authority at once.
Multichain shape
Scale keeps peaq canonical for identity and registry state. Across supported chains:- peaqID, Machine NFT, and the Service Registry stay on peaq
- Machine NFTs and smart accounts deploy on supported chains (Base first)
- IdentityLite, DIDLite, and StakingLite mirror peaq state on each supported chain (Agung now, Base Sepolia next); a dedicated MCR oracle on satellites is reserved
- Machine Agents can pay across chains using the chain and token a service quotes in
eip155:* CAIP-2 identifiers through the SDK wallet layer. See Wallets (OWS) and the Omni-chain concept for the satellite-chain contract surface (DIDLite, IdentityLite, StakingLite).

