[{"slug":"ZV-2026-1991","server_name":"mcphost.dev","severity":"breaking","title":"mcphost.dev: kind on host.tool_publish narrowed to a closed enum (chain, echo, http, python, wasm, event, events, webhook, webhooks, inbound, trigger, cron, schedule, scheduled, doc, docs, document, d","summary":"[safe] Field kind on host.quickstart is no longer required. [safe] Description of host.tool_publish changed (16% word delta). [breaking] kind on host.tool_publish narrowed to a closed enum (chain, echo, http, python, wasm, event, events, webhook, webhooks, inbound, trigger, cron, schedule, scheduled, doc, docs, document, documents, message, messages, inbox, msg, database, db, table, tables, csv, sql, schedules, uptime, probe, probes, memory, memories); previously valid values may now be rejected.","changes":[{"kind":"input_required_removed","path":"inputSchema.required.kind","tool":"host.quickstart","detail":"Field `kind` on `host.quickstart` is no longer required.","severity":"safe"},{"kind":"description_changed","tool":"host.tool_publish","after":"Publish a tool of a registered kind (e.g. python, http or echo; the kind argument's enum lists them all) under this tenant's namespace. Call host.quickstart(kind) first for a filled-in example spec and the full publish-to-call sequence. Python's sandbox API: import mcphost (mcphost.table, mcphost.state, mcphost.docs). Name must match ^[a-z][a-z0-9_]{1,40}$; a rejection names the failing field and a corrected example. Try host.tool_test before a real call.","before":"Publish a tool of a registered kind (chain, echo, http, python, wasm) under this tenant's namespace. Call host.quickstart(kind) first for a filled-in example spec and the full publish-to-call sequence. Python's sandbox API: import mcphost (mcphost.table, mcphost.state, mcphost.docs). Name must match ^[a-z][a-z0-9_]{1,40}$; a rejection names the failing field and a corrected example. Try host.tool_test before a real call.","detail":"Description of `host.tool_publish` changed (16% word delta).","severity":"safe","descriptionDelta":0.16129032258064513},{"kind":"enum_narrowed","path":"inputSchema.properties.kind","tool":"host.tool_publish","after":"enum[chain,echo,http,python,wasm,event,events,webhook,webhooks,inbound,trigger,cron,schedule,scheduled,doc,docs,document,documents,message,messages,inbox,msg,database,db,table,tables,csv,sql,schedules,uptime,probe,probes,memory,memories]","before":"open","detail":"`kind` on `host.tool_publish` narrowed to a closed enum (chain, echo, http, python, wasm, event, events, webhook, webhooks, inbound, trigger, cron, schedule, scheduled, doc, docs, document, documents, message, messages, inbox, msg, database, db, table, tables, csv, sql, schedules, uptime, probe, probes, memory, memories); previously valid values may now be rejected.","severity":"breaking"}],"published_at":"2026-10-09T04:05:18.650Z"},{"slug":"ZV-2026-1692","server_name":"mcphost.dev","severity":"breaking","title":"mcphost.dev: Tool billing.checkout was removed.","summary":"[breaking] Tool billing.checkout was removed. [breaking] Tool billing.status was removed. [breaking] Tool host.agent.contact_accept was removed. [breaking] Tool host.agent.contact_deny was removed. [breaking] Tool host.agent.contact_request was removed. [breaking] Tool host.agent.contacts was removed. [breaking] Tool host.agent.contacts_import was removed. [breaking] Tool host.agent.lookup was removed. [breaking] Tool host.agent.mute was removed. [breaking] Tool host.agent.profile_set was removed. [breaking] Tool host.agent.search was removed. [breaking] Tool host.agent.unmute was removed. [breaking] Tool host.agent.whoami was removed. [breaking] Tool host.bridge_test was removed. [breaking] Tool host.catalog.get was removed. [breaking] Tool host.catalog.search was removed. [breaking] Tool host.changelog was removed. [breaking] Tool host.channel.close was removed. [breaking] Tool host.channel.freeze was removed. [breaking] Tool host.channel.open was removed. [breaking] Tool host.channel.post was removed. [breaking] Tool host.channel.read was removed. [breaking] Tool host.channel.unfreeze was removed. [breaking] Tool host.docs.delete was removed. [breaking] Tool host.docs.get was removed. [breaking] Tool host.docs.index_config was removed. [breaking] Tool host.docs.list was removed. [breaking] Tool host.docs.purge was removed. [breaking] Tool host.docs.put was removed. [breaking] Tool host.docs.reindex was removed. [breaking] Tool host.docs.search was removed. [breaking] Tool host.docs.status was removed. [breaking] Tool host.enduser.assertion_secret_rotate was removed. [breaking] Tool host.enduser.audit was removed. [breaking] Tool host.enduser.export was removed. [breaking] Tool host.enduser.get was removed. [breaking] Tool host.enduser.list was removed. [breaking] Tool host.enduser.purge was removed. [breaking] Tool host.enduser.revoke was removed. [breaking] Tool host.enduser.unrevoke was removed. [breaking] Tool host.enduser.whoami was removed. [breaking] Tool h","changes":[{"kind":"tool_removed","tool":"billing.checkout","detail":"Tool `billing.checkout` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"billing.status","detail":"Tool `billing.status` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.agent.contact_accept","detail":"Tool `host.agent.contact_accept` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.agent.contact_deny","detail":"Tool `host.agent.contact_deny` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.agent.contact_request","detail":"Tool `host.agent.contact_request` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.agent.contacts","detail":"Tool `host.agent.contacts` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.agent.contacts_import","detail":"Tool `host.agent.contacts_import` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.agent.lookup","detail":"Tool `host.agent.lookup` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.agent.mute","detail":"Tool `host.agent.mute` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.agent.profile_set","detail":"Tool `host.agent.profile_set` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.agent.search","detail":"Tool `host.agent.search` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.agent.unmute","detail":"Tool `host.agent.unmute` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.agent.whoami","detail":"Tool `host.agent.whoami` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.bridge_test","detail":"Tool `host.bridge_test` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.catalog.get","detail":"Tool `host.catalog.get` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.catalog.search","detail":"Tool `host.catalog.search` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.changelog","detail":"Tool `host.changelog` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.channel.close","detail":"Tool `host.channel.close` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.channel.freeze","detail":"Tool `host.channel.freeze` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.channel.open","detail":"Tool `host.channel.open` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.channel.post","detail":"Tool `host.channel.post` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.channel.read","detail":"Tool `host.channel.read` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.channel.unfreeze","detail":"Tool `host.channel.unfreeze` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.docs.delete","detail":"Tool `host.docs.delete` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.docs.get","detail":"Tool `host.docs.get` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.docs.index_config","detail":"Tool `host.docs.index_config` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.docs.list","detail":"Tool `host.docs.list` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.docs.purge","detail":"Tool `host.docs.purge` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.docs.put","detail":"Tool `host.docs.put` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.docs.reindex","detail":"Tool `host.docs.reindex` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.docs.search","detail":"Tool `host.docs.search` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.docs.status","detail":"Tool `host.docs.status` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.enduser.assertion_secret_rotate","detail":"Tool `host.enduser.assertion_secret_rotate` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.enduser.audit","detail":"Tool `host.enduser.audit` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.enduser.export","detail":"Tool `host.enduser.export` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.enduser.get","detail":"Tool `host.enduser.get` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.enduser.list","detail":"Tool `host.enduser.list` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.enduser.purge","detail":"Tool `host.enduser.purge` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.enduser.revoke","detail":"Tool `host.enduser.revoke` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.enduser.unrevoke","detail":"Tool `host.enduser.unrevoke` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.enduser.whoami","detail":"Tool `host.enduser.whoami` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.export","detail":"Tool `host.export` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.group.add","detail":"Tool `host.group.add` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.group.create","detail":"Tool `host.group.create` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.group.list","detail":"Tool `host.group.list` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.group.remove","detail":"Tool `host.group.remove` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.key_rotate","detail":"Tool `host.key_rotate` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.lineage.blast_radius","detail":"Tool `host.lineage.blast_radius` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.lineage.trace","detail":"Tool `host.lineage.trace` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.lineage.trace_page","detail":"Tool `host.lineage.trace_page` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.msg.ack","detail":"Tool `host.msg.ack` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.msg.block","detail":"Tool `host.msg.block` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.msg.inbox","detail":"Tool `host.msg.inbox` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.msg.reply","detail":"Tool `host.msg.reply` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.msg.send","detail":"Tool `host.msg.send` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.msg.thread","detail":"Tool `host.msg.thread` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.msg.unblock","detail":"Tool `host.msg.unblock` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.msg.wait","detail":"Tool `host.msg.wait` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.oauth.audit","detail":"Tool `host.oauth.audit` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.oauth.audit_export","detail":"Tool `host.oauth.audit_export` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.oauth.client_approve","detail":"Tool `host.oauth.client_approve` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.oauth.client_deny","detail":"Tool `host.oauth.client_deny` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.oauth.doctor","detail":"Tool `host.oauth.doctor` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.oauth.grant_revoke","detail":"Tool `host.oauth.grant_revoke` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.oauth.grants","detail":"Tool `host.oauth.grants` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.oauth.issuer_remove","detail":"Tool `host.oauth.issuer_remove` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.oauth.issuer_set","detail":"Tool `host.oauth.issuer_set` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.oauth.issuers","detail":"Tool `host.oauth.issuers` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.oauth.pending","detail":"Tool `host.oauth.pending` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.oauth.policy","detail":"Tool `host.oauth.policy` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.oauth.policy_set","detail":"Tool `host.oauth.policy_set` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.oauth.provider","detail":"Tool `host.oauth.provider` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.oauth.provider_remove","detail":"Tool `host.oauth.provider_remove` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.oauth.provider_set","detail":"Tool `host.oauth.provider_set` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.oauth.revoke_all","detail":"Tool `host.oauth.revoke_all` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.oauth.scope_set","detail":"Tool `host.oauth.scope_set` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.oauth.scopes","detail":"Tool `host.oauth.scopes` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.oauth.trusted_issuer_remove","detail":"Tool `host.oauth.trusted_issuer_remove` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.oauth.trusted_issuer_set","detail":"Tool `host.oauth.trusted_issuer_set` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.oauth.trusted_issuers","detail":"Tool `host.oauth.trusted_issuers` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.progress","detail":"Tool `host.progress` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.registry_publish","detail":"Tool `host.registry_publish` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.runs.cancel","detail":"Tool `host.runs.cancel` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.runs.get","detail":"Tool `host.runs.get` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.runs.list","detail":"Tool `host.runs.list` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.runs.part","detail":"Tool `host.runs.part` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.runs.purge","detail":"Tool `host.runs.purge` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.runs.wait","detail":"Tool `host.runs.wait` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.secret_list","detail":"Tool `host.secret_list` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.secret_set","detail":"Tool `host.secret_set` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.self_offboard","detail":"Tool `host.self_offboard` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.share.caller_limit","detail":"Tool `host.share.caller_limit` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.share.caller_limit_remove","detail":"Tool `host.share.caller_limit_remove` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.state.delete","detail":"Tool `host.state.delete` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.state.delete_rows","detail":"Tool `host.state.delete_rows` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.state.insert","detail":"Tool `host.state.insert` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.state.query","detail":"Tool `host.state.query` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.state.table_create","detail":"Tool `host.state.table_create` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.state.table_drop","detail":"Tool `host.state.table_drop` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.table.append","detail":"Tool `host.table.append` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.table.chart","detail":"Tool `host.table.chart` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.table.charts","detail":"Tool `host.table.charts` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.table.create","detail":"Tool `host.table.create` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.table.describe","detail":"Tool `host.table.describe` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.table.drop","detail":"Tool `host.table.drop` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.table.list","detail":"Tool `host.table.list` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.table.model_set","detail":"Tool `host.table.model_set` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.table.models","detail":"Tool `host.table.models` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.table.query","detail":"Tool `host.table.query` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.table.schema","detail":"Tool `host.table.schema` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.tool_diff","detail":"Tool `host.tool_diff` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.tool_history","detail":"Tool `host.tool_history` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.tool_list","detail":"Tool `host.tool_list` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.tool_logs","detail":"Tool `host.tool_logs` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.tool_remove","detail":"Tool `host.tool_remove` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.tool_rollback","detail":"Tool `host.tool_rollback` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.tool_run","detail":"Tool `host.tool_run` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.tool_spec_shared","detail":"Tool `host.tool_spec_shared` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.tool_unshare","detail":"Tool `host.tool_unshare` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.trigger.fire","detail":"Tool `host.trigger.fire` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.trigger.get","detail":"Tool `host.trigger.get` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.trigger.list","detail":"Tool `host.trigger.list` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.trigger.pause","detail":"Tool `host.trigger.pause` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.trigger.remove","detail":"Tool `host.trigger.remove` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.trigger.replay","detail":"Tool `host.trigger.replay` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.trigger.resume","detail":"Tool `host.trigger.resume` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.trigger.set","detail":"Tool `host.trigger.set` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.trigger.test","detail":"Tool `host.trigger.test` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.usage","detail":"Tool `host.usage` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.vault.connect_link","detail":"Tool `host.vault.connect_link` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.vault.disconnect","detail":"Tool `host.vault.disconnect` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.vault.provider_remove","detail":"Tool `host.vault.provider_remove` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.vault.provider_set","detail":"Tool `host.vault.provider_set` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.vault.providers","detail":"Tool `host.vault.providers` was removed.","severity":"breaking"},{"kind":"tool_removed","tool":"host.vault.status","detail":"Tool `host.vault.status` was removed.","severity":"breaking"}],"published_at":"2026-10-02T01:45:16.686Z"},{"slug":"ZV-2026-1346","server_name":"mcphost.dev","severity":"breaking","title":"mcphost.dev: Type of verify on host.trigger.set changed object → unset.","summary":"[safe] Description of host.trigger.list changed (16% word delta). [risky] Description of host.trigger.replay changed (53% word delta). [risky] Optional field id was added to host.trigger.replay; may shift model behaviour. [risky] Optional field row_id was added to host.trigger.replay; may shift model behaviour. [safe] Field run_id on host.trigger.replay is no longer required. [safe] Description of host.trigger.set changed (21% word delta). [risky] Optional field name was added to host.trigger.set; may shift model behaviour. [breaking] Type of verify on host.trigger.set changed object → unset. [risky] Description of host.trigger.test changed (26% word delta).","changes":[{"kind":"description_changed","tool":"host.trigger.list","after":"List this tenant's triggers (optionally filtered by tool), each with next_unix, last_run_id and last_status (schedule), url/verify/unverified (event), or url/name/verify with no secret (webhook).","before":"List this tenant's triggers (optionally filtered by tool), each with next_unix, last_run_id and last_status (schedule), or url/verify/unverified (event).","detail":"Description of `host.trigger.list` changed (16% word delta).","severity":"safe","descriptionDelta":0.16000000000000003},{"kind":"description_changed","tool":"host.trigger.replay","after":"Re-run a past event- or message-triggered run's exact stored event/envelope (no re-verification -- the original delivery already passed it). The new run's trigger_ref names the original run id. For a webhook trigger, pass id (the trigger) and row_id (an inbox_<name> row id, e.g. from POST /hook/...'s own response or host.state.query) instead of run_id -- a paused delivery has no run to replay from.","before":"Re-run a past event- or message-triggered run's exact stored event/envelope (no re-verification -- the original delivery already passed it). The new run's trigger_ref names the original run id.","detail":"Description of `host.trigger.replay` changed (53% word delta).","severity":"risky","descriptionDelta":0.5294117647058824},{"kind":"input_property_added","path":"inputSchema.properties.id","tool":"host.trigger.replay","after":{"type":"string","description":"kind=\"webhook\" only: the trigger id (paired with row_id)."},"detail":"Optional field `id` was added to `host.trigger.replay`; may shift model behaviour.","severity":"risky"},{"kind":"input_property_added","path":"inputSchema.properties.row_id","tool":"host.trigger.replay","after":{"type":"integer","description":"kind=\"webhook\" only: the inbox_<name> row id to replay (paired with id)."},"detail":"Optional field `row_id` was added to `host.trigger.replay`; may shift model behaviour.","severity":"risky"},{"kind":"input_required_removed","path":"inputSchema.required.run_id","tool":"host.trigger.replay","detail":"Field `run_id` on `host.trigger.replay` is no longer required.","severity":"safe"},{"kind":"description_changed","tool":"host.trigger.set","after":"Run a published tool on a cron schedule (5-field: minute hour day-of-month month day-of-week, UTC), give it a public webhook URL (kind=\"event\"): a signed POST to that URL runs the tool with the event as its argument, fire it whenever this tenant receives a message (kind=\"message\"): the tool runs with the message envelope as its argument, or give it an inbound-inbox URL (kind=\"webhook\"): a verified POST lands as a row in state table inbox_<name> and fires the tool with that row as its argument -- the response carries {url, secret} once (host.trigger.get afterwards never returns the secret again). Each firing/delivery is a run visible in host.runs.list(trigger=\"schedule\"|\"event\"|\"message\"|\"webhook\"). Refuses schedules_max (trigger_quota_exceeded, shared by schedule and webhook triggers), event_triggers_max (shared by event and message triggers) or a too-short schedule interval (trigger_interval_too_short); an invalid expression or verify config fails trigger_invalid naming the field.","before":"Run a published tool on a cron schedule (5-field: minute hour day-of-month month day-of-week, UTC), give it a public webhook URL (kind=\"event\"): a signed POST to that URL runs the tool with the event as its argument, or fire it whenever this tenant receives a message (kind=\"message\"): the tool runs with the message envelope as its argument. Each firing/delivery is a run visible in host.runs.list(trigger=\"schedule\"|\"event\"|\"message\"). Refuses schedules_max/event_triggers_max (trigger_quota_exceeded, shared by event and message triggers) or a too-short schedule interval (trigger_interval_too_short); an invalid expression or verify config fails trigger_invalid naming the field.","detail":"Description of `host.trigger.set` changed (21% word delta).","severity":"safe","descriptionDelta":0.2134831460674157},{"kind":"input_property_added","path":"inputSchema.properties.name","tool":"host.trigger.set","after":{"type":"string","description":"kind=\"webhook\": letters/digits/underscore -- becomes the inbox_<name> state table each accepted delivery is stored in."},"detail":"Optional field `name` was added to `host.trigger.set`; may shift model behaviour.","severity":"risky"},{"kind":"input_type_changed","path":"inputSchema.properties.verify","tool":"host.trigger.set","after":"unset","before":"object","detail":"Type of `verify` on `host.trigger.set` changed object → unset.","severity":"breaking"},{"kind":"description_changed","tool":"host.trigger.test","after":"Dry-run an event trigger's verify config against a payload you supply, without exposing its real URL -- verifies the signature exactly as POST /hooks/... would, then runs the tool with the event as its argument. On a message trigger, runs the tool with a synthetic envelope (test: true, no messages row created). On a webhook trigger, builds and self-signs a synthetic body exactly like a real sender would, then stores and fires it through the same path POST /hook/... uses (one inbox row, one run). The run is marked test: true. A wrong signature fails signature_invalid, naming the header it checked.","before":"Dry-run an event trigger's verify config against a payload you supply, without exposing its real URL -- verifies the signature exactly as POST /hooks/... would, then runs the tool with the event as its argument. Or, on a message trigger, runs the tool with a synthetic envelope (test: true, no messages row created). The run is marked test: true. A wrong signature fails signature_invalid, naming the header it checked.","detail":"Description of `host.trigger.test` changed (26% word delta).","severity":"risky","descriptionDelta":0.2647058823529411}],"published_at":"2026-09-23T07:23:13.970Z"}]