Python and TypeScript: what differs¶
The two SDKs are not the same size, and the gap is not obvious from either package. This page says what is missing on the TypeScript side so that a team can choose with the facts in front of them rather than discover them halfway through an integration.
Python is the reference implementation. Governance features land there first.
Not available in TypeScript¶
| Feature | Python | TypeScript | What it means for you |
|---|---|---|---|
Gateway guard — guard_tool_call, decide_policy, GuardResult |
✅ | ❌ | An in-process policy gate for tool calls. In TypeScript, govern through the MCP Gateway proxy instead. |
from_task |
✅ | ❌ | Building a Decision Request from a held MCP task, rather than from an escalation. |
LegibleComposer |
✅ | ❌ | TypeScript has the composer seam and the identity composer, but not the document-aware one. |
console_auth / console_jwks |
✅ | ❌ | Verifying a call came from the Coalex Console. Only needed if you build your own approval surface. |
genai_semconv |
✅ | ❌ | Helpers for the OpenTelemetry GenAI semantic conventions. |
resolver on evaluate() |
✅ | ❌ | Who may resolve the escalation — self, or role:<name>. Without it the platform default applies. |
ttl_business_hours on evaluate() |
✅ | ❌ | How long an approval may wait before expiring. Without it the platform default applies. |
The last two are the ones that bite quietly: an escalation created from TypeScript takes the platform's default resolver and TTL, and nothing in your code says so. Passing them from plain JavaScript warns at runtime rather than being silently dropped (COA-2192); from TypeScript they are a compile error, which is the earlier and better failure.
The same in both¶
Tracing and auto-instrumentation, declare_agent / declareAgent, get_prompt / getPrompt,
evaluate / resolve, the Decision Request model and its §6 de-biasing filter, the extension
spans, and the safe exporter's behaviour under failure.
Versions¶
The two version numbers move independently and do not indicate parity: Python 1.26.x and TypeScript 1.16.x are contemporaries, not a two-release gap.