Skip to main content
Glama

Server Details

Hosted MCP runtime where your agent publishes its own tools by tool call and keeps working.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 41 days
Last Tested
Transport
Streamable HTTP ยท MCP 2025-11-25
URL
Repository
j0yen/mcphost
GitHub Stars
0
Server Listing
mcphost

TDQS

A3.7/5.0

Scored across 12 tools

Disambiguation4/5

Most tools target distinct resources (state.get/list/set, tool_publish/share/test/call), and the descriptions clarify the key boundaries. The closest pair, host.tool_call vs host.tool_test, is explicitly differentiated (metered real call vs dry-run). Minor overlap remains between signup and host.redeem and between host.quickstart and host.tool_publish, but each is distinguishable.

Naming Consistency3/5

The host.* family follows a consistent dotted namespace plus verb_noun pattern (host.state.get, host.tool_publish). However, top-level tools break the pattern: signup is a bare verb with no namespace while billing.plans uses a dotted resource-style name, and there is no host.* prefix on either. Readable overall but conventions are mixed.

Tool Count5/5

Twelve tools is well within the ideal range and each maps to a distinct capability (identity, billing, state, publishing, sharing, testing, invoking, onboarding). No filler or redundant entries are apparent.

Completeness3/5

State supports get/list/set but has no delete, and there is no tool to list, unpublish, or delete published tools, nor a tool_history surface. Several tools reference companion operations (host.runs.get/wait, host.tool_history) that are not themselves exposed, creating dead ends for async runs and version pinning.

Available Tools

16 tools
billing.plansInspect

The plan catalog (price and quotas per plan) and whether Stripe billing is configured on this host. Anonymous callers get the same answer as tenants.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_keyNoThe key `signup` returned. Optional on the connection that ran signup (or host.redeem): that connection is already bound to the tenant it created, so later calls on it need no tenant_key. On a connection with no Authorization: Bearer header and no prior signup, omitting it implicitly signs that connection up as a brand-new tenant and runs this call as it -- see host.whoami's source field. When both a header and this argument are present, the header wins.

Output Schema

ParametersJSON Schema
NameRequiredDescription
plansYes
billing_modeYes
host.feedback.listAInspect

List your own feedback (newest first, status received). Anonymous callers get [].

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows, up to 100; default 20.
tenant_keyNoThe key `signup` returned. Optional on the connection that ran signup (or host.redeem): that connection is already bound to the tenant it created, so later calls on it need no tenant_key. On a connection with no Authorization: Bearer header and no prior signup, omitting it implicitly signs that connection up as a brand-new tenant and runs this call as it -- see host.whoami's source field. When both a header and this argument are present, the header wins.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
countYes
feedbackYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose ordering (newest first), an implicit status filter (received), and the anonymous-caller result ([]), which is real behavioral value. It omits auth/permission requirements and rate limits, so a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence, front-loaded with the verb and resource and parenthesized with ordering/filter qualifiers. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return format need not be explained. The description covers scope, ordering, filter, and the anonymous edge case, leaving only minor details like pagination semantics to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both optional parameters including the tenant_key fallback behavior. The description adds no parameter detail, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (your own feedback), plus scoping ('your own') that implicitly separates it from host.feedback.send. It does not explicitly name a sibling alternative, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Anonymous callers get []' clause gives a when-not condition, which is useful. However, there is no explicit when-to-use framing or named alternative (e.g., host.feedback.send), so usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.feedback.sendAInspect

Tell the host's humans what you needed: kind, up to 2048 bytes of text, optional context. Works before signup. Returns feedback_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYesWhat you are telling the host.
textYesWhat you needed or saw; 1 to 2048 bytes after trim.
contextNoOptional, at most 1 KB: tool, error_code, free.
tenant_keyNoThe key `signup` returned. Optional on the connection that ran signup (or host.redeem): that connection is already bound to the tenant it created, so later calls on it need no tenant_key. On a connection with no Authorization: Bearer header and no prior signup, omitting it implicitly signs that connection up as a brand-new tenant and runs this call as it -- see host.whoami's source field. When both a header and this argument are present, the header wins.

Output Schema

ParametersJSON Schema
NameRequiredDescription
kindYes
feedback_idYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that the tool is auth-independent ('works before signup') and returns a feedback_id, which is useful. It does not cover the significant implicit behavior documented in the schema (omitting tenant_key on an unauthenticated connection silently signs up a new tenant), leaving that to structured data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences with the payload and the key behavioral fact (pre-signup availability) front-loaded; every clause carries information and nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter tool with a full output schema, the description covers purpose, payload, availability, and return value. The remaining complexity (tenant_key/implicit signup) is handled by the very detailed schema and need not be repeated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents kind, text, context, and the nuanced tenant_key semantics. The description only restates the 2048-byte limit and the optionality of context, adding essentially nothing beyond structured fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action and resource: sending feedback to the host's humans, with the payload shape (kind, text, context) named up front. It implicitly distinguishes itself from host.feedback.list via 'Tell ... what you needed', though it does not name any sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Works before signup' is a real usage qualifier that tells the agent this call is available pre-auth. However, it gives no guidance on when to send feedback versus reaching for host.help.search or host.feedback.list, and no explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.help.getAInspect

Return the documentation section an anchor points at: its text (at most 4 KB) and its first fenced example. Pass an anchor exactly as an error, hint or help entry printed it, e.g. a rate_limited error's anchor. Read-only, anonymous, no tenant data. An unknown anchor is anchor_not_found with the nearest anchors in did_you_mean.

ParametersJSON Schema
NameRequiredDescriptionDefault
anchorYesA `<path>#<slug>` anchor, e.g. README.md#call-limits, as printed by an error's `anchor` field or a `host.help.search` hit.
tenant_keyNoThe key `signup` returned. Optional on the connection that ran signup (or host.redeem): that connection is already bound to the tenant it created, so later calls on it need no tenant_key. On a connection with no Authorization: Bearer header and no prior signup, omitting it implicitly signs that connection up as a brand-new tenant and runs this call as it -- see host.whoami's source field. When both a header and this argument are present, the header wins.

Output Schema

ParametersJSON Schema
NameRequiredDescription
lineYes
pathYes
textYes
titleYes
anchorYes
exampleNo

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so: read-only, anonymous, no tenant data, text capped at 4 KB, returns the first fenced example, and unknown anchors yield anchor_not_found with nearest anchors in did_you_mean. That is a rich behavioral profile an annotations-only definition could not supply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the return contract, followed by input guidance and error behavior. No sentence is redundant and nothing is buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description still characterizes the payload (text cap, first example) and the failure mode. Combined with 100% schema coverage, an agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the anchor's `<path>#<slug>` format and example are already documented in the schema, and tenant_key's binding semantics are fully described there. The description only reinforces the anchor must be passed verbatim, adding marginal value over the structured field.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb+resource: return the documentation section an anchor points at, plus its text and first fenced example. It also implicitly separates itself from the sibling host.help.search by referring to an anchor as printed by a search hit, so an agent can tell lookup-by-anchor apart from search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains when to invoke it: pass an anchor exactly as an error, hint or help entry printed it, and it cites the rate_limited error's anchor field as a concrete trigger. It stops short of explicitly naming host.help.search as the fallback when no anchor is known, so the alternative is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.help.searchAInspect

Search this host's own documentation and tool descriptions. Returns up to k hits (default 3, response under 2 KB), each with a snippet, the nearest runnable example and an anchor. Read-only, anonymous, no tenant data -- call it with the error text or import line you are stuck on before reading any docs file.

ParametersJSON Schema
NameRequiredDescriptionDefault
kNoHow many hits to return (default 3).
qYesWhat you are stuck on: a tool name, an error code or message, an import line.
kindNoOnly search the page of this registered kind (docs/kinds/<kind>.md).
tenant_keyNoThe key `signup` returned. Optional on the connection that ran signup (or host.redeem): that connection is already bound to the tenant it created, so later calls on it need no tenant_key. On a connection with no Authorization: Bearer header and no prior signup, omitting it implicitly signs that connection up as a brand-new tenant and runs this call as it -- see host.whoami's source field. When both a header and this argument are present, the header wins.

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNo
hitsYes
totalYes
index_versionYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it declares the safety/auth profile ("Read-only, anonymous, no tenant data") and bounds the response ("up to k hits (default 3, response under 2 KB)"). It does not mention rate limits, latency, or what happens on zero hits, so it stops short of exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two front-loaded sentences: purpose and return shape first, then the auth/usage constraint. Every clause carries information (scope, sizing, read-only status, calling guidance) with no filler or restatement of the tool title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, yet the description still notes the response is under 2 KB. All four parameters are fully documented in the schema and the behavioral profile is covered, leaving nothing an agent needs in order to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% across all four parameters, including detailed tenant_key binding and header-precedence semantics, so the schema does the heavy lifting. The description only restates the default k and the q input hint that the schema already contains, adding essentially no new parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ("Search") and a specific resource ("this host's own documentation and tool descriptions"), which an agent can immediately distinguish from host.help.get (reading a docs file). The return-shape clause ("snippet, the nearest runnable example and an anchor") further pins down what kind of search this is.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to call it ("call it with the error text or import line you are stuck on") and routes the agent relative to an alternative ("before reading any docs file"), which is the sibling host.help.get. The routing decision is fully specified, not left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

host.quickstartInspect

Return the shortest ordered sequence of calls to a working tool of kind, with your namespace and a filled-in example already substituted in, plus the current limits and a try_before_call table naming the one dry-run tool for each case. Read-only -- this call alone never creates a tenant. Call this before host.tool_publish if you're not sure what a spec should look like. Unauthenticated callers get a worked example with no tenant data; any other host./billing. call creates a tenant on first use, no signup required.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoWhich registered kind to return a worked example for, e.g. echo, http, python -- or a job-word alias (webhook, event, cron, ...) for its recipe. Omit to see every kind, alias and recipe name.
tenant_keyNoThe key `signup` returned. Optional on the connection that ran signup (or host.redeem): that connection is already bound to the tenant it created, so later calls on it need no tenant_key. On a connection with no Authorization: Bearer header and no prior signup, omitting it implicitly signs that connection up as a brand-new tenant and runs this call as it -- see host.whoami's source field. When both a header and this argument are present, the header wins.

Output Schema

ParametersJSON Schema
NameRequiredDescription
hintNo
kindNo
nextNo
kindsNo
stepsNo
verbsNo
limitsNo
recipeNo
aliasesNo
exampleNo
outcomeNo
recipesNo
verdictNo
contractNoThe asked kind's KindContract summary: the error families its failures carry and whether they carry data.source_line.
endpointNo
triggersNo
namespaceNo
sandbox_apiNo
alt_endpointNo
reachabilityNo
starter_toolNo
welcome_backNo
authenticatedNo
install_linksNo
resolved_fromNo
bridge_returnsNo
recipes_nearbyNo
install_doc_urlNo
try_before_callNo
host_steps_allowedNo
host.redeemInspect

Exchange a signup(handoff: true) handoff_token for the tenant key it was issued for. Single-use: a second redemption fails with handoff_token_redeemed; past its expiry it fails with handoff_token_expired. Unauthenticated -- the token itself is the proof.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_keyNoThe key `signup` returned. Optional on the connection that ran signup (or host.redeem): that connection is already bound to the tenant it created, so later calls on it need no tenant_key. On a connection with no Authorization: Bearer header and no prior signup, omitting it implicitly signs that connection up as a brand-new tenant and runs this call as it -- see host.whoami's source field. When both a header and this argument are present, the header wins.
handoff_tokenYesThe handoff_token signup(handoff: true) returned.

Output Schema

ParametersJSON Schema
NameRequiredDescription
keyYes
nextYes
usageYes
session_boundYes
host.state.getInspect

Read one key from this tenant's key-value state namespace. Returns found: false (not an error) if the key was never set.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesKey to read from this tenant's key-value state namespace.
end_userNo"self" for the caller's own verified end-user identity, an explicit subject (only when this call carries no end-user identity of its own), or omit/null for the tenant-wide value.
tenant_keyNoThe key `signup` returned. Optional on the connection that ran signup (or host.redeem): that connection is already bound to the tenant it created, so later calls on it need no tenant_key. On a connection with no Authorization: Bearer header and no prior signup, omitting it implicitly signs that connection up as a brand-new tenant and runs this call as it -- see host.whoami's source field. When both a header and this argument are present, the header wins.

Output Schema

ParametersJSON Schema
NameRequiredDescription
keyYes
foundYes
valueYes
impersonatedNo
updated_unixNo
host.state.listInspect

List keys (with their current values) in this tenant's key-value state namespace, optionally filtered by prefix.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax keys to return; default 100.
prefixNoOnly list keys starting with this prefix; default: all keys.
end_userNo"self" for the caller's own verified end-user identity, an explicit subject (only when this call carries no end-user identity of its own), or omit/null for the tenant-wide value.
tenant_keyNoThe key `signup` returned. Optional on the connection that ran signup (or host.redeem): that connection is already bound to the tenant it created, so later calls on it need no tenant_key. On a connection with no Authorization: Bearer header and no prior signup, omitting it implicitly signs that connection up as a brand-new tenant and runs this call as it -- see host.whoami's source field. When both a header and this argument are present, the header wins.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
keysYes
host.state.setInspect

Write one key in this tenant's key-value state namespace; value may be any JSON value. Overrun of the plan's state_bytes_max quota fails with state_quota_exceeded and writes nothing.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesKey to write in this tenant's key-value state namespace.
valueYesAny JSON value to store under key.
dry_runNoreturn the diff this call would make and commit nothing
end_userNo"self" for the caller's own verified end-user identity, an explicit subject (only when this call carries no end-user identity of its own), or omit/null for the tenant-wide value.
tenant_keyNoThe key `signup` returned. Optional on the connection that ran signup (or host.redeem): that connection is already bound to the tenant it created, so later calls on it need no tenant_key. On a connection with no Authorization: Bearer header and no prior signup, omitting it implicitly signs that connection up as a brand-new tenant and runs this call as it -- see host.whoami's source field. When both a header and this argument are present, the header wins.

Output Schema

ParametersJSON Schema
NameRequiredDescription
keyYes
setYes
bytes_deltaYes
impersonatedNo
host.tool_callInspect

Invoke a tool this tenant has already published, by its local name -- the same real, metered call as calling it directly by its namespaced name (.), for a session that has no way to see its own namespaced tool name yet. Unlike host.tool_test, this counts toward host.usage and appears in host.tool_logs. Pass async: true for a tool that needs more than the call deadline: returns {run_id, status: "queued"} immediately instead of running inline -- see host.runs.get/wait. Pass version to pin the call to one of host.tool_history's versions instead of whichever is current.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsYesArguments to pass, validated against the tool's own args_schema.
nameYesLocal name of the tool to invoke.
asyncNoRun as a job instead of inline: returns {run_id, status} within ~50ms under the plan's job_max_s deadline; default false.
budgetNoLowers this call's budget below the plan default: any subset of max_child_calls, max_est_tokens, max_tool_latency_ms, max_wall_ms. A value above the plan's own ceiling is a validation error naming it; see host.runs.get's progress.budget.
dry_runNoAsk instead of call: runs every admission check the real call runs, dispatches nothing, writes no call row, and returns {fits, units, remaining, refusal}; same as host.estimate. Default false.
versionNoPin the call to this version instead of whichever is current; see host.tool_history. An unknown version is an argument error.
tenant_keyNoThe key `signup` returned. Optional on the connection that ran signup (or host.redeem): that connection is already bound to the tenant it created, so later calls on it need no tenant_key. On a connection with no Authorization: Bearer header and no prior signup, omitting it implicitly signs that connection up as a brand-new tenant and runs this call as it -- see host.whoami's source field. When both a header and this argument are present, the header wins.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
okNo
tzNo
v1No
msgNo
urlNo
argsNo
bodyNo
kindNo
nameNo
nextNo
rowsNo
textNo
toolNo
countNo
stepsNo
presetNo
resultNo
run_idNo
statusNo
verifyNo
changedNo
columnsNo
createdNo
doubledNo
enabledNo
headersNo
payloadNo
scheduleNo
next_unixNo
checked_atNo
onboardingNo
unverifiedNo
client_toolNo
https_proxyNo
last_run_idNo
last_statusNo
created_unixNo
failed_stepsNo
forwarded_toNo
welcome_backNo
dedupe_headerNo
last_fired_unixNo
host.tool_publishInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYesWhich registered kind to publish under: one of this field's `enum` (host.quickstart with no kind lists every kind, alias and recipe). A job-word alias in the enum also resolves here -- webhook-style words for an inbound webhook, cron-style words for a timed run -- both resolve to kind http and the descriptor comes back with resolved_from naming the alias you asked for. Error contract per kind: chain (families: compose, tool_state; source_line: no); echo (families: none; source_line: no); http (families: upstream; source_line: no); js (families: tool_code, tool_limit, upstream, compose, tool_state; source_line: yes); python (families: tool_code, tool_limit, upstream, compose, tool_state; source_line: yes); wasm (families: tool_code, tool_limit; source_line: no).
nameYesLocal name for the new tool; must match ^[a-z][a-z0-9_]{1,40}$.
specYesThe kind-specific spec object; see host.quickstart(kind) for a filled-in example. For python's network field: "none" (every plan), "public" (requires the pro plan), "egress" (requires the pro plan) -- a tool's own code reaches this tenant's data with `import mcphost` (mcphost.table, mcphost.state, mcphost.docs, mcphost.lineage) even when network is "none".
scopesNoOAuth scopes a token must carry (directly, or via mcp) to reach this tool: catalogued names from host.oauth.scopes, or the built-ins read/write. At most 8. Omit (or [] ) to require only mcp -- unaffected by any catalog.
dry_runNoreturn the diff this call would make and commit nothing
tenant_keyNoThe key `signup` returned. Optional on the connection that ran signup (or host.redeem): that connection is already bound to the tenant it created, so later calls on it need no tenant_key. On a connection with no Authorization: Bearer header and no prior signup, omitting it implicitly signs that connection up as a brand-new tenant and runs this call as it -- see host.whoami's source field. When both a header and this argument are present, the header wins.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okNo
hintNo
kindNo
lockNo
nameNo
nextNo
gatesNo
stepsNo
reasonNo
verdictNo
versionNoThe tool's version after this publish (1 for a first publish).
evidenceNo
failuresNo
call_lineNoA ready-to-paste call for the published tool. Optional: declared so a typed client reserves the field; absent from responses that do not carry one.
tool_lintNoAdvisory publish-time lint findings for a python tool ([] when clean); a finding never blocks the publish.
onboardingNo
deprecationsNo
welcome_backNo
resolved_fromNo
host.tool_shareInspect

Share one of this tenant's published tools with everyone (visibility: "public") or with a named group this tenant owns (visibility: "group", group: ). The tool keeps running in this tenant's own sandbox with this tenant's own secrets; a caller reaches it as <this tenant's namespace>..

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesLocal name of the tool to share.
groupNoRequired when visibility is "group"; must already exist (host.group.create).
tenant_keyNoThe key `signup` returned. Optional on the connection that ran signup (or host.redeem): that connection is already bound to the tenant it created, so later calls on it need no tenant_key. On a connection with no Authorization: Bearer header and no prior signup, omitting it implicitly signs that connection up as a brand-new tenant and runs this call as it -- see host.whoami's source field. When both a header and this argument are present, the header wins.
visibilityYes"public" or "group".
descriptionNoCatalog-facing blurb; shown by host.catalog.search/get.
expose_specNoDefault false. When true, any tenant this tool is shared with may call host.tool_spec_shared to read its (redacted) spec.

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlNo
nameYes
nextNo
groupYes
visibilityYes
descriptionYes
expose_specYes
welcome_backNo
host.tool_testInspect

Dry-run a published tool by name: verdict (pass/will_fail/unverifiable), writes rolled back (dry_run); see host.quickstart.

ParametersJSON Schema
NameRequiredDescriptionDefault
argsNoArguments to pass, same shape as a real call. Omit to run one example generated from the tool's args_schema; the response then carries example_args (what ran) and untyped (keys the schema gave no type for).
nameYesLocal name of the already-published tool to dry-run.
fixturesNoChain tools only: {"<step number or tool name>": <recorded result>}. A fixtured step executes nothing (no upstream call); later mappings resolve against it. host.runs.get(run_id, as_fixtures=true) exports a real run in this shape.
tenant_keyNoThe key `signup` returned. Optional on the connection that ran signup (or host.redeem): that connection is already bound to the tenant it created, so later calls on it need no tenant_key. On a connection with no Authorization: Bearer header and no prior signup, omitting it implicitly signs that connection up as a brand-new tenant and runs this call as it -- see host.whoami's source field. When both a header and this argument are present, the header wins.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
okNo
tzNo
msgNo
argsNo
kindNo
lineNo
nameNo
nextNo
toolNo
errorNo
outerNo
stateNo
stepsNo
detailNo
reasonNo
resultNo
schemaNo
changedNo
createdNo
dry_runYes
enabledNo
payloadNo
requestNo
verdictNo
envelopeNo
evidenceNo
failuresNo
responseNo
scheduleNo
warningsNo
next_unixNo
environmentNo
last_run_idNo
last_statusNo
source_lineNo
created_unixNo
forwarded_toNo
welcome_backNo
chain_dry_runNo
exception_classNo
inputs_requiredNo
last_fired_unixNo
host.whoamiInspect

Return the calling tenant's identity, including key_age_s and key_rotated_at for auditing credential hygiene.

ParametersJSON Schema
NameRequiredDescriptionDefault
tenant_keyNoThe key `signup` returned. Optional on the connection that ran signup (or host.redeem): that connection is already bound to the tenant it created, so later calls on it need no tenant_key. On a connection with no Authorization: Bearer header and no prior signup, omitting it implicitly signs that connection up as a brand-new tenant and runs this call as it -- see host.whoami's source field. When both a header and this argument are present, the header wins.

Output Schema

ParametersJSON Schema
NameRequiredDescription
keyNo
nextNo
planNo
adminNo
linksNo
ownerNo
sourceNo
tenantNo
subjectNo
disabledNo
resourceNo
claim_urlNo
key_age_sNo
namespaceNo
activationNo
created_atNo
invite_urlNo
onboardingNo
plan_sinceNo
auth_methodNo
client_nameNo
contract_shaYes
display_nameNo
metadata_urlNo
shared_toolsNo
source_classNo
welcome_backNo
client_versionNo
key_rotated_atNo
owner_verifiedNo
session_tenantNo
naming_rule_urlNo
contract_versionYes
admin_schema_versionNo
signupAInspect

Explicit signup, for a client that cannot keep a session across calls: create a tenant and receive a bearer key and namespace. Unauthenticated. Most clients never need this -- any other host./billing. call from a fresh connection creates a tenant implicitly and returns its own /u//mcp URL in the response's onboarding field. Recommended here: pass handoff: true to receive a short-lived, single-use handoff_token instead of the raw key -- redeem it once with host.redeem to get the key, so a transcript of this call and the redeem call, if it leaks, carries a dead credential. The raw-key path (handoff omitted) stays fully supported.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesdisplay name
handoffNoRecommended: true to receive a handoff_token (redeem via host.redeem) instead of the raw key. Default false (raw key, unchanged).

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses that the call is unauthenticated, explains the handoff_token security model (short-lived, single-use, transcript leakage yields a dead credential), and confirms the raw-key path remains supported. It omits edge-case behavior such as name collisions, idempotency of repeat signups, or rate limits, so it falls short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core purpose and audience in the first clause, then layers the alternative path and the handoff recommendation. Four dense sentences with no filler, though the handoff security rationale could be tightened slightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description names the salient returns (bearer key, namespace, handoff_token, onboarding URL). It is sufficient for a 2-parameter tool, but it does not clarify response field names or the namespace's role, leaving a small gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so the baseline is 3, but the description adds meaningful semantics for handoff beyond the schema: it is recommended, yields a short-lived single-use token redeemable once via host.redeem, and its purpose is leak containment. The name parameter gets no additional description, but the handoff elaboration lifts this above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and outcome: create a tenant and receive a bearer key and namespace, explicitly framed as an 'explicit signup' for sessionless clients. It distinguishes itself from the implicit tenant creation performed by other host.*/billing.* calls and from host.redeem, so an agent can route correctly without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says most clients never need this and names the alternative path (any fresh host.*/billing.* call creates a tenant implicitly, returning an onboarding URL). It also gives the selecting condition ('a client that cannot keep a session across calls') and recommends a specific parameter value.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedbilling.plans2 fields changed
      • addedOutput schema / properties / plans / items / properties / calls_included_month
        Added value: +{
        +  "type": [
        +    "integer",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / plans / items / properties / overage_usd_per_1000_calls
        Added value: +{
        +  "type": [
        +    "integer",
        +    "null"
        +  ]
        +}
  2. 2 tool updates
    • Changedhost.help.search1 field changed
      • changedInput schema / properties / kind / enum
        Previous value: -[
        -  "chain",
        -  "echo",
        -  "http",
        -  "python",
        -  "wasm"
        -]New value: +[
        +  "chain",
        +  "echo",
        +  "http",
        +  "js",
        +  "python",
        +  "wasm"
        +]
    • Changedhost.tool_publish3 fields changed
      • changedInput schema / allOf
        Previous value: -[
        -  {
        -    "if": {
        -      "properties": {
        -        "kind": {
        -          "const": "chain"
        -        }
        -      },
        -      "required": [
        -        "kind"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "spec": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "outputs": {
        -              "description": "fields a caller can rely on in `result.payload`, optionally with a `$.a.b` path each (every kind)"
        -            },
        -            "reads": {
        -              "description": "tables this tool reads, recorded for lineage and blast-radius reports"
        -            },
        -            "steps": {},
        -            "ui": {
        -              "additionalProperties": false,
        -              "description": "Optional presentation hints. `form: true` gives a url-shared tool a /f/ page where a person fills in the arguments and the submission lands in your inbox.",
        -              "properties": {
        -                "form": {
        -                  "type": "boolean"
        -                },
        -                "submit_label": {
        -                  "maxLength": 40,
        -                  "type": "string"
        -                },
        -                "success_text": {
        -                  "maxLength": 200,
        -                  "type": "string"
        -                }
        -              },
        -              "type": "object"
        -            }
        -          },
        -          "required": [
        -            "steps"
        -          ],
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "kind": {
        -          "const": "echo"
        -        }
        -      },
        -      "required": [
        -        "kind"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "spec": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "outputs": {
        -              "description": "fields a caller can rely on in `result.payload`, optionally with a `$.a.b` path each (every kind)"
        -            },
        -            "reads": {
        -              "description": "tables this tool reads, recorded for lineage and blast-radius reports"
        -            },
        -            "schema": {},
        -            "ui": {
        -              "additionalProperties": false,
        -              "description": "Optional presentation hints. `form: true` gives a url-shared tool a /f/ page where a person fills in the arguments and the submission lands in your inbox.",
        -              "properties": {
        -                "form": {
        -                  "type": "boolean"
        -                },
        -                "submit_label": {
        -                  "maxLength": 40,
        -                  "type": "string"
        -                },
        -                "success_text": {
        -                  "maxLength": 200,
        -                  "type": "string"
        -                }
        -              },
        -              "type": "object"
        -            }
        -          },
        -          "required": [
        -            "schema"
        -          ],
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "kind": {
        -          "const": "http"
        -        }
        -      },
        -      "required": [
        -        "kind"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "spec": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "args_schema": {},
        -            "body": {},
        -            "description": {},
        -            "headers": {},
        -            "method": {},
        -            "outputs": {
        -              "description": "fields a caller can rely on in `result.payload`, optionally with a `$.a.b` path each (every kind)"
        -            },
        -            "query": {},
        -            "reads": {
        -              "description": "tables this tool reads, recorded for lineage and blast-radius reports"
        -            },
        -            "response": {},
        -            "timeout_s": {},
        -            "ui": {
        -              "additionalProperties": false,
        -              "description": "Optional presentation hints. `form: true` gives a url-shared tool a /f/ page where a person fills in the arguments and the submission lands in your inbox.",
        -              "properties": {
        -                "form": {
        -                  "type": "boolean"
        -                },
        -                "submit_label": {
        -                  "maxLength": 40,
        -                  "type": "string"
        -                },
        -                "success_text": {
        -                  "maxLength": 200,
        -                  "type": "string"
        -                }
        -              },
        -              "type": "object"
        -            },
        -            "upstream": {},
        -            "upstream_provider": {},
        -            "url": {}
        -          },
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "kind": {
        -          "const": "python"
        -        }
        -      },
        -      "required": [
        -        "kind"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "spec": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "args_schema": {
        -              "description": "a JSON Schema object"
        -            },
        -            "description": {
        -              "description": "a string"
        -            },
        -            "env": {
        -              "description": "a map of name to string value; names must match ^[A-Z][A-Z0-9_]{0,63}$"
        -            },
        -            "memory_mb": {
        -              "description": "a positive integer number of megabytes"
        -            },
        -            "network": {
        -              "description": "\"none\" (every plan), \"public\" (requires the pro plan), \"egress\" (requires the pro plan) -- a tool's own code reaches this tenant's data with `import mcphost` (mcphost.table, mcphost.state, mcphost.docs, mcphost.lineage) even when network is \"none\""
        -            },
        -            "outputs": {
        -              "description": "a list of field names or an object mapping field names to path strings"
        -            },
        -            "reads": {
        -              "description": "tables this tool reads, recorded for lineage and blast-radius reports"
        -            },
        -            "requirements": {
        -              "description": "a list of strings"
        -            },
        -            "secrets": {
        -              "description": "a list of strings"
        -            },
        -            "source": {
        -              "description": "a string"
        -            },
        -            "timeout_s": {
        -              "description": "a positive integer number of seconds"
        -            },
        -            "ui": {
        -              "additionalProperties": false,
        -              "description": "Optional presentation hints. `form: true` gives a url-shared tool a /f/ page where a person fills in the arguments and the submission lands in your inbox.",
        -              "properties": {
        -                "form": {
        -                  "type": "boolean"
        -                },
        -                "submit_label": {
        -                  "maxLength": 40,
        -                  "type": "string"
        -                },
        -                "success_text": {
        -                  "maxLength": 200,
        -                  "type": "string"
        -                }
        -              },
        -              "type": "object"
        -            }
        -          },
        -          "required": [
        -            "source"
        -          ],
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "kind": {
        -          "const": "wasm"
        -        }
        -      },
        -      "required": [
        -        "kind"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "spec": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "args_schema": {},
        -            "component": {},
        -            "memory_mb": {},
        -            "outputs": {
        -              "description": "fields a caller can rely on in `result.payload`, optionally with a `$.a.b` path each (every kind)"
        -            },
        -            "reads": {
        -              "description": "tables this tool reads, recorded for lineage and blast-radius reports"
        -            },
        -            "timeout_s": {},
        -            "ui": {
        -              "additionalProperties": false,
        -              "description": "Optional presentation hints. `form: true` gives a url-shared tool a /f/ page where a person fills in the arguments and the submission lands in your inbox.",
        -              "properties": {
        -                "form": {
        -                  "type": "boolean"
        -                },
        -                "submit_label": {
        -                  "maxLength": 40,
        -                  "type": "string"
        -                },
        -                "success_text": {
        -                  "maxLength": 200,
        -                  "type": "string"
        -                }
        -              },
        -              "type": "object"
        -            }
        -          },
        -          "required": [
        -            "component"
        -          ],
        -          "type": "object"
        -        }
        -      }
        -    }
        -  }
        -]New value: +[
        +  {
        +    "if": {
        +      "properties": {
        +        "kind": {
        +          "const": "chain"
        +        }
        +      },
        +      "required": [
        +        "kind"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "spec": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "outputs": {
        +              "description": "fields a caller can rely on in `result.payload`, optionally with a `$.a.b` path each (every kind)"
        +            },
        +            "reads": {
        +              "description": "tables this tool reads, recorded for lineage and blast-radius reports"
        +            },
        +            "steps": {},
        +            "ui": {
        +              "additionalProperties": false,
        +              "description": "Optional presentation hints. `form: true` gives a url-shared tool a /f/ page where a person fills in the arguments and the submission lands in your inbox.",
        +              "properties": {
        +                "form": {
        +                  "type": "boolean"
        +                },
        +                "submit_label": {
        +                  "maxLength": 40,
        +                  "type": "string"
        +                },
        +                "success_text": {
        +                  "maxLength": 200,
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            }
        +          },
        +          "required": [
        +            "steps"
        +          ],
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "kind": {
        +          "const": "echo"
        +        }
        +      },
        +      "required": [
        +        "kind"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "spec": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "outputs": {
        +              "description": "fields a caller can rely on in `result.payload`, optionally with a `$.a.b` path each (every kind)"
        +            },
        +            "reads": {
        +              "description": "tables this tool reads, recorded for lineage and blast-radius reports"
        +            },
        +            "schema": {},
        +            "ui": {
        +              "additionalProperties": false,
        +              "description": "Optional presentation hints. `form: true` gives a url-shared tool a /f/ page where a person fills in the arguments and the submission lands in your inbox.",
        +              "properties": {
        +                "form": {
        +                  "type": "boolean"
        +                },
        +                "submit_label": {
        +                  "maxLength": 40,
        +                  "type": "string"
        +                },
        +                "success_text": {
        +                  "maxLength": 200,
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            }
        +          },
        +          "required": [
        +            "schema"
        +          ],
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "kind": {
        +          "const": "http"
        +        }
        +      },
        +      "required": [
        +        "kind"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "spec": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "args_schema": {},
        +            "body": {},
        +            "description": {},
        +            "headers": {},
        +            "method": {},
        +            "outputs": {
        +              "description": "fields a caller can rely on in `result.payload`, optionally with a `$.a.b` path each (every kind)"
        +            },
        +            "query": {},
        +            "reads": {
        +              "description": "tables this tool reads, recorded for lineage and blast-radius reports"
        +            },
        +            "response": {},
        +            "timeout_s": {},
        +            "ui": {
        +              "additionalProperties": false,
        +              "description": "Optional presentation hints. `form: true` gives a url-shared tool a /f/ page where a person fills in the arguments and the submission lands in your inbox.",
        +              "properties": {
        +                "form": {
        +                  "type": "boolean"
        +                },
        +                "submit_label": {
        +                  "maxLength": 40,
        +                  "type": "string"
        +                },
        +                "success_text": {
        +                  "maxLength": 200,
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "upstream": {},
        +            "upstream_provider": {},
        +            "url": {}
        +          },
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "kind": {
        +          "const": "js"
        +        }
        +      },
        +      "required": [
        +        "kind"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "spec": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "args_schema": {
        +              "description": "a JSON Schema object"
        +            },
        +            "description": {
        +              "description": "a string"
        +            },
        +            "env": {
        +              "description": "a map of name to string value; names must match ^[A-Z][A-Z0-9_]{0,63}$"
        +            },
        +            "memory_mb": {
        +              "description": "a positive integer number of megabytes"
        +            },
        +            "network": {
        +              "description": "\"none\" (every plan), \"public\" (requires the pro plan), \"egress\" (requires the pro plan) -- a tool's own code reaches this tenant's data with `import mcphost` (mcphost.table, mcphost.state, mcphost.docs, mcphost.lineage) even when network is \"none\""
        +            },
        +            "outputs": {
        +              "description": "a list of field names or an object mapping field names to path strings"
        +            },
        +            "reads": {
        +              "description": "tables this tool reads, recorded for lineage and blast-radius reports"
        +            },
        +            "secrets": {
        +              "description": "a list of strings"
        +            },
        +            "source": {
        +              "description": "a string"
        +            },
        +            "timeout_s": {
        +              "description": "a positive integer number of seconds"
        +            },
        +            "ui": {
        +              "additionalProperties": false,
        +              "description": "Optional presentation hints. `form: true` gives a url-shared tool a /f/ page where a person fills in the arguments and the submission lands in your inbox.",
        +              "properties": {
        +                "form": {
        +                  "type": "boolean"
        +                },
        +                "submit_label": {
        +                  "maxLength": 40,
        +                  "type": "string"
        +                },
        +                "success_text": {
        +                  "maxLength": 200,
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            }
        +          },
        +          "required": [
        +            "source"
        +          ],
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "kind": {
        +          "const": "python"
        +        }
        +      },
        +      "required": [
        +        "kind"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "spec": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "args_schema": {
        +              "description": "a JSON Schema object"
        +            },
        +            "description": {
        +              "description": "a string"
        +            },
        +            "env": {
        +              "description": "a map of name to string value; names must match ^[A-Z][A-Z0-9_]{0,63}$"
        +            },
        +            "memory_mb": {
        +              "description": "a positive integer number of megabytes"
        +            },
        +            "network": {
        +              "description": "\"none\" (every plan), \"public\" (requires the pro plan), \"egress\" (requires the pro plan) -- a tool's own code reaches this tenant's data with `import mcphost` (mcphost.table, mcphost.state, mcphost.docs, mcphost.lineage) even when network is \"none\""
        +            },
        +            "outputs": {
        +              "description": "a list of field names or an object mapping field names to path strings"
        +            },
        +            "reads": {
        +              "description": "tables this tool reads, recorded for lineage and blast-radius reports"
        +            },
        +            "requirements": {
        +              "description": "a list of strings"
        +            },
        +            "secrets": {
        +              "description": "a list of strings"
        +            },
        +            "source": {
        +              "description": "a string"
        +            },
        +            "timeout_s": {
        +              "description": "a positive integer number of seconds"
        +            },
        +            "ui": {
        +              "additionalProperties": false,
        +              "description": "Optional presentation hints. `form: true` gives a url-shared tool a /f/ page where a person fills in the arguments and the submission lands in your inbox.",
        +              "properties": {
        +                "form": {
        +                  "type": "boolean"
        +                },
        +                "submit_label": {
        +                  "maxLength": 40,
        +                  "type": "string"
        +                },
        +                "success_text": {
        +                  "maxLength": 200,
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            }
        +          },
        +          "required": [
        +            "source"
        +          ],
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "kind": {
        +          "const": "wasm"
        +        }
        +      },
        +      "required": [
        +        "kind"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "spec": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "args_schema": {},
        +            "component": {},
        +            "memory_mb": {},
        +            "outputs": {
        +              "description": "fields a caller can rely on in `result.payload`, optionally with a `$.a.b` path each (every kind)"
        +            },
        +            "reads": {
        +              "description": "tables this tool reads, recorded for lineage and blast-radius reports"
        +            },
        +            "timeout_s": {},
        +            "ui": {
        +              "additionalProperties": false,
        +              "description": "Optional presentation hints. `form: true` gives a url-shared tool a /f/ page where a person fills in the arguments and the submission lands in your inbox.",
        +              "properties": {
        +                "form": {
        +                  "type": "boolean"
        +                },
        +                "submit_label": {
        +                  "maxLength": 40,
        +                  "type": "string"
        +                },
        +                "success_text": {
        +                  "maxLength": 200,
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            }
        +          },
        +          "required": [
        +            "component"
        +          ],
        +          "type": "object"
        +        }
        +      }
        +    }
        +  }
        +]
      • changedInput schema / properties / kind / description
        Previous value: -"Which registered kind to publish under: one of this field's `enum` (host.quickstart with no kind lists every kind, alias and recipe). A job-word alias in the enum also resolves here -- webhook-style words for an inbound webhook, cron-style words for a timed run -- both resolve to kind http and the descriptor comes back with resolved_from naming the alias you asked for. Error contract per kind: chain (families: compose, tool_state; source_line: no); echo (families: none; source_line: no); http (families: upstream; source_line: no); python (families: tool_code, tool_limit, upstream, compose, tool_state; source_line: yes); wasm (families: tool_code, tool_limit; source_line: no)."New value: +"Which registered kind to publish under: one of this field's `enum` (host.quickstart with no kind lists every kind, alias and recipe). A job-word alias in the enum also resolves here -- webhook-style words for an inbound webhook, cron-style words for a timed run -- both resolve to kind http and the descriptor comes back with resolved_from naming the alias you asked for. Error contract per kind: chain (families: compose, tool_state; source_line: no); echo (families: none; source_line: no); http (families: upstream; source_line: no); js (families: tool_code, tool_limit, upstream, compose, tool_state; source_line: yes); python (families: tool_code, tool_limit, upstream, compose, tool_state; source_line: yes); wasm (families: tool_code, tool_limit; source_line: no)."
      • changedInput schema / properties / kind / enum
        Previous value: -[
        -  "chain",
        -  "echo",
        -  "http",
        -  "python",
        -  "wasm",
        -  "event",
        -  "events",
        -  "webhook",
        -  "webhooks",
        -  "inbound",
        -  "trigger",
        -  "inbox",
        -  "cron",
        -  "schedule",
        -  "scheduled",
        -  "doc",
        -  "docs",
        -  "document",
        -  "documents",
        -  "message",
        -  "messages",
        -  "msg",
        -  "database",
        -  "db",
        -  "table",
        -  "tables",
        -  "csv",
        -  "sql",
        -  "schedules",
        -  "uptime",
        -  "probe",
        -  "probes",
        -  "memory",
        -  "memories"
        -]New value: +[
        +  "chain",
        +  "echo",
        +  "http",
        +  "js",
        +  "python",
        +  "wasm",
        +  "event",
        +  "events",
        +  "webhook",
        +  "webhooks",
        +  "inbound",
        +  "trigger",
        +  "inbox",
        +  "cron",
        +  "schedule",
        +  "scheduled",
        +  "doc",
        +  "docs",
        +  "document",
        +  "documents",
        +  "message",
        +  "messages",
        +  "msg",
        +  "database",
        +  "db",
        +  "table",
        +  "tables",
        +  "csv",
        +  "sql",
        +  "schedules",
        +  "uptime",
        +  "probe",
        +  "probes",
        +  "memory",
        +  "memories"
        +]
  3. 2 tool updates
    • Changedhost.quickstart1 field changed
      • addedOutput schema / properties / contract
        Added value: +{
        +  "description": "The asked kind's KindContract summary: the error families its failures carry and whether they carry data.source_line.",
        +  "properties": {
        +    "families": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "source_line": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
    • Changedhost.tool_publish1 field changed
      • changedInput schema / properties / kind / description
        Previous value: -"Which registered kind to publish under: one of this field's `enum` (host.quickstart with no kind lists every kind, alias and recipe). A job-word alias in the enum also resolves here -- webhook-style words for an inbound webhook, cron-style words for a timed run -- both resolve to kind http and the descriptor comes back with resolved_from naming the alias you asked for."New value: +"Which registered kind to publish under: one of this field's `enum` (host.quickstart with no kind lists every kind, alias and recipe). A job-word alias in the enum also resolves here -- webhook-style words for an inbound webhook, cron-style words for a timed run -- both resolve to kind http and the descriptor comes back with resolved_from naming the alias you asked for. Error contract per kind: chain (families: compose, tool_state; source_line: no); echo (families: none; source_line: no); http (families: upstream; source_line: no); python (families: tool_code, tool_limit, upstream, compose, tool_state; source_line: yes); wasm (families: tool_code, tool_limit; source_line: no)."
  4. 13 tool updates
    • Changedbilling.plans6 fields changed
      • changedOutput schema / properties / plans / items / properties / calls_per_day / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / plans / items / properties / description / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / plans / items / properties / name / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / plans / items / properties / price_usd_month / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / plans / items / properties / secrets_max / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / plans / items / properties / tools_max / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
    • Changedhost.feedback.list2 fields changed
      • removedOutput schema / properties / feedback / items / properties / context / type
        Removed value: -"null"
      • changedOutput schema / properties / note / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
    • Changedhost.help.get1 field changed
      • changedOutput schema / properties / example / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
    • Changedhost.help.search4 fields changed
      • changedOutput schema / properties / hint / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / hits / items / properties / example / properties / truncated / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / hits / items / properties / example / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / hits / items / properties / next_tool / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
    • Changedhost.quickstart215 fields changed
      • changedOutput schema / properties / aliases / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / alt_endpoint / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / authenticated / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.call / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.channel.post / properties / channel_id / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.channel.post / properties / created_at / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.channel.post / properties / from_address / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.channel.post / properties / post_id / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.channel.post / properties / seq / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.channel.post / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.channel.read / properties / posts / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.channel.read / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.docs.get / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.docs.search / properties / index / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.docs.search / properties / results / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.docs.search / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.drift.reviews / properties / reviews / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.drift.reviews / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.lineage.blast_radius / properties / impacted / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.lineage.blast_radius / properties / truncated / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.lineage.blast_radius / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.lineage.trace / properties / downstream / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.lineage.trace / properties / downstream_count / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.lineage.trace / properties / id / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.lineage.trace / properties / kind / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.lineage.trace / properties / label / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.lineage.trace / properties / orphaned / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.lineage.trace / properties / upstream / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.lineage.trace / properties / uses / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.lineage.trace / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.msg.inbox / properties / messages / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.msg.inbox / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.msg.send / properties / delivered_to / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.msg.send / properties / message_id / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.msg.send / properties / refused / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.msg.send / properties / seq / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.msg.send / properties / thread_id / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.msg.send / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.progress / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.delete / properties / bytes_delta / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.delete / properties / deleted / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.delete / properties / key / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.delete / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.delete_rows / properties / bytes_delta / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.delete_rows / properties / deleted / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.delete_rows / properties / table / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.delete_rows / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.get / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.insert / properties / bytes_delta / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.insert / properties / ids / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.insert / properties / inserted / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.insert / properties / table / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.insert / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.list / properties / keys / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.list / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.query / properties / rows / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.query / properties / table / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.query / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.set / properties / bytes_delta / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.set / properties / key / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.set / properties / set / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.set / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.table_create / properties / bytes_delta / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.table_create / properties / created / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.table_create / properties / name / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.table_create / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.table_drop / properties / bytes_delta / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.table_drop / properties / dropped / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.table_drop / properties / name / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.state.table_drop / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.append / properties / appended / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.append / properties / ids / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.append / properties / table / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.append / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.chart / properties / caption / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.chart / properties / profile / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.chart / properties / recommendation / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.chart / properties / row_count / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.chart / properties / schema / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.chart / properties / title / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.chart / properties / vega_lite / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.chart / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.create / properties / created / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.create / properties / name / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.create / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.drop / properties / dropped / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.drop / properties / name / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.drop / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.list / properties / bytes_used / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.list / properties / tables / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.list / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.query / properties / rows / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.query / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.query(handle=True) / properties / bytes / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.query(handle=True) / properties / columns / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.query(handle=True) / properties / derived_from / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.query(handle=True) / properties / expires_unix / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.query(handle=True) / properties / handle / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.query(handle=True) / properties / row_count / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.query(handle=True) / properties / sample / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.query(handle=True) / properties / sample_cap / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.query(handle=True) / properties / stats / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.query(handle=True) / properties / table / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.query(handle=True) / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.schema / properties / bytes_used / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.schema / properties / columns / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.schema / properties / rows / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.schema / properties / table / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / properties / mcphost.table.schema / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / bridge_returns / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / endpoint / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / example / properties / args / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / example / properties / tool / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / example / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / hint / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / host_steps_allowed / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / install_doc_url / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / install_links / properties / claude_ai_steps / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / install_links / properties / claude_code_command / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / install_links / properties / cursor / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / install_links / properties / mcp_url / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / install_links / properties / surfaces / items / properties / artefact / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / install_links / properties / surfaces / items / properties / checked / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / install_links / properties / surfaces / items / properties / doc_url / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / install_links / properties / surfaces / items / properties / id / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / install_links / properties / surfaces / items / properties / kind / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / install_links / properties / surfaces / items / properties / label / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / install_links / properties / surfaces / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / install_links / properties / vscode / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / install_links / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / kind / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / kinds / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / limits / properties / call_timeout_default_s / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / limits / properties / call_timeout_max_s / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / limits / properties / concurrent_calls_host / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / limits / properties / concurrent_calls_per_tenant / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / limits / properties / forwarding / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / limits / properties / max_spec_bytes / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / limits / properties / max_tools_per_tenant / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / limits / properties / name_pattern / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / limits / properties / output_bytes_max / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / limits / properties / plan / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / limits / properties / request_body_bytes_max / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / limits / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / namespace / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / next / items / properties / alternative_arguments / properties / args / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / next / items / properties / alternative_arguments / properties / name / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / next / items / properties / alternative_arguments / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / next / items / properties / alternative_call / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / next / items / properties / arguments / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / next / items / properties / call / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / next / items / properties / note / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / next / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / outcome / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / reachability / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / recipe / properties / docs / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / recipe / properties / name / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / recipe / properties / steps / items / properties / args_example / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / recipe / properties / steps / items / properties / note / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / recipe / properties / steps / items / properties / tool / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / recipe / properties / steps / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / recipe / type
        Previous value: -[
        -  "object",
        -  "string"
        -]New value: +[
        +  "object",
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / recipes / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / recipes_nearby / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / resolved_from / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / sandbox_api / properties / attrs / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / sandbox_api / properties / import / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / sandbox_api / properties / modules / properties / mcphost.channel / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / sandbox_api / properties / modules / properties / mcphost.docs / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / sandbox_api / properties / modules / properties / mcphost.drift / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / sandbox_api / properties / modules / properties / mcphost.lineage / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / sandbox_api / properties / modules / properties / mcphost.msg / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / sandbox_api / properties / modules / properties / mcphost.state / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / sandbox_api / properties / modules / properties / mcphost.table / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / sandbox_api / properties / modules / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / sandbox_api / properties / not_a_module / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / sandbox_api / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / starter_tool / properties / kind / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / starter_tool / properties / name / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / starter_tool / properties / publish_call / properties / arguments / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / starter_tool / properties / publish_call / properties / call / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / starter_tool / properties / publish_call / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / starter_tool / properties / spec / properties / method / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / starter_tool / properties / spec / properties / source / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / starter_tool / properties / spec / properties / url / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / starter_tool / properties / spec / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / starter_tool / properties / test_call / properties / arguments / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / starter_tool / properties / test_call / properties / call / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / starter_tool / properties / test_call / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / starter_tool / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / alternative_arguments / properties / args / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / alternative_arguments / properties / name / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / alternative_arguments / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / alternative_call / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / arguments / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / call / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / note / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / steps / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / triggers / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / try_before_call / items / properties / arguments / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / try_before_call / items / properties / call / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / try_before_call / items / properties / case / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / try_before_call / items / properties / note / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / try_before_call / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / verbs / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / verdict / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / welcome_back / properties / last_note / type
        Removed value: -"null"
      • changedOutput schema / properties / welcome_back / properties / last_seen / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / notes / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / since_you_left / properties / calls / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / since_you_left / properties / days / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / since_you_left / properties / inbox / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / since_you_left / properties / runs / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / since_you_left / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
    • Changedhost.state.get7 fields changed
      • changedOutput schema / properties / impersonated / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / updated_unix / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / value / properties / at / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / value / properties / n / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / value / properties / source / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / value / properties / text / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / value / properties / who / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
    • Changedhost.state.list17 fields changed
      • removedOutput schema / properties / data / properties / quota / properties / state_ops_per_call_max / properties / remaining / type
        Removed value: -"null"
      • removedOutput schema / properties / data / properties / quota / properties / state_ops_per_call_max / properties / used / type
        Removed value: -"null"
      • changedOutput schema / properties / data / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / keys / items / properties / key / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / keys / items / properties / updated_unix / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / keys / items / properties / value / properties / download_url / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / keys / items / properties / value / properties / entries_done / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / keys / items / properties / value / properties / entries_total / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / keys / items / properties / value / properties / expires_unix / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / keys / items / properties / value / properties / imported / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / keys / items / properties / value / properties / manifest / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / keys / items / properties / value / properties / n / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / keys / items / properties / value / properties / secrets_to_set / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / keys / items / properties / value / properties / size_bytes / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / keys / items / properties / value / properties / skipped / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / keys / items / properties / value / properties / unrecognised_paths / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / keys / items / properties / value / type
        Previous value: -[
        -  "integer",
        -  "object",
        -  "string"
        -]New value: +[
        +  "integer",
        +  "object",
        +  "string",
        +  "null"
        +]
    • Changedhost.state.set1 field changed
      • changedOutput schema / properties / impersonated / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
    • Changedhost.tool_call84 fields changed
      • changedOutput schema / properties / args / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / body / properties / ok / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / body / properties / pong / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / body / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / changed / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / checked_at / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / client_tool / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / columns / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / count / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / created / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / created_unix / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • removedOutput schema / properties / dedupe_header / type
        Removed value: -"null"
      • changedOutput schema / properties / doubled / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / enabled / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / failed_steps / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / forwarded_to / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / headers / properties / content-type / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / headers / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / https_proxy / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / id / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / kind / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / last_fired_unix / type
        Removed value: -"null"
      • removedOutput schema / properties / last_run_id / type
        Removed value: -"null"
      • removedOutput schema / properties / last_status / type
        Removed value: -"null"
      • changedOutput schema / properties / msg / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / name / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / next / properties / tool / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / next / properties / why / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / next / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / next_unix / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / ok / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / onboarding / properties / claim_url / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / onboarding / properties / invited_by / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / onboarding / properties / shared_tools / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / onboarding / properties / tenant / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / onboarding / properties / url / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / onboarding / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / payload / properties / ok / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / payload / properties / pong / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / payload / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • removedOutput schema / properties / preset / type
        Removed value: -"null"
      • changedOutput schema / properties / result / properties / region / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / result / properties / rows / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / result / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / rows / items / properties / body / properties / id / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / rows / items / properties / body / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / rows / items / properties / checked_at / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • removedOutput schema / properties / rows / items / properties / delivery_id / type
        Removed value: -"null"
      • changedOutput schema / properties / rows / items / properties / id / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / rows / items / properties / latency_ms / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / rows / items / properties / ok / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / rows / items / properties / received_at / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / rows / items / properties / status / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / rows / items / properties / url / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / rows / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / run_id / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / schedule / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / status / type
        Previous value: -[
        -  "string",
        -  "integer"
        -]New value: +[
        +  "string",
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / result / properties / region / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / result / properties / rows / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / result / properties / url / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / result / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / status / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / step / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / tool / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / steps / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / text / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / tool / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / tz / type
        Removed value: -"null"
      • changedOutput schema / properties / unverified / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / url / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / v1 / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / verify / properties / allow_unverified / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / verify / properties / scheme / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / verify / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • removedOutput schema / properties / welcome_back / properties / last_note / type
        Removed value: -"null"
      • changedOutput schema / properties / welcome_back / properties / last_seen / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / notes / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / since_you_left / properties / calls / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / since_you_left / properties / days / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / since_you_left / properties / inbox / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / since_you_left / properties / runs / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / since_you_left / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
    • Changedhost.tool_publish66 fields changed
      • changedInput schema / allOf
        Previous value: -[
        -  {
        -    "if": {
        -      "properties": {
        -        "kind": {
        -          "const": "chain"
        -        }
        -      },
        -      "required": [
        -        "kind"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "spec": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "reads": {},
        -            "steps": {},
        -            "ui": {
        -              "additionalProperties": false,
        -              "description": "Optional presentation hints. `form: true` gives a url-shared tool a /f/ page where a person fills in the arguments and the submission lands in your inbox.",
        -              "properties": {
        -                "form": {
        -                  "type": "boolean"
        -                },
        -                "submit_label": {
        -                  "maxLength": 40,
        -                  "type": "string"
        -                },
        -                "success_text": {
        -                  "maxLength": 200,
        -                  "type": "string"
        -                }
        -              },
        -              "type": "object"
        -            }
        -          },
        -          "required": [
        -            "steps"
        -          ],
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "kind": {
        -          "const": "echo"
        -        }
        -      },
        -      "required": [
        -        "kind"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "spec": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "reads": {},
        -            "schema": {},
        -            "ui": {
        -              "additionalProperties": false,
        -              "description": "Optional presentation hints. `form: true` gives a url-shared tool a /f/ page where a person fills in the arguments and the submission lands in your inbox.",
        -              "properties": {
        -                "form": {
        -                  "type": "boolean"
        -                },
        -                "submit_label": {
        -                  "maxLength": 40,
        -                  "type": "string"
        -                },
        -                "success_text": {
        -                  "maxLength": 200,
        -                  "type": "string"
        -                }
        -              },
        -              "type": "object"
        -            }
        -          },
        -          "required": [
        -            "schema"
        -          ],
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "kind": {
        -          "const": "http"
        -        }
        -      },
        -      "required": [
        -        "kind"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "spec": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "args_schema": {},
        -            "body": {},
        -            "description": {},
        -            "headers": {},
        -            "method": {},
        -            "outputs": {},
        -            "query": {},
        -            "reads": {},
        -            "response": {},
        -            "timeout_s": {},
        -            "ui": {
        -              "additionalProperties": false,
        -              "description": "Optional presentation hints. `form: true` gives a url-shared tool a /f/ page where a person fills in the arguments and the submission lands in your inbox.",
        -              "properties": {
        -                "form": {
        -                  "type": "boolean"
        -                },
        -                "submit_label": {
        -                  "maxLength": 40,
        -                  "type": "string"
        -                },
        -                "success_text": {
        -                  "maxLength": 200,
        -                  "type": "string"
        -                }
        -              },
        -              "type": "object"
        -            },
        -            "upstream": {},
        -            "upstream_provider": {},
        -            "url": {}
        -          },
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "kind": {
        -          "const": "python"
        -        }
        -      },
        -      "required": [
        -        "kind"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "spec": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "args_schema": {
        -              "description": "a JSON Schema object"
        -            },
        -            "description": {
        -              "description": "a string"
        -            },
        -            "env": {
        -              "description": "a map of name to string value; names must match ^[A-Z][A-Z0-9_]{0,63}$"
        -            },
        -            "memory_mb": {
        -              "description": "a positive integer number of megabytes"
        -            },
        -            "network": {
        -              "description": "\"none\" (every plan), \"public\" (requires the pro plan), \"egress\" (requires the pro plan) -- a tool's own code reaches this tenant's data with `import mcphost` (mcphost.table, mcphost.state, mcphost.docs, mcphost.lineage) even when network is \"none\""
        -            },
        -            "outputs": {
        -              "description": "a list of field names or an object mapping field names to path strings"
        -            },
        -            "reads": {},
        -            "requirements": {
        -              "description": "a list of strings"
        -            },
        -            "secrets": {
        -              "description": "a list of strings"
        -            },
        -            "source": {
        -              "description": "a string"
        -            },
        -            "timeout_s": {
        -              "description": "a positive integer number of seconds"
        -            },
        -            "ui": {
        -              "additionalProperties": false,
        -              "description": "Optional presentation hints. `form: true` gives a url-shared tool a /f/ page where a person fills in the arguments and the submission lands in your inbox.",
        -              "properties": {
        -                "form": {
        -                  "type": "boolean"
        -                },
        -                "submit_label": {
        -                  "maxLength": 40,
        -                  "type": "string"
        -                },
        -                "success_text": {
        -                  "maxLength": 200,
        -                  "type": "string"
        -                }
        -              },
        -              "type": "object"
        -            }
        -          },
        -          "required": [
        -            "source"
        -          ],
        -          "type": "object"
        -        }
        -      }
        -    }
        -  },
        -  {
        -    "if": {
        -      "properties": {
        -        "kind": {
        -          "const": "wasm"
        -        }
        -      },
        -      "required": [
        -        "kind"
        -      ]
        -    },
        -    "then": {
        -      "properties": {
        -        "spec": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "args_schema": {},
        -            "component": {},
        -            "memory_mb": {},
        -            "outputs": {},
        -            "reads": {},
        -            "timeout_s": {},
        -            "ui": {
        -              "additionalProperties": false,
        -              "description": "Optional presentation hints. `form: true` gives a url-shared tool a /f/ page where a person fills in the arguments and the submission lands in your inbox.",
        -              "properties": {
        -                "form": {
        -                  "type": "boolean"
        -                },
        -                "submit_label": {
        -                  "maxLength": 40,
        -                  "type": "string"
        -                },
        -                "success_text": {
        -                  "maxLength": 200,
        -                  "type": "string"
        -                }
        -              },
        -              "type": "object"
        -            }
        -          },
        -          "required": [
        -            "component"
        -          ],
        -          "type": "object"
        -        }
        -      }
        -    }
        -  }
        -]New value: +[
        +  {
        +    "if": {
        +      "properties": {
        +        "kind": {
        +          "const": "chain"
        +        }
        +      },
        +      "required": [
        +        "kind"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "spec": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "outputs": {
        +              "description": "fields a caller can rely on in `result.payload`, optionally with a `$.a.b` path each (every kind)"
        +            },
        +            "reads": {
        +              "description": "tables this tool reads, recorded for lineage and blast-radius reports"
        +            },
        +            "steps": {},
        +            "ui": {
        +              "additionalProperties": false,
        +              "description": "Optional presentation hints. `form: true` gives a url-shared tool a /f/ page where a person fills in the arguments and the submission lands in your inbox.",
        +              "properties": {
        +                "form": {
        +                  "type": "boolean"
        +                },
        +                "submit_label": {
        +                  "maxLength": 40,
        +                  "type": "string"
        +                },
        +                "success_text": {
        +                  "maxLength": 200,
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            }
        +          },
        +          "required": [
        +            "steps"
        +          ],
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "kind": {
        +          "const": "echo"
        +        }
        +      },
        +      "required": [
        +        "kind"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "spec": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "outputs": {
        +              "description": "fields a caller can rely on in `result.payload`, optionally with a `$.a.b` path each (every kind)"
        +            },
        +            "reads": {
        +              "description": "tables this tool reads, recorded for lineage and blast-radius reports"
        +            },
        +            "schema": {},
        +            "ui": {
        +              "additionalProperties": false,
        +              "description": "Optional presentation hints. `form: true` gives a url-shared tool a /f/ page where a person fills in the arguments and the submission lands in your inbox.",
        +              "properties": {
        +                "form": {
        +                  "type": "boolean"
        +                },
        +                "submit_label": {
        +                  "maxLength": 40,
        +                  "type": "string"
        +                },
        +                "success_text": {
        +                  "maxLength": 200,
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            }
        +          },
        +          "required": [
        +            "schema"
        +          ],
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "kind": {
        +          "const": "http"
        +        }
        +      },
        +      "required": [
        +        "kind"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "spec": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "args_schema": {},
        +            "body": {},
        +            "description": {},
        +            "headers": {},
        +            "method": {},
        +            "outputs": {
        +              "description": "fields a caller can rely on in `result.payload`, optionally with a `$.a.b` path each (every kind)"
        +            },
        +            "query": {},
        +            "reads": {
        +              "description": "tables this tool reads, recorded for lineage and blast-radius reports"
        +            },
        +            "response": {},
        +            "timeout_s": {},
        +            "ui": {
        +              "additionalProperties": false,
        +              "description": "Optional presentation hints. `form: true` gives a url-shared tool a /f/ page where a person fills in the arguments and the submission lands in your inbox.",
        +              "properties": {
        +                "form": {
        +                  "type": "boolean"
        +                },
        +                "submit_label": {
        +                  "maxLength": 40,
        +                  "type": "string"
        +                },
        +                "success_text": {
        +                  "maxLength": 200,
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "upstream": {},
        +            "upstream_provider": {},
        +            "url": {}
        +          },
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "kind": {
        +          "const": "python"
        +        }
        +      },
        +      "required": [
        +        "kind"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "spec": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "args_schema": {
        +              "description": "a JSON Schema object"
        +            },
        +            "description": {
        +              "description": "a string"
        +            },
        +            "env": {
        +              "description": "a map of name to string value; names must match ^[A-Z][A-Z0-9_]{0,63}$"
        +            },
        +            "memory_mb": {
        +              "description": "a positive integer number of megabytes"
        +            },
        +            "network": {
        +              "description": "\"none\" (every plan), \"public\" (requires the pro plan), \"egress\" (requires the pro plan) -- a tool's own code reaches this tenant's data with `import mcphost` (mcphost.table, mcphost.state, mcphost.docs, mcphost.lineage) even when network is \"none\""
        +            },
        +            "outputs": {
        +              "description": "a list of field names or an object mapping field names to path strings"
        +            },
        +            "reads": {
        +              "description": "tables this tool reads, recorded for lineage and blast-radius reports"
        +            },
        +            "requirements": {
        +              "description": "a list of strings"
        +            },
        +            "secrets": {
        +              "description": "a list of strings"
        +            },
        +            "source": {
        +              "description": "a string"
        +            },
        +            "timeout_s": {
        +              "description": "a positive integer number of seconds"
        +            },
        +            "ui": {
        +              "additionalProperties": false,
        +              "description": "Optional presentation hints. `form: true` gives a url-shared tool a /f/ page where a person fills in the arguments and the submission lands in your inbox.",
        +              "properties": {
        +                "form": {
        +                  "type": "boolean"
        +                },
        +                "submit_label": {
        +                  "maxLength": 40,
        +                  "type": "string"
        +                },
        +                "success_text": {
        +                  "maxLength": 200,
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            }
        +          },
        +          "required": [
        +            "source"
        +          ],
        +          "type": "object"
        +        }
        +      }
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "kind": {
        +          "const": "wasm"
        +        }
        +      },
        +      "required": [
        +        "kind"
        +      ]
        +    },
        +    "then": {
        +      "properties": {
        +        "spec": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "args_schema": {},
        +            "component": {},
        +            "memory_mb": {},
        +            "outputs": {
        +              "description": "fields a caller can rely on in `result.payload`, optionally with a `$.a.b` path each (every kind)"
        +            },
        +            "reads": {
        +              "description": "tables this tool reads, recorded for lineage and blast-radius reports"
        +            },
        +            "timeout_s": {},
        +            "ui": {
        +              "additionalProperties": false,
        +              "description": "Optional presentation hints. `form: true` gives a url-shared tool a /f/ page where a person fills in the arguments and the submission lands in your inbox.",
        +              "properties": {
        +                "form": {
        +                  "type": "boolean"
        +                },
        +                "submit_label": {
        +                  "maxLength": 40,
        +                  "type": "string"
        +                },
        +                "success_text": {
        +                  "maxLength": 200,
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            }
        +          },
        +          "required": [
        +            "component"
        +          ],
        +          "type": "object"
        +        }
        +      }
        +    }
        +  }
        +]
      • changedOutput schema / properties / call_line / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / deprecations / items / properties / path / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / deprecations / items / properties / replacement / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / deprecations / items / properties / since / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / deprecations / items / properties / sunset / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / deprecations / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / evidence / items / properties / available / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / evidence / items / properties / did_you_mean / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / evidence / items / properties / path / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / evidence / items / properties / predecessor_keys / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / evidence / items / properties / step / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / evidence / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / failures / items / properties / available / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / failures / items / properties / did_you_mean / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / failures / items / properties / path / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / failures / items / properties / predecessor_keys / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / failures / items / properties / step / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / failures / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / gates / items / properties / evidence / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / gates / items / properties / failures / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / gates / items / properties / gate / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / gates / items / properties / ok / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / gates / items / properties / verdict / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / gates / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / hint / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / kind / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / lock / properties / hashes / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / lock / properties / packages / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / lock / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / name / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / next / properties / tool / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / next / properties / why / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / next / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / ok / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / onboarding / properties / claim_url / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / onboarding / properties / memory_hint / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / onboarding / properties / memory_line / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / onboarding / properties / note / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / onboarding / properties / tenant / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / onboarding / properties / url / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / onboarding / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / reason / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / resolved_from / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / hint / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / prev_fields_source / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / step / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / tool / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / steps / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / tool_lint / items / properties / fix / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / tool_lint / items / properties / line / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / tool_lint / items / properties / message / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / tool_lint / items / properties / rule / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / tool_lint / items / properties / source_line / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / tool_lint / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / verdict / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / version / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • removedOutput schema / properties / welcome_back / properties / last_note / type
        Removed value: -"null"
      • changedOutput schema / properties / welcome_back / properties / last_seen / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / notes / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / since_you_left / properties / calls / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / since_you_left / properties / days / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / since_you_left / properties / inbox / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / since_you_left / properties / runs / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / since_you_left / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
    • Changedhost.tool_share13 fields changed
      • changedOutput schema / properties / next / properties / tool / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / next / properties / why / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / next / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / url / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / welcome_back / properties / last_note / type
        Removed value: -"null"
      • changedOutput schema / properties / welcome_back / properties / last_seen / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / notes / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / since_you_left / properties / calls / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / since_you_left / properties / days / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / since_you_left / properties / inbox / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / since_you_left / properties / runs / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / since_you_left / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
    • Changedhost.tool_test154 fields changed
      • changedOutput schema / properties / args / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / chain_dry_run / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / changed / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / created / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / created_unix / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / detail / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / dry_run / properties / delivered / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / dry_run / properties / rolled_back / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / dry_run / properties / writes / items / properties / channel / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / dry_run / properties / writes / items / properties / op / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / dry_run / properties / writes / items / properties / rows / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / dry_run / properties / writes / items / properties / store / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / dry_run / properties / writes / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / enabled / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / envelope / properties / declared / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / envelope / properties / found_at_contract_path / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / envelope / properties / green / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / envelope / properties / missing / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / envelope / properties / missing_detail / items / properties / name / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / envelope / properties / missing_detail / items / properties / path / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / envelope / properties / missing_detail / items / properties / seen_at / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / envelope / properties / missing_detail / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / envelope / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / environment / items / properties / kind / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / environment / items / properties / name / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / environment / items / properties / value / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / environment / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / error / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / evidence / items / properties / available / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / evidence / items / properties / did_you_mean / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / evidence / items / properties / path / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / evidence / items / properties / predecessor_keys / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / evidence / items / properties / step / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / evidence / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / exception_class / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / failures / items / properties / available / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / failures / items / properties / did_you_mean / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / failures / items / properties / path / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / failures / items / properties / predecessor_keys / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / failures / items / properties / step / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / failures / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / forwarded_to / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / id / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / inputs_required / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / kind / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / last_fired_unix / type
        Removed value: -"null"
      • removedOutput schema / properties / last_run_id / type
        Removed value: -"null"
      • removedOutput schema / properties / last_status / type
        Removed value: -"null"
      • changedOutput schema / properties / line / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / msg / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / name / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / next / properties / tool / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / next / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / next_unix / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / ok / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / outer / properties / tenant_key / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / outer / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / payload / properties / msg / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / payload / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / reason / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / request / properties / body / type
        Removed value: -"null"
      • changedOutput schema / properties / request / properties / headers / properties / x-api-key / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / request / properties / headers / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / request / properties / method / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / request / properties / query / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / request / properties / url / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / request / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / response / properties / body / properties / blocking_tool / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / response / properties / body / properties / fact / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / response / properties / body / properties / json / properties / bridge_status / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / response / properties / body / properties / json / properties / ingestion_status / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / response / properties / body / properties / json / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / response / properties / body / properties / length / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / response / properties / body / properties / ok / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / response / properties / body / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / response / properties / headers / properties / content-type / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / response / properties / headers / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / response / properties / payload / properties / blocking_tool / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / response / properties / payload / properties / fact / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / response / properties / payload / properties / json / properties / bridge_status / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / response / properties / payload / properties / json / properties / ingestion_status / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / response / properties / payload / properties / json / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / response / properties / payload / properties / length / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / response / properties / payload / properties / ok / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / response / properties / payload / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / response / properties / status / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / response / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • removedOutput schema / properties / result / properties / a / type
        Removed value: -"null"
      • changedOutput schema / properties / result / properties / appended / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • removedOutput schema / properties / result / properties / b / type
        Removed value: -"null"
      • changedOutput schema / properties / result / properties / city / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / result / properties / data / properties / status / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / result / properties / data / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / result / properties / delivered / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / result / properties / n / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / result / properties / ok / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / result / properties / payload / properties / data / properties / status / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / result / properties / payload / properties / data / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / result / properties / payload / properties / ingestion_status / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / result / properties / payload / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / result / properties / table / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / result / properties / total / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / result / properties / would_post / properties / body / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / result / properties / would_post / properties / channel / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / result / properties / would_post / properties / data / properties / n / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / result / properties / would_post / properties / data / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / result / properties / would_post / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / result / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / schedule / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / schema / properties / properties / properties / cid / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / schema / properties / properties / properties / city / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / schema / properties / properties / properties / note / properties / default / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / schema / properties / properties / properties / note / properties / type / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / schema / properties / properties / properties / note / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / schema / properties / properties / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / schema / properties / required / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / schema / properties / type / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / schema / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / source_line / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / state / properties / keys / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / state / properties / reads / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / state / properties / tables / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / state / properties / writes / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / state / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / dispatched / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / error / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / prev_fields / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / resolved / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / resolved_args / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / result / properties / a / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / result / properties / appended / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / result / properties / ids / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / result / properties / leads / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / result / properties / owner / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / result / properties / rows / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / result / properties / table / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / result / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / side_effects / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / step / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / steps / items / properties / tool / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / steps / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / tool / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / tz / type
        Removed value: -"null"
      • changedOutput schema / properties / verdict / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / warnings / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • removedOutput schema / properties / welcome_back / properties / last_note / type
        Removed value: -"null"
      • changedOutput schema / properties / welcome_back / properties / last_seen / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / notes / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / since_you_left / properties / calls / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / since_you_left / properties / days / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / since_you_left / properties / inbox / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / since_you_left / properties / runs / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / since_you_left / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
    • Changedhost.whoami52 fields changed
      • changedOutput schema / properties / activation / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / admin / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / admin_schema_version / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / auth_method / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / claim_url / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / created_at / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / disabled / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / display_name / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / invite_url / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • addedOutput schema / properties / key
        Added value: +{
        +  "properties": {
        +    "can_delegate": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "depth": {
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "kind": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "label": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "parent": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "scopes": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / key_age_s / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / links / properties / help / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / links / properties / plans / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / links / properties / status / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / links / properties / support / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / links / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / metadata_url / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / namespace / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / naming_rule_url / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / next / properties / tool / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / next / properties / why / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / next / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / onboarding / properties / claim_url / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / onboarding / properties / invite_url / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / onboarding / properties / invited_by / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / onboarding / properties / memory_hint / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / onboarding / properties / memory_line / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / onboarding / properties / note / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / onboarding / properties / shared_tools / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / onboarding / properties / tenant / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / onboarding / properties / url / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / onboarding / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / owner / properties / verified_at / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / owner / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / owner_verified / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • changedOutput schema / properties / plan / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / plan_since / type
        Removed value: -"null"
      • changedOutput schema / properties / resource / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / session_tenant / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / shared_tools / items / properties / name / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / shared_tools / items / properties / owner / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / shared_tools / items / properties / via / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / shared_tools / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • changedOutput schema / properties / tenant / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / last_seen / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / notes / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / since_you_left / properties / calls / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / since_you_left / properties / days / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / since_you_left / properties / inbox / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / since_you_left / properties / runs / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / properties / since_you_left / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedOutput schema / properties / welcome_back / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.