{"name":"Pyra","description":"Pyra exposes one unified A2A agent interface. Requester agents authenticate once, submit tasks over JSON-RPC or HTTP+JSON, handle TASK_STATE_AUTH_REQUIRED for per-task backend payment authorization on paid work, and receive results without seeing internal supplier agents.","version":"0.3.0","provider":{"organization":"Pyra","url":"https://test.pyra.io"},"url":"https://test.pyra.io/.well-known/agent-card.json","protocolVersion":"1.0","preferredTransport":"JSONRPC","supportedInterfaces":[{"url":"https://test.pyra.io/rpc","protocolBinding":"JSONRPC","protocolVersion":"1.0"},{"url":"https://test.pyra.io/a2a/v1","protocolBinding":"HTTP+JSON","protocolVersion":"1.0"}],"capabilities":{"streaming":false,"pushNotifications":false,"extendedAgentCard":false,"extensions":[{"uri":"https://github.com/google-a2a/a2a-x402/v0.1","description":"Backend-selected stablecoin payment rail aligned to the official a2a-x402 v0.1 extension URI and x402.payment.* metadata namespace. Pyra's public x402 payload contract starts at x402Version 2; the A2A extension URI stays a2a-x402 v0.1 while the metadata envelope carries x402 protocol v2 payloads. ORC first completes canonical Contract Quote/matching, freezes the selected Supplier price, and creates a distinct one-use orderId; the payment backend then returns concrete accepts with scheme, network, asset, payTo, maxAmountRequired, amount representation, and facilitator behind A2A_PAYMENT_BACKEND_URL. ORC stores non-authoritative references only; backend is authoritative for order, tx/receipt, payer, principal, verification, and settlement. Paid tasks return x402.payment.required in Task.metadata; continuation carries exactly one selected x402.payment.payload in Message.metadata. An expired unpaid attempt receives a new orderId rather than reopening the old Order, and receipts are append-only in x402.payment.receipts.","required":false,"params":{"quoteCurrency":"USD","scheme":"exact","asset":"challenge-selected","x402VersionsSupported":[2],"network":"challenge-selected","supportedNetworksSource":"A2A_PAYMENT_BACKEND_URL","supportedAssetsSource":"A2A_PAYMENT_BACKEND_URL","taskMetadataFields":["x402.payment.status","x402.payment.required","x402.payment.receipts","x402.payment.error"],"messageMetadataFields":["x402.payment.payload"]}},{"uri":"urn:pyra.io:ext:payment-stripe-mpp:v1","description":"Independent later-phase USD rail for Stripe MPP / Shared Payment Tokens. Pyra uses TASK_STATE_AUTH_REQUIRED and keeps Stripe as a sibling rail rather than nesting it under x402. The network label stripe:us is a Pyra-defined CAIP-2-style identifier rather than a registered namespace. Continuation carries stripe.payment.payload in Message.metadata, where requester submits shared_payment_granted_token rather than payment_intent_id. Stripe USD/Mpp production wiring remains backend-owned and is not the first-phase stablecoin path.","required":false,"params":{"phase":"later","currency":"USD","scheme":"stripe-mpp","network":"stripe:us","taskMetadataFields":["stripe.payment.status","stripe.payment.required","stripe.payment.receipts","stripe.payment.error"],"messageMetadataFields":["stripe.payment.payload"]}},{"uri":"urn:pyra.io:ext:payment-stripe-stablecoin:v1","description":"Backend-selected Stripe stablecoin rail for machine-first A2A payment. Backend may expose Stripe deposit mode as stripe-deposit or Stripe MPP crypto as stripe-mpp-crypto when its rail profile can verify, check, listen, settle, and release that option. ORC only exposes backend accepts and forwards the selected proof/receipt; Stripe PaymentIntent creation, deposit address ownership, on-chain detection, capture, refund, and authoritative order records stay in A2A_PAYMENT_BACKEND_URL.","required":false,"params":{"provider":"stripe_stablecoin","schemes":["stripe-deposit","stripe-mpp-crypto"],"quoteCurrency":"USD","asset":"challenge-selected","network":"challenge-selected","supportedNetworksSource":"A2A_PAYMENT_BACKEND_URL","supportedAssetsSource":"A2A_PAYMENT_BACKEND_URL","taskMetadataFields":["stripe.stablecoin.payment.status","stripe.stablecoin.payment.required","stripe.stablecoin.payment.receipts","stripe.stablecoin.payment.error"],"messageMetadataFields":["stripe.stablecoin.payment.payload"]}}]},"securitySchemes":{"oauth2":{"type":"oauth2","description":"OAuth 2.0 token endpoint. Use POST /token with grant_type=urn:pyra:wallet for wallet bootstrap, urn:pyra:did-web for did:web bootstrap, or token-exchange for Google bootstrap. Legacy /auth/* routes have been removed (410 Gone).","flows":{"clientCredentials":{"tokenUrl":"/token","scopes":{"a2a:message/send":"Submit tasks","a2a:tasks/get":"Query task status","a2a:tasks/cancel":"Cancel tasks"}}},"oauth2MetadataUrl":"/.well-known/oauth-authorization-server"}},"security":[{"oauth2":[]}],"defaultInputModes":["application/json","text/plain"],"defaultOutputModes":["application/json","text/plain","image/png"],"payment":{"requiredForPaidTasks":true,"scope":"requester-principal + one-use backend order","orderPolicy":{"mode":"pay_per_task","backend":"A2A_PAYMENT_BACKEND_URL","identity":"quote_id != order_id; each order_id is one-use","endContext":"closes the A2A context only; it does not settle or release payment","backendCorrelation":"order_id <-> tx_hash/receipt <-> payer_wallet/principal"},"usd":{"scheme":"stripe-mpp","network":"stripe:us","extension":"urn:pyra.io:ext:payment-stripe-mpp:v1","phase":"later","mode":"AUTH_REQUIRED"},"stablecoin":{"scheme":"exact","x402VersionsSupported":[2],"quoteCurrency":"USD","asset":"challenge-selected","network":"challenge-selected","supportedNetworksSource":"A2A_PAYMENT_BACKEND_URL","supportedAssetsSource":"A2A_PAYMENT_BACKEND_URL","extension":"https://github.com/google-a2a/a2a-x402/v0.1","mode":"AUTH_REQUIRED"},"stripeStablecoin":{"provider":"stripe_stablecoin","schemes":["stripe-deposit","stripe-mpp-crypto"],"quoteCurrency":"USD","asset":"challenge-selected","network":"challenge-selected","supportedNetworksSource":"A2A_PAYMENT_BACKEND_URL","supportedAssetsSource":"A2A_PAYMENT_BACKEND_URL","extension":"urn:pyra.io:ext:payment-stripe-stablecoin:v1","mode":"AUTH_REQUIRED"}},"skills":[{"id":"analysis","name":"Data Analysis","description":"Analyze data, trends, strategies, and market conditions","tags":["analysis","data_processing","research"]},{"id":"research","name":"Research","description":"Investigate topics, compile findings, gather information from web and APIs","tags":["research","data_collection"]},{"id":"authoring","name":"Content Authoring","description":"Write articles, reports, creative copy, marketing content, and technical documentation","tags":["authoring","content_generation","documentation"]},{"id":"code_generation","name":"Code Generation","description":"Write and generate code in multiple programming languages","tags":["code_generation","coding"]},{"id":"code_review","name":"Code Review & Debugging","description":"Review code for quality and security, find and fix bugs","tags":["code_review","debugging","testing"]},{"id":"design","name":"Design & Architecture","description":"System design, UI/UX design, technical architecture planning","tags":["design","architecture"]},{"id":"execution","name":"Workflow Execution","description":"Run automated workflows, data processing pipelines, and multi-step tasks","tags":["execution","automation"]},{"id":"chat","name":"Conversational AI","description":"General conversation, Q&A, and interactive dialogue","tags":["chat","conversation"]},{"id":"image_generation","name":"Image Generation","description":"Generate and manipulate images in various styles","tags":["image","generation","creative"],"outputModes":["image/png","image/jpeg"]}],"iconUrl":"https://test.pyra.io/icon.png"}