{"protocolVersion":"0.2.0","name":"Sunholo AI Protocol Platform","description":"Open-source AI protocol platform — Skills + AG-UI + A2UI + MCP Apps + A2A on Google ADK.","iconUrl":"https://gde-ap-agent-blqtqfexwa-ew.a.run.app/images/logo/ailang-parse-logo.svg","url":"https://gde-ap-agent-blqtqfexwa-ew.a.run.app/a2a","version":"6.0.0","capabilities":{"streaming":true,"pushNotifications":false,"stateTransitionHistory":false,"extensions":[{"uri":"https://github.com/agentic-protocols/a2ui/blob/main/spec/v0.9.md","description":"A2UI v0.9 declarative UI surfaces","required":false},{"uri":"https://github.com/agentic-protocols/a2ui/blob/main/spec/basic-catalog-v0.9.md","description":"A2UI BasicCatalog component set","required":false},{"uri":"https://github.com/agentic-protocols/a2ui/blob/main/spec/inline-pattern.md","description":"A2UI inline-rendered surfaces (in-chat)","required":false},{"uri":"https://github.com/agentic-protocols/a2ui/blob/main/spec/decoupled-pattern.md","description":"A2UI decoupled surfaces (separate pane)","required":false},{"uri":"https://a2aproject.github.io/A2A/v0.2","description":"A2A protocol v0.2 (this card complies with this version)","required":false},{"uri":"https://modelcontextprotocol.io/specification/draft/server/apps","description":"MCP Apps v1 sandboxed iframe artefacts","required":false},{"uri":"https://google.github.io/adk-docs/agents/workflow-agents/","description":"ADK workflow agents (SequentialAgent / ParallelAgent / LoopAgent)","required":false}]},"defaultInputModes":["text","application/pdf","application/vnd.openxmlformats-officedocument.wordprocessingml.document","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","application/vnd.openxmlformats-officedocument.presentationml.presentation","application/vnd.oasis.opendocument.text","application/vnd.oasis.opendocument.spreadsheet","application/vnd.oasis.opendocument.presentation","message/rfc822","text/csv","text/plain"],"defaultOutputModes":["text"],"skills":[{"id":"b0c617bb-d0f3-45e4-acfd-eaa1237c4c12","name":"ap-validator","description":"Grounded validation specialist for Accounts Payable. Checks extracted invoice fields against the vendor master, open purchase orders, and the tax/approval policy indexed in Vertex AI Search. Detects duplicates, PO mismatches, out-of-policy line items, and incorrect tax. Use after extraction, before any posting decision.","tags":[],"inputModes":["text"],"outputModes":["text"]},{"id":"a0744d16-3ece-4212-8d7c-ccea20964674","name":"invoice-extractor","description":"Invoice field-extraction specialist for Accounts Payable. Reads the already-parsed content of an invoice document and returns clean, typed business fields (vendor, line items, totals, GL codes). Operates on a second layer above the AILANG Parse / DocParse step that runs at ingest time — does NOT re-parse the document.","tags":[],"inputModes":["text"],"outputModes":["text"]},{"id":"83e7485f-2ee1-4826-92ed-8c6c56c9fdc0","name":"ap-orchestrator","description":"Conversational front door for the Accounts-Payable workflow. Chats with the user about invoices and AP policy, then transfers to the deterministic `ap-pipeline` SequentialAgent when an invoice needs processing. Never reproduces extracted invoice fields itself — the pipeline owns that.","tags":[],"inputModes":["text"],"outputModes":["text"]},{"id":"57c19d1b-3a0c-4cf2-9d07-81c2741d6038","name":"ap-poster","description":"Action specialist for Accounts Payable. Takes a validated invoice and either posts it to the ERP ledger or routes it to a human approval queue, then emits the final Invoice Review Card to the workspace pane. Final stage of the `ap-pipeline` SequentialAgent.","tags":[],"inputModes":["text"],"outputModes":["text"]},{"id":"15d29329-4d6a-4196-82da-e7ed209b23b1","name":"ap-pipeline","description":"Deterministic Accounts-Payable processing pipeline. Walks Extract → Validate → Post in sequence via ADK's SequentialAgent. No LLM at the workflow level — the order is code, not prose. Use as a sub-skill of ap-orchestrator; not intended for direct user invocation.","tags":[],"inputModes":["text"],"outputModes":["text"]}]}