{"ok":true,"protocol":"a2a-jsonrpc","protocolVersion":"1.0.0","server":{"name":"lvlltd-skill-market-a2a","role":"marketplace agent endpoint","skills":["a2a-server","a2a-multi-turn","a2a-mcp-bridge","a2a-ap2-a2a-extension","a2a-task-lifecycle","a2a-dev-patterns","a2a-jsonrpc-transport","a2a-messages-parts"]},"agent_card":"https://lvlltd.com/.well-known/agent-card.json","agent_card_alias":"https://lvlltd.com/.well-known/agent.json","jwks":"https://lvlltd.com/.well-known/jwks.json","signed":true,"shop":"https://lvlltd.com/api/shop","proof":"https://lvlltd.com/api/proof","mcp":"https://lvlltd.com/api/mcp","client_sdk":"https://lvlltd.com/sdk/a2a-client.mjs","bridge_sdk":"https://lvlltd.com/sdk/a2a-mcp-bridge.mjs","multi_turn":{"enabled":true,"max_turns":8,"ttl_sec":1800,"states":["submitted","working","input-required","auth-required","completed","failed","canceled","rejected"],"continue_with":["message.taskId","message.contextId"]},"task_lifecycle":{"skill":"a2a-task-lifecycle","states":["submitted","working","input-required","auth-required","completed","failed","canceled","rejected","unknown"],"terminal":["completed","failed","canceled","rejected"],"interrupted":["input-required","auth-required"],"transitions":{"unknown":["submitted","working","rejected","canceled","failed"],"submitted":["working","rejected","canceled","input-required","completed","failed"],"working":["completed","failed","canceled","input-required","auth-required","working"],"input-required":["working","canceled","failed","rejected"],"auth-required":["working","canceled","failed","rejected"],"completed":[],"failed":[],"canceled":["canceled"],"rejected":[]},"rules":["Server-generated taskId on create","submitted → working before agent logic","input-required / auth-required are interrupted (client continues)","Terminal states reject further message/send","statusHistory records each transition"]},"mcp_bridge":{"enabled":true,"a2a_wraps_mcp":true,"mcp_wraps_a2a_tools":["a2a_discover","a2a_message_send","a2a_tasks_get","a2a_tasks_cancel","a2a_bridge_info"],"docs":"https://lvlltd.com — see docs/a2a/A2A-MCP-BRIDGE.md in repo"},"task_store":{"backends":["KV (env.KV|AGENTS_KV|LVL_KV)","in-memory fallback"],"key_prefix":"a2a:task:","ttl_sec":1800},"methods":["message/send","tasks/send","tasks/get","tasks/cancel","tasks/list","agent/getAuthenticatedExtendedCard"],"streaming":false,"push_notifications":false,"dev_patterns":{"skill":"a2a-dev-patterns","version":"1.0.0","topology":{"pattern":"hub-and-spoke","hub":{"name":"LVL Skill Market Agent","a2a":"https://lvlltd.com/api/a2a","card":"https://lvlltd.com/.well-known/agent-card.json"},"spokes":[{"role":"tools","protocol":"mcp","url":"https://lvlltd.com/api/mcp","note":"Catalog, quote, install helpers — not money"},{"role":"settlement","protocol":"x402","url":"https://lvlltd.com/api/pay","note":"Base USDC only path that settles value"},{"role":"proof","protocol":"http","url":"https://lvlltd.com/api/proof","note":"Confirmed GMV only — never invent"},{"role":"mandates","protocol":"ap2","url":"https://lvlltd.com/api/mandates","note":"Optional spend authorization"}],"alternatives":{"pipeline":"discover → search → quote → pay → verify → install","hierarchical":"buyer agent → market hub → MCP tools / x402","mesh":"not used — single merchant hub; peers use Agent Card discovery"},"why_hub":"Clear routing, audit, single Agent Card, proof ledger"},"patterns":{"orchestration":{"primary":"hub-and-spoke","secondary":["pipeline-commerce","multi-turn-clarification"]},"idempotency":{"enabled":true,"keys":["message.messageId","X-Request-Id"],"ttl_sec":300,"note":"Duplicate message/send with same messageId returns cached task"},"observability":{"request_id_header":"X-Request-Id","fields":["requestId","taskId","method","state","durationMs","turns"],"client":"echo X-Request-Id; read metadata.requestId on Task"},"versioning":{"protocolVersion":"1.0.0","agent_card":"public/.well-known/agent-card.json","a2a_version_header":"A2A-Version: 1.0"},"security":{"discovery":"public (security: [])","commerce":"x402 X-PAYMENT + optional AP2 X-AP2-MANDATE","zero_trust_note":"Never settle money in A2A body"},"production":{"health":"https://lvlltd.com/api/health","rate_limit":{"window_sec":60,"max_requests":120},"task_ttl_sec":1800,"max_turns":8},"error_recovery":{"retry":"transient 5xx / network with exponential backoff","terminal":"do not retry completed|failed|canceled|rejected","input_required":"continue with same taskId, not a new task","fallback":"MCP tools for catalog if A2A multi-turn not needed"}}},"jsonrpc_transport":{"skill":"a2a-jsonrpc-transport","jsonrpc":"2.0","http":{"method":"POST","content_type":"application/json","response_content_type":"application/json","streaming_content_type":"text/event-stream","status_policy":"Prefer HTTP 200 with JSON-RPC error body; 400 only for parse error; 429 rate limit"},"endpoint":"https://lvlltd.com/api/a2a","methods":["message/send","message/stream","tasks/send","tasks/get","tasks/cancel","tasks/list","tasks/resubscribe","agent/getAuthenticatedExtendedCard","agent/authenticatedExtendedCard","agent/getExtendedAgentCard"],"batch":true,"notifications":true,"headers":{"request":["Content-Type: application/json","A2A-Version: 1.0","X-Request-Id"],"response":["Content-Type: application/json","X-Request-Id","X-RateLimit-Remaining"]},"error_codes":{"PARSE":-32700,"INVALID_REQUEST":-32600,"METHOD_NOT_FOUND":-32601,"INVALID_PARAMS":-32602,"INTERNAL":-32603,"TASK_NOT_FOUND":-32001,"TASK_NOT_CANCELABLE":-32002,"UNSUPPORTED":-32004,"RATE_LIMIT":-32005,"VERSION_NOT_SUPPORTED":-32006}},"messages_parts":{"skill":"a2a-messages-parts","part_kinds":["text","file","data"],"defaultInputModes":["text/plain","application/json"],"defaultOutputModes":["application/json","text/plain"],"file_uri_hints":["https://lvlltd.com/skills/<id>/outline.json","https://lvlltd.com/catalog.json"],"rules":["Use TextPart for natural language","Use DataPart for structured JSON (mandates, skill_id, input_response)","Use FilePart uri for large/referenced files (prefer uri over bytes)","Do not JSON-serialize structured payloads into TextPart","acceptedOutputModes negotiates agent response part shapes"]},"health":"https://lvlltd.com/api/health","note":"Payments via x402 HTTP on /api/pay — not inside A2A JSON-RPC. Multi-turn uses input-required. MCP bridge is bidirectional. Patterns: hub-and-spoke + pipeline commerce.","distinct_from":"https://lvlltd.com/agent.json is site discovery (non-A2A schema), not the Agent Card"}