You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The SDK does things no generic gateway SDK does, because it understands this
gateway's governance model — and it integrates with, never duplicates, what the
platform has already shipped.
Scope
Refusal handlers, classification registry, HITL normalisation, thin identity
helpers, in-repo scanner + GitHub Action, kill-switch awareness, MCP tool
discovery, a second adapter by demand, and A2A serve/expose/dev.
Exit criteria
At least one framework's official docs link to the SDK.
Evidence of production use — a customer or internal team running it with
OTel attached.
Refusal handlers, registry, HITL and scanner all pass conformance against
the simulator.
Standing constraint
Several features here are blocked on verification, and several deliberately
complement shipped platform capabilities rather than competing with them. Both
constraints are load-bearing, not caveats.
tools: a typed refusal for a tool outside the consumer's MCP access profile #312, typed refusal for a tool outside the MCP access profile. The wire shape is live-verified (verified-apis.md §9) and the design is posted on the issue. What remains is the implementation and the per-framework probes for whole-server bindings.
Next: land #312, cut the 0.2.0 release tag (which unblocks #219), and decide whether #214 ships in 0.2.0 or moves to 0.2.1 if #255 doesn't verify in time.
Activity
tommasobolis commentedon Oct 12, 2026
Related: #1102 — new GA-gated Phase 2 epic: publish agents and MCP servers through the Anypoint self-managed scanner.
tommasobolis commentedon Oct 29, 2026
Status update — 2026-10-29
Phase 2 (0.2.0): 75 closed, 3 open (plus this epic). The latest pre-release on
developis0.2.0.dev6.Shipped since the last update
authorization_pendingis typed instead ofAuthError(classify: type the OBO policy's CIBA authorization_pending instead of AuthError #1320).approval=works on a discoveredToolSet(hitl: approval= on a discovered ToolSet, not just @donkey.tool #1153).donkey.as_user()(identity: donkey.as_user() — RFC 8693 token exchange and header placement #215). A missing or expired user token fails typed (identity: a missing or expired user token fails typed, never falls back to service identity #216).donkey.tools.discover()(tools: donkey.tools.discover() returns governed MCP tools as native framework tools #221), filtering and descriptor token accounting (tools: allow/deny filtering and descriptor token accounting #222, tools: ToolSet.filter() — allow/deny/predicate filtering and descriptor token accounting #42, tools: log descriptor cost on bind and warn above a threshold #1257), live-verified against a Mule-hosted MCP server (tools: verify discover() and binding against a Mule-hosted MCP server #1312).donkey scan(scanner: donkey scan derives a deterministic scan model of agents, tools and MCP servers #217) anddonkey publishto Exchange / Agent Registry (scanner: donkey publish publishes agent assets to Exchange #1260, scanner: donkey publish registers the manifest with Exchange / Agent Registry #218).donkey.serve()(a2a: donkey.serve() — an A2A listener in one line, wrapping the official a2a-sdk #224), governance-aware inbound (a2a: governance-aware inbound — correlation, tags, spans and typed refusals on served tasks #225),donkey dev(a2a: donkey dev — a gateway in front of the laptop, real or simulated #227, a2a: donkey dev Option B — simulated A2A ingress in front of donkey.serve() #1284) anddonkey expose(a2a: donkey expose — the gateway instance, policies and registry entry for an A2A agent or MCP server #226).Still open in this milestone
verified-apis.md§9) and the design is posted on the issue. What remains is the implementation and the per-framework probes for whole-server bindings.@develop. The GitLab and Bitbucket variants (Publish from GitLab CI with a CI/CD component #1264, Publish from Bitbucket Pipelines with a Pipe #1265) are in Phase 2.1.The self-managed scanner epic (#1102) moved to Phase 2.1 while #1101 (GA) is open.
Exit criteria
Next: land #312, cut the 0.2.0 release tag (which unblocks #219), and decide whether #214 ships in 0.2.0 or moves to 0.2.1 if #255 doesn't verify in time.
tommasobolis commentedon Oct 29, 2026
Related: #1414 — the 0.2.0 pre-release code review epic; its must-fix children gate closing this Phase 2 epic.
tommasobolis commentedon Oct 30, 2026
Phase 2 shipped as donkey-kit 0.2.0, now on PyPI (promotion #1522). Every child issue is closed.