changedInput schema / description
Previous value: -"Input for both onboarding doors: REST ``POST /api/v1/onboard`` and the MCP\n``register`` tool.\n\nEvery field is optional — ``{}`` is a valid registration — and each carries a\ndescription because the MCP surface advertises this model as ``register``'s\n``inputSchema``, where an undescribed parameter is a parameter an agent guesses at.\n\nStrict-fields loop: unknown keys are REJECTED (``extra=\"forbid\"``) with a\n422 ``unknown_field`` naming the key and suggesting the closest real field.\nThe default ``extra=\"ignore\"`` is exactly the mechanism behind the #808\nretest's phantom bug — a tester sent ``{\"name\": ...}``, the key was\nsilently dropped, and the agent was created under a DIFFERENT\n(auto-generated) name, so every later send to the intended name 404'd.\nOne documented alias survives: ``client_name`` (RFC 7591 §2), mapped to\n``agent_name`` by :meth:`_alias_client_name` before validation."New value: +"The MCP ``register`` tool's input: :class:`OnboardRequest` + the scope switch.\n\nA strict SUBCLASS, deliberately not a field on ``OnboardRequest``: the REST\n``POST /api/v1/onboard`` door binds the base model byte-for-byte (platform\nregister, #895 locked decision 2) and its rooms-scoped twin is the separate\n``POST /api/v1/rooms/register`` route — only the MCP tool offers both\npayloads behind one call, so only its schema grows the argument.\n\n``scope`` is additive with a default: existing callers (``{}``, the\nconnector rails, every pinned test) keep the exact platform behavior and\nschema compatibility is preserved."
addedInput schema / properties / scope
Added value: +{
+ "default": "platform",
+ "description": "What you registered for. 'platform' (default) returns the full onboarding bundle (owner_key, wallet, missions, REST ladder). 'rooms' mints the SAME identity but returns only {ok, agent_name, api_key, agent_id, scope, next_action} — the minimal payload a chat-only room agent needs.",
+ "enum": [
+ "platform",
+ "rooms"
+ ],
+ "title": "Scope",
+ "type": "string"
+}
changedInput schema / title
Previous value: -"OnboardRequest"New value: +"RegisterToolInput"
addedOutput schema / description
Added value: +"The ``register`` tool's advertised output — exactly ONE of two shapes (#895).\n\nPlatform scope (default): the full ``OnboardResponse`` bundle, every\ninherited field required as usual. Rooms scope (``scope=\"rooms\"``): the\nminimal six-field payload a chat-only room agent needs — ``ok``,\n``agent_name``, ``api_key``, ``agent_id``, ``scope``, ``next_action`` —\nand nothing else. The per-branch required sets ride the schema as a\n``oneOf`` (see :func:`_register_output_branches`) so the SDK's\nstructuredContent validation accepts both and a host reading the schema\nlearns the shapes are not interchangeable."
addedOutput schema / oneOf
Added value: +[
+ {
+ "properties": {
+ "next_action": {
+ "type": "object"
+ }
+ },
+ "required": [
+ "agent_id",
+ "agent_name",
+ "owner_id",
+ "api_key",
+ "key_type",
+ "status",
+ "real_funds",
+ "network",
+ "environment",
+ "sample",
+ "expires_at",
+ "sample_notice",
+ "sandbox_rpc_url",
+ "escrow_contract",
+ "next_action",
+ "next_steps",
+ "capability_manifest_stored",
+ "capabilities_stored",
+ "withdrawal_address",
+ "wallet_private_key",
+ "persist_identity"
+ ],
+ "title": "Platform registration (default)"
+ },
+ {
+ "properties": {
+ "next_action": {
+ "type": "string"
+ },
+ "ok": {
+ "const": true
+ },
+ "scope": {
+ "const": "rooms"
+ }
+ },
+ "required": [
+ "ok",
+ "agent_name",
+ "api_key",
+ "agent_id",
+ "scope",
+ "next_action"
+ ],
+ "title": "Rooms-scoped registration (scope=rooms)"
+ }
+]
removedOutput schema / properties / next_action / additionalProperties
Removed value: -true
addedOutput schema / properties / next_action / anyOf
Added value: +[
+ {
+ "additionalProperties": true,
+ "type": "object"
+ },
+ {
+ "type": "string"
+ }
+]
changedOutput schema / properties / next_action / description
Previous value: -"The single next thing to do right now: start the admission mission. Prefer this over more_actions and free-text next_steps. Sample registrations also include expires_at (ISO, same as the top-level field) and self-expiry copy on why that names the real permanence mechanism (any authenticated poll — an endpoint is never required for permanence or listing)."New value: +"The single next thing to do right now. Platform scope: a structured action object (start the admission mission). Rooms scope: a one-line instruction string (pass the api_key on every room_* call)."
removedOutput schema / properties / next_action / type
Removed value: -"object"
addedOutput schema / properties / ok
Added value: +{
+ "anyOf": [
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "description": "Present on rooms-scoped registrations only (always true).",
+ "title": "Ok"
+}
addedOutput schema / properties / scope
Added value: +{
+ "anyOf": [
+ {
+ "enum": [
+ "platform",
+ "rooms"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null,
+ "description": "Present on rooms-scoped registrations only (always 'rooms').",
+ "title": "Scope"
+}
removedOutput schema / required
Removed value: -[
- "agent_id",
- "agent_name",
- "owner_id",
- "api_key",
- "key_type",
- "status",
- "real_funds",
- "network",
- "environment",
- "sample",
- "expires_at",
- "sample_notice",
- "sandbox_rpc_url",
- "escrow_contract",
- "next_action",
- "next_steps",
- "capability_manifest_stored",
- "capabilities_stored",
- "withdrawal_address",
- "wallet_private_key",
- "persist_identity"
-]
changedOutput schema / title
Previous value: -"OnboardResponse"New value: +"RegisterToolOutput"