From c0f9221d303f1f7cae9eeeae08d01fe7c1953744 Mon Sep 17 00:00:00 2001 From: Rohit Ghumare Date: Mon, 27 Apr 2026 10:50:44 +0100 Subject: [PATCH] docs(mcp,a2a): document phase 0/2a feature surfaces in READMEs a2a: add agent-identity flags (--agent-name, --agent-description, --provider-org, --provider-url, --docs-url) shipped in phase 0 to the CLI flags table. mcp: document the MCP 2025-06-18 methods landed in phase 2a: pagination, completion/complete, logging/setLevel + notifications/message, resources/subscribe/unsubscribe + notifications/resources/updated, resources/templates/list, tool annotations + outputSchema, progress + cancellation. Note Phase 2b/2c (sampling/elicitation, Streamable HTTP SSE) still outstanding. --- a2a/README.md | 24 +++++++++++++++++------- mcp/README.md | 28 ++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 7 deletions(-) diff --git a/a2a/README.md b/a2a/README.md index 393b18b3e..1f2fbf863 100644 --- a/a2a/README.md +++ b/a2a/README.md @@ -42,15 +42,25 @@ For the use case the old `engine::*` hard floor hid, use the `introspect` worker ### CLI flags ```text ---engine-url WebSocket URL of the iii engine (default ws://localhost:49134) ---base-url Public origin advertised in the agent card. The card is served - at /a2a. Default: http://localhost:3111 ---rbac-tag Forward an `x-iii-rbac-tag` header on the worker WebSocket - upgrade. iii-worker-manager's `auth_function_id` reads - this tag to apply policy. ---debug Verbose logging +--engine-url WebSocket URL of the iii engine (default ws://localhost:49134) +--base-url Public origin advertised in the agent card. The card is served + at /a2a. Default: http://localhost:3111 +--agent-name Agent card `name` (default: iii-engine) +--agent-description Agent card `description` +--provider-org AgentProvider.organization (default: iii) +--provider-url AgentProvider.url (default: https://github.com/iii-hq/iii) +--docs-url AgentCard.documentationUrl + (default: https://github.com/iii-hq/workers/tree/main/a2a) +--rbac-tag Forward an `x-iii-rbac-tag` header on the worker WebSocket + upgrade. iii-worker-manager's `auth_function_id` reads + this tag to apply policy. +--debug Verbose logging ``` +Empty `--provider-org` or `--provider-url` omits the `provider` object +from the card (A2A v0.3 requires both fields when the object is present). +Empty `--docs-url` omits `documentationUrl`. + ## Local testing A2A has no standard client inspector like MCP does. Use curl. Full smoke diff --git a/mcp/README.md b/mcp/README.md index d085dd081..aecaf0f20 100644 --- a/mcp/README.md +++ b/mcp/README.md @@ -225,3 +225,31 @@ your `auth_function_id` can scope policy on it. Result is wrapped as `{ content: [{ type: "text", text: ... }] }` per MCP spec. Errors surface as `isError: true`. + +## MCP 2025-06-18 spec coverage + +Beyond the core `tools/list` + `tools/call` path, this worker speaks: + +- **Pagination** on `tools/list`, `resources/list`, `prompts/list` — + opaque `cursor` round-trip per spec. +- **`completion/complete`** — argument autocomplete for prompt args + (e.g. language enum on `register-function`). +- **`logging/setLevel`** + **`notifications/message`** — per-session + level bridged into `tracing`. +- **`resources/subscribe`** + **`resources/unsubscribe`** + + **`notifications/resources/updated`** — change notifications when + `iii.list_functions()` / `list_workers()` / `list_triggers()` shift + for a subscribed URI. +- **`resources/templates/list`** — templates for `iii://functions/{id}`, + `iii://workers/{id}`, `iii://triggers/{id}`. +- **Tool annotations + outputSchema + structured content** — tools + surface `title`, `annotations` (`readOnlyHint`, `destructiveHint`, + `idempotentHint`, `openWorldHint`), and `outputSchema` from + `FunctionInfo.metadata.mcp.*`. +- **Progress + cancellation** — `_meta.progressToken` on `tools/call` + emits `notifications/progress`; `notifications/cancelled` flips a + per-request cancel channel and short-circuits the in-flight trigger. + +Server-to-client requests (`sampling/createMessage`, +`elicitation/create`) and Streamable HTTP SSE remain on the Phase 2b/2c +roadmap.