Skip to content

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 guardguard_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.