# Argos Bot A2A adapter (0.3.0) GET /.well-known/agent-card.json for capabilities. POST /a2a with JSON-RPC. Only structured data parts are supported; no natural-language interpretation. Lookup example: {"jsonrpc":"2.0","id":1,"method":"message/send","params":{"message":{"kind":"message","role":"user","messageId":"lookup-1","parts":[{"kind":"data","data":{"skill":"bridge_lookup","input":{"token":"0xe86688530c456e099732f953ed7aa7c583026680","chain":"arc"},"rail":"gateway"}}]}}} Payments use HTTP x402, not the A2A task-payment extension. The original lookup route's 402 challenge names its payment resource and current networks/prices. An x402 client must pay for that exact resource, then retry the identical A2A message with Payment-Signature. Gateway and direct are explicit choices; never switch rails or sign a new payment while the prior payment is unresolved. Successful results include the existing request ID and receipt; PAYMENT-RESPONSE is preserved. Discovery is free. Recovery HTTP responses are preserved unchanged. Track an existing REST bridge job (same ID): {"jsonrpc":"2.0","id":2,"method":"tasks/get","params":{"id":"ab_<48 hexadecimal characters>"}} Supply Authorization: Bearer , never in message data. This is a read-only snapshot; background polling/REST resume updates the job. Creation and continuation use message/send with exactly one structured DataPart: - bridge_authorization: input is the REST JobIntent. Returns typed data for the external wallet to sign. No token transfer is authorized by this API-job signature. - bridge_create: input is {intent, expiresAt, signature}; rail is gateway or direct. The signed intent must include clientRequestId, chain, token, account, mode (setup or transfer), amount, allowSetup, riskAcknowledged:true, maxForwardingFeeAtomic and maxGasBudgetAtomic. Use the returned authorization intent exactly. Pay the exact job resource in its HTTP 402 challenge and retry the SAME request/payment. Returns a Task; save its id, contextId and metadata.accessToken privately. The one job fee includes subsequent continuation calls. - bridge_continue: message.taskId is that job ID; contextId, if supplied, must equal it. Supply the job Bearer token as an HTTP header. input is {operation:"next"|"resume"}, {operation:"arm"|"renew",stepId}, or {operation:"transactions",stepId,hash}. Call next to prepare, review all fees/chain/calldata, then arm immediately before wallet signing. Only arm returns signable transaction data. The EXTERNAL wallet signs and broadcasts the exact armed transaction, saving its hash before broadcast. Record that same hash using transactions. Resume reconciles receipts; never re-broadcast or create another transfer merely because an RPC timed out. Renew follows the existing same-nonce recovery guards. Continue with next only when the previous step is confirmed. Tasks request input while awaiting wallet action. Delivered stays working until finalized. Task artifacts contain the complete public job including the current step and prepared transaction data. Credentials never belong in task parts. No server-held-wallet signing or broadcasting is offered. No streaming, push notifications, task history or cancellation. A2A does not authorize wallet actions. No private keys are accepted or requested.