- MCR API: reads, plus one signed write. , machine profiles, operator fleet data, metadata, and Machine Cards, all backed by contracts on peaq, plus the monetization opt-in toggle. Documented below.
- Machine Markets API: powers Scale. Machine identity proofs, machine records, , the skill registry, the service catalogue, and machine-aware market search. See the Machine Markets API overview.
Tokenomics 2.0 machines
mcr.peaq.xyz is the Tokenomics 1.0 server. It addresses machines by did:peaq:0x<address> and integer machine IDs, and it serves the machines onboarded through IdentityRegistry. Machines activated under Economics 2.0 have derived uint256 IDs and did:peaq:<decimal id> DIDs; this server does not know them.
The 2.0 MCR server is live at https://mcr-20.peaq.xyz since 2026-09-05. The SDKs (0.6.0+) and CLI (0.0.8+) point their Tokenomics 2.0 monetization calls at it, and since @peaqos/peaq-os-sdk 0.7.0 / peaq-os-sdk 0.7.1 (2026-09-11) the query helpers (queryMcr, queryMachine, queryOperatorMachines and their Python equivalents) read it too on a tokenomics20 client, addressing machines as did:peaq:<decimal id> and check its compatibility signal (GET /.well-known/peaq-monetization) before signing anything; that signal is published, so monetization reads and writes reach the server. The host exposes the same routes as the 1.0 server minus /solana/*, addressed by decimal machine ID: GET /mcr/did:peaq:<decimal id>, GET /machines/<decimal id>, GET /machine/<decimal id>/monetization, GET /operator/did:peaq:0x<address>/machines (served from an ownership index synced to the finalized block; while it catches up the route answers 503 with a detail naming the sync position). Address-form DIDs return 400 Invalid machine DID format there. The CLI’s qualify and show cannot address 2.0 machines until 0.0.9 (see peaqOS CLI); until then read 2.0 ratings through the SDK helpers, over plain HTTP, or on the Machine Explorer. Everything below describes the 1.0 API on mcr.peaq.xyz.
Quick start
Pick the setup that matches your workflow: an AI-driven flow via the peaqOS skill, or direct HTTP calls.- Agent skill
- cURL
- ROS 2
/peaqos in Claude Code and ask for an MCR score, machine profile, or operator fleet — the skill picks the right CLI command and the CLI hits this API for you. To target a specific runtime, add --agent claude-code | cursor | windsurf — see the peaqOS AI page.Base URL
Set the environment variablePEAQOS_MCR_API_URL to the root of the MCR API server:
http://127.0.0.1:8000.
All endpoint paths in this reference are relative to that base URL.
Authentication
There are no API keys or tokens anywhere on this API. Every read is public: MCR scores, machine profiles, and metadata are public on-chain data. The single write, PUT /machine/{key}/monetization, authorizes the caller by verifying an signature carried in the request body. Still no key or token: the signature is the credential.Rate limits
The API enforces a limit of 90 requests per minute per IP address. Requests that exceed the limit receive a429 Too Many Requests response. For production deployments with multiple workers, the rate limiter backend can be swapped to Redis.
Server configuration
When self-hosting the MCR API, these environment variables tune caching, storage, the monetization write path, and test-mode behavior. Typical deployments need the contract addresses, RPC, and a persistent directory for the monetization state; the rest have workable defaults.Error envelope
Most error responses use the same JSON shape:detail string describes the cause. Common values:
Coded envelope on the monetization endpoints
The two monetization endpoints (GET, PUT) nest a stable machine-readable code instead of a bare string:code, never on message. One case returns neither shape: a body that is not valid JSON gets a 422 whose detail is a list of validation objects with no code at all.
Status codes
DID format
Endpoints that accept a DID path parameter support two formats:- Full DID:
did:peaq:0xabc123... - Raw address:
0xabc123...
did:peaq: prefix internally before querying the chain.
The monetization endpoints are the exception. Their key parameter takes a full DID or a decimal machine id, and rejects a raw address with INVALID_REQUEST.
MCR API endpoints
GET /mcr/{did}
Machine Credit Rating score, rating, bond status, event counts, and revenue trend for a single machine.
GET /machine/{did}
Full machine profile with data visibility-dependent fields (private, onchain, or public).
GET /operator/{did}/machines
Paginated list of machines registered under an operator, with per-machine MCR scores.
GET /solana/mcr/{solana_addr}
The same MCR scorecard and operator listing, keyed by a Solana address bound to the peaq identity.
GET /metadata/{token_id}
NFT metadata for a MachineNFT token. Same response shape as /machine/.
GET /machines/{machine_id}
peaqOS Machine Card for a machine, including services, registrations, and operator info.
GET /health and /ready
Liveness and readiness probes for health checks and monitoring.
GET /machine/{key}/monetization
Current monetization opt-in state for a machine: status, signer, and last update.
PUT /machine/{key}/monetization
Signed opt-in or opt-out toggle. The only signature-verified write on this API.
Machine Markets API
Separate surface, separate host (orchestrator deployment). Pairing, delegation policy, skill registry, service catalogue, and market search.Machine Markets API overview
Base path, access model, error codes, common types, and the full Machine Markets endpoint surface.

