Skip to main content
Glama

Server Details

Your agent builds websites, APIs, automations and admin tools; Tessryx hosts them on your domain.

Ownership verified
Status
Healthy
Uptime
99.0% over 63 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
Tessryx
Claude
–

TDQS

A3.6/5.0

Scored across 97 tools

Disambiguation3/5

Each tool is documented in exceptional detail with explicit cross-references (e.g. 'use create_workflow_version for a wholesale rewrite', 'prefer patch_datafile'), but the set still contains many near-neighbours: create_X vs create_X_version vs update_X vs patch_X, publish_X vs create_X(publish=true), and get_workflow_run vs get_workflow_run_traces vs list_runs vs list_schedule_runs. An agent will frequently have to re-read descriptions to choose correctly across ~11 resource families that each expose the same 8-10 verb shapes.

Naming Consistency4/5

Overwhelmingly consistent verb_noun snake_case (list_schemas, create_datafile, publish_workflow, delete_schedule). Minor deviations exist: 'whoami' breaks the pattern, and a few verbs vary semantically for the same idea (set_visitor_sites vs update_custom_domain vs rename_app_slug), but overall the naming is predictable and greppable.

Tool Count1/5

97 tools is an extreme mismatch for a single MCP surface, well beyond the 50+ threshold for the lowest score. The per-resource versioning/list/publish/unpublish/delete matrix multiplies out mechanically, so much of the surface is predictable boilerplate an agent must sift through to find the right call.

Completeness4/5

Coverage is genuinely deep: full create/version/publish/unpublish/delete lifecycles for schemas, datafiles, api templates, workflows, endpoints, schedules and apps, plus execution, run traces, graph analysis, deployability checks, guides, and visitor management. The remaining gaps (secrets and asset uploads redirected to the dashboard, no custom-domain delete) are documented and intentional rather than dead ends.

Available Tools

97 tools
analyze_resourceAnalyze resourceA
Read-onlyIdempotent
Inspect

Check whether a resource and everything it depends on is sound — the deployability question. Pass 'hypothetical' to preview a change instead: hypothetical='delete' or 'unpublish' reports what would break WITHOUT changing anything (run it before deleting something other resources may use), and hypothetical='publish' checks whether the draft you are about to publish actually resolves. An APP is the usual subject: it walks every root the app contains (endpoints, schedules, domains) to the end of each chain and reports what would break. Returns findings {resource, path, severity, check, message}: errors are broken now (a reference that does not resolve, a dependency never published, a declared domain that routes elsewhere, a step naming a resource outside its workflow's scope, a call to a workflow that continues, which cannot run as a sub-workflow), warnings are risks (a published resource following @latest, a sub-workflow call cycle, a domain not yet verified, a sub-workflow step that the scope it runs under for one caller will refuse), info is advisory. deployable is true when there are no errors. Also reports incomplete_nodes: resources whose references are built at run time and so cannot be checked statically. For a non-root subject like a workflow, analysis starts there rather than from whatever reaches it, so severities are not weighted by reachability.

NameRequiredDescriptionDefault
kindYesthe kind of resource to analyze: app, dynamic_endpoint, schedule, custom_domain, workflow, api_template, datafile, schema, secret. An app is the usual subject
resourceYesslug of the resource, optionally with a version suffix (e.g. 'shop/storefront' or 'shop/storefront@latest'); a bare slug means @published. For a custom_domain this is the hostname
hypotheticalNoinstead of checking the resource as it is, evaluate a change you are considering: 'delete' or 'unpublish' report what would break (nothing is changed — this is a preview), 'publish' checks whether the DRAFT resolves and flags what already follows this at @published. Run this before a delete or a publish

Output Schema

NameRequiredDescription
infosYes
errorsYes
subjectYes
findingsYes
warningsYes
deployableYes
incomplete_nodesYes
reachability_knownYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description goes well beyond them: it enumerates what counts as error vs warning vs info, states deployable is true only with no errors, notes incomplete_nodes for run-time-built references, and warns that severities for non-root subjects are not weighted by reachability. No contradiction with readOnlyHint — the hypothetical modes explicitly change nothing.

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

Conciseness3/5

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

Front-loaded and dense with useful content, but the middle sentence is a single run-on enumeration of parenthetical examples that is hard to scan. The severity taxonomy would be far more usable as a short list; some examples (domain routing elsewhere, @latest following) earn their place, others pad the sentence.

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?

Covers subject scope, the hypothetical modes, the findings shape, severity semantics, the deployable flag, incomplete_nodes, and the reachability caveat for non-root subjects. Combined with an output schema, an agent has everything needed to call this correctly and interpret results.

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 baseline is 3; the description still adds meaning by framing hypothetical='delete'/'unpublish' as a no-op preview and 'publish' as a draft-resolution check, and by calling out app as the usual kind. It adds context but does not restate the slug/version syntax, which the schema already handles.

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+resource+question ('check whether a resource and everything it depends on is sound — the deployability question') and explains the subject kinds, including that an APP is the usual one and that roots are walked to the end of each chain. This is clearly distinguishable from siblings like validate_workflow or get_resource_graph, which are read/get or narrower validation tools.

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?

Explicit routing: 'Pass hypothetical to preview a change instead', 'run it before deleting something other resources may use', and hypothetical='publish' checks the draft you are about to publish. It also names the condition under which non-root subjects are analyzed, so the agent knows when this tool applies versus a plain get.

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

create_api_templateCreate API templateAInspect

Api template authoring — create a BRAND-NEW api template (mints the template + its version 1). Fetch the definition's JSON Schema with get_api_template_definition_schema and author against it. Iterate with execute_api_template before wiring the template into a workflow; pass publish=true to publish in the same step once you're happy. (To add a version to an api template that already exists, use create_api_template_version.)

NameRequiredDescriptionDefault
slugYesURL-safe slug, optionally hierarchical.
publishNoIf true, immediately publish the version this call creates (the common create-then-publish in one step). Defaults to false; omit to leave the version as an unpublished draft.
definitionYesThe api template definition, as a JSON object. Fetch the exact JSON Schema it must satisfy with get_api_template_definition_schema and author against it (or copy an existing one with the get_*_version tool). The owning service validates it on submit.
descriptionNoWhat external call this template makes.
display_nameNoHuman-readable name.

Output Schema

NameRequiredDescription
slugYes
versionYes
publishedYes
template_idYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already carry readOnly=false, destructive=false, idempotent=false, openWorld=true, so the safety profile is covered. The description adds real value beyond that: the call creates a template plus its first version, and by default that version is an unpublished draft unless publish=true. It doesn't mention what happens to the created template if definition validation fails, or whether the slug must be unique — a small residual gap.

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-loaded with the distinguishing fact (brand-new template + version 1) and free of filler. Minor redundancy: the instruction to fetch the definition JSON Schema with get_api_template_definition_schema repeats what the 'definition' schema description already says.

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?

For a create-with-nested-definition tool with an output schema (so return values need no explanation), the description covers the whole path: obtain schema, author, test with execute_api_template, publish in-line, or defer to the version tool. Nothing an agent needs to call it correctly is missing.

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% and every parameter is documented in-schema, so this is the baseline case. The description restates publish's create-then-publish meaning and points at the JSON Schema requirement for 'definition', but adds no format or constraint detail beyond the schema.

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 resource ('create a BRAND-NEW api template') plus the side effect that defines it ('mints the template + its version 1'). The parenthetical explicitly differentiates it from create_api_template_version, so an agent can route between the two without opening either 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?

Gives an ordered workflow: fetch the definition JSON Schema via get_api_template_definition_schema, author against it, iterate with execute_api_template, then optionally pass publish=true. It also names the exclusion case (adding a version to an existing template → create_api_template_version), which is exactly the alternative an agent could confuse this with.

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

create_api_template_versionCreate API template versionAInspect

Api template versioning — add a new version to an EXISTING api template (by template_id) to evolve an api template you already created. Author the new version's definition against the schema from get_api_template_definition_schema. Pass publish=true to publish this api template version immediately. (For a brand-new api template, use create_api_template.)

NameRequiredDescriptionDefault
publishNoIf true, immediately publish the version this call creates (the common create-then-publish in one step). Defaults to false; omit to leave the version as an unpublished draft.
definitionYesThe api template definition, as a JSON object. Fetch the exact JSON Schema it must satisfy with get_api_template_definition_schema and author against it (or copy an existing one with the get_*_version tool). The owning service validates it on submit.
template_idYesThe template id to add a version to.

Output Schema

NameRequiredDescription
slugYes
versionYes
publishedYes
template_idYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already establish non-read-only, non-idempotent, non-destructive, open-world behavior. The description adds meaningful context: publish=true publishes immediately, omission leaves a draft, and the owning service validates the definition on submit.

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?

The description is compact and front-loaded: it states the operation, scope, schema dependency, publish option, and alternative within a few dense sentences. No sentence is wasted.

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?

With an output schema present and annotations covering safety traits, the description supplies everything an agent needs: existing-template scope, required schema lookup, publish behavior, and the sibling to use for new templates.

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%, and the schema already explains template_id, definition, and publish in detail. The description reinforces the publish behavior and schema-authoring flow but does not add parameter syntax or semantics beyond what the schema provides.

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 resource: add a new version to an EXISTING api template by template_id. It clearly scopes the operation to existing templates and distinguishes itself from create_api_template for brand-new templates.

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 to use this tool for evolving an existing api template and directs the agent to create_api_template for a brand-new one. It also explains the publish=true option and the default draft behavior.

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

create_appCreate appAInspect

App authoring — create a BRAND-NEW app (mints the app + its version 1). Start here when building a page or an API bundle: choose the app's slug (its folder prefix, e.g. 'storefront'), then author each member resource under that prefix (storefront/page, storefront/products, storefront/checkout, …) so the app's prefix rule captures them automatically — you never hand-add members. The definition holds the membership selector (prefix rules + includes/excludes) and display; fetch its JSON Schema with get_app_definition_schema and author against it. An empty definition is a valid draft, but publishing requires a membership that selects something. Pass publish=true to publish v1 immediately. (To add a version to an existing app, use create_app_version.)

NameRequiredDescriptionDefault
slugYesUnique per-tenant slug; this is the app's folder prefix (hierarchical segments allowed, e.g. storefront or marketing/campaigns).
publishNoIf true, immediately publish the version this call creates (the common create-then-publish in one step). Defaults to false; omit to leave the version as an unpublished draft.
definitionYesThe app definition, as a JSON object. Fetch the exact JSON Schema it must satisfy with get_app_definition_schema and author against it (or copy an existing one with the get_*_version tool). The owning service validates it on submit.
descriptionNoWhat this app is (human + LLM-facing prose).
display_nameNoHuman-readable name.

Output Schema

NameRequiredDescription
slugYes
app_idYes
versionYes
publishedYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare the generic mutation profile (readOnly=false, destructive=false, non-idempotent, open-world); the description adds the consequential behavior: it mints both an app and version 1, membership is captured automatically by the prefix rule rather than hand-added, an empty definition is legal but publishing requires a non-empty membership, and publish=true publishes immediately.

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-loaded with the create action and the sibling exclusion, and nearly every clause carries information. It is dense with parentheticals and nested examples, which slightly taxes scanning, but nothing is filler.

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?

For a nested-object, non-idempotent creation tool with 5 params, the description covers the authoring loop, the validation source (get_app_definition_schema), the publish precondition, and the sibling alternative. Return values are covered by the output schema, so nothing material is missing.

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; the description climbs above it by explaining that slug is the folder prefix that drives membership capture and that publish=true is the common create-then-publish path. Those are consequences of the parameters, not just restatements of their types.

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 resource ('create a BRAND-NEW app') and immediately scopes it ('mints the app + its version 1'). It explicitly names the sibling it is not (create_app_version) so an agent can route without inspecting schemas.

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?

Gives an explicit entry point ('Start here when building a page or an API bundle'), names the prerequisite workflow (get_app_definition_schema, then author under the prefix), and names the alternative tool for adding a version to an existing app. It also flags when the result is publishable vs. a valid empty draft.

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

create_app_versionCreate app versionAInspect

App versioning — add a new version to an EXISTING app (by app_id) to change its membership selector (prefix rules, includes/excludes) or display. Author the new version's definition against the schema from get_app_definition_schema. Pass publish=true to make it the live manifest immediately. (For a brand-new app, use create_app.)

NameRequiredDescriptionDefault
app_idYesThe app id to add a version to.
publishNoIf true, immediately publish the version this call creates (the common create-then-publish in one step). Defaults to false; omit to leave the version as an unpublished draft.
definitionYesThe app definition, as a JSON object. Fetch the exact JSON Schema it must satisfy with get_app_definition_schema and author against it (or copy an existing one with the get_*_version tool). The owning service validates it on submit.

Output Schema

NameRequiredDescription
slugYes
app_idYes
versionYes
publishedYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnly=false, destructive=false, openWorld=true, idempotent=false. The description adds value beyond them: it clarifies that publish=true makes the version the live manifest immediately while omitting it leaves an unpublished draft, and that the service validates the definition on submit. It stops short of saying whether an unpublish/rollback path exists once a version goes live.

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 sentences, front-loaded with the core operation, then the schema-source instruction, then the publish switch, then the sibling exclusion. No filler; every clause carries routing or behavioral information.

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?

For a mutation against a nested free-form object, the description supplies the missing pieces: where the JSON Schema lives, that it is validated on submit, what publish does, and which sibling handles brand-new apps. Return values are covered by the existing output schema, so nothing material is left unexplained.

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 real meaning: it ties publish to its live-manifest consequence and tells the caller where to obtain the definition contract (get_app_definition_schema, or copy via get_*_version). That is more than a restatement of the schema text.

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 resource ('add a new version to an EXISTING app (by app_id)') and scopes it to changing the membership selector or display. It also explicitly disambiguates from the sibling create_app, so an agent can route without opening either 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?

Gives the condition for use (modifying an existing app's selector/display), names the alternative for the opposite case ('For a brand-new app, use create_app'), and routes to get_app_definition_schema for authoring. The publish=true vs. draft default fork is spelled out as a decision the caller makes.

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

create_custom_domainCreate custom domainAInspect

Claim a custom hostname for this tenant and generate its DNS challenge. The claim alone grants NOTHING until ownership is proven — it returns TWO DNS records (an ownership TXT and a permanent routing CNAME) in dns_records that the customer must add at their DNS provider. Present those records to the human, wait for them to add them, then call verify_custom_domain. slug_prefix/root_endpoint are optional here and are usually set later with update_custom_domain (after the domain verifies).

NameRequiredDescriptionDefault
hostnameYesThe customer's fully-qualified hostname, e.g. shop.customer.com. Immutable — it is the domain's identity.
slug_prefixNoOptional. The endpoint subtree this domain mounts (an isolation boundary). Usually the slug prefix of the app this domain should front. Can be set later with update_custom_domain.
display_nameNoOptional human label, e.g. 'Marketing site'.
root_endpointNoOptional. What the domain root ('/') serves, RELATIVE to slug_prefix. Can be set later with update_custom_domain.

Output Schema

NameRequiredDescription
statusYes
hostnameYes
dns_recordsNo
slug_prefixNo
verified_atNo
activated_atNo
display_nameNo
root_endpointNo
last_check_messageNo
cert_status_messageNo

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only say readOnlyHint=false, idempotentHint=false, openWorldHint=true; the description adds the crucial behavioral facts an agent cannot infer: the claim grants nothing until ownership is proven, the response contains exactly two DNS records (ownership TXT plus permanent routing CNAME) in dns_records, and a human must act before the flow advances.

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?

Four tightly packed sentences, front-loaded with the core action, then the critical caveat ('grants NOTHING until ownership is proven'), then the next-step routing. No filler and every sentence carries a distinct operational instruction.

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?

Covers the full call lifecycle for a non-idempotent, human-in-the-loop mutation: what is created, what comes back, who must act, and which follow-up tool to call. With an output schema present, return-value detail is already handled, so nothing material is missing.

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 prioritization the schema does not: slug_prefix and root_endpoint are optional 'here' and are usually deferred to update_custom_domain after verification, which steers the agent to send only hostname initially.

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+resource ('claim a custom hostname for this tenant') plus the side effect (generating a DNS challenge), and explicitly distinguishes itself from the sibling verify_custom_domain and update_custom_domain. An agent can tell exactly what this tool does and does not accomplish without opening the 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?

Gives an explicit ordered workflow: present the returned DNS records to the human, wait for them to be added, then call verify_custom_domain. It also names the alternative path for slug_prefix/root_endpoint ('usually set later with update_custom_domain'), so the agent knows which params to defer and which sibling to use.

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

create_datafileCreate datafileAInspect

Create a new datafile holding a JSON object. A datafile MUST be bound to a schema (schema_id) — the schema validates the JSON and generates the human editor; author or pick one with the schema tools first. Property order in json is preserved verbatim. Publish it with publish_datafile to serve it from the CDN.

NameRequiredDescriptionDefault
jsonYesThe JSON object this datafile holds. Property order is preserved verbatim.
slugYesURL-safe slug, optionally hierarchical.
schema_idYesId of the schema this datafile's JSON is validated against (required). The datafile's content must conform to it, and the schema generates the human editing form.
descriptionNoWhat this datafile holds.
display_nameYesHuman-readable name. Required (cannot be blank).
use_latest_schemaNoValidate against the latest (draft) schema version instead of the published one.

Output Schema

NameRequiredDescription
jsonNo
slugYes
schema_idNo
datafile_idYes
descriptionYes
display_nameYes
content_sha256No
last_published_pathNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare the mutation profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true), so the description only needs to add context. It adds genuinely non-obvious behavior: schema validation is mandatory, property order in json is preserved verbatim, and creation does not itself publish to the CDN.

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 short sentences, front-loaded with purpose and prerequisite, with no filler. Each sentence adds useful operational context rather than restating the title.

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?

The tool has an output schema, so return values need not be explained. The description covers the key workflow around schema binding, verbatim property ordering, and the separate publish step; it could say more about slug uniqueness or validation failure behavior, but it is nearly complete for a create tool.

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 baseline is 3. The description reinforces that schema_id is mandatory and must be authored or selected first, but most parameter meaning is already carried by the schema itself.

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?

The first sentence gives a specific verb and resource ("Create a new datafile") and narrows the scope to one holding a JSON object. It is clearly distinguishable from create_schema, update_datafile, and publish_datafile, which are named or implied as separate concerns.

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?

It explicitly states the prerequisite (a datafile MUST be bound to schema_id and schema tools should be used first) and gives the downstream step (publish_datafile to serve from CDN). It does not explicitly say when to use update_datafile instead of create_datafile, but the create-vs-publish routing is clear.

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

create_dynamic_endpointCreate dynamic endpointAInspect

Dynamic endpoint authoring — create a BRAND-NEW dynamic endpoint (mints the endpoint + its version 1). The definition binds the endpoint to a workflow (by versioned-slug reference) plus a cache setting; fetch its JSON Schema with get_dynamic_endpoint_definition_schema and author against it. Pass publish=true to take the endpoint live in one step, or publish later with publish_dynamic_endpoint. (To add a version to a dynamic endpoint that already exists, use create_dynamic_endpoint_version.)

NameRequiredDescriptionDefault
slugYesURL-safe slug; becomes the path on the tenant's subdomain in the public URL (https://<tenant>.tessryx.app/<slug>). Segments are lowercase letters/numbers/hyphens/dots, or :param placeholders. Dots let you serve spec-mandated files at their exact paths — 'robots.txt', 'sitemap.xml', 'favicon.ico', '.well-known/security.txt'. :param segments do path-parameter routing, e.g. 'post/:slug' serves every /post/<value> from one endpoint — pair it with the definition's input_transform to turn params into the workflow $input (the workflow's input_schema then validates, so a bad URL returns 404). The last segment may instead be a *name catch-all taking the rest of the address: 'docs/*path' serves every /docs/<a>/<b>/... with params.path = 'a/b'; it needs a fixed first segment, and the endpoint needs a cache setting, since every distinct address it serves is a run. A segment may not be '.' or '..'.
publishNoIf true, immediately publish the version this call creates (the common create-then-publish in one step). Defaults to false; omit to leave the version as an unpublished draft.
definitionYesThe dynamic endpoint definition, as a JSON object. Fetch the exact JSON Schema it must satisfy with get_dynamic_endpoint_definition_schema and author against it (or copy an existing one with the get_*_version tool). The owning service validates it on submit.
descriptionNoWhat this endpoint serves.
content_typeNoThe response Content-Type this endpoint serves (e.g. text/html, application/json). When set, it is authoritative — set text/html here for a page so it isn't served as text/plain. Leave blank to use whatever content-type the workflow returns.
display_nameNoHuman-readable name.

Output Schema

NameRequiredDescription
noteNo
slugYes
versionYes
publishedYes
public_urlNo
endpoint_idYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=false and destructiveHint=false, so the safety profile is covered. The description adds real context beyond that: the call mints a version 1 alongside the endpoint, the definition binds a workflow by versioned-slug reference plus a cache setting, and publish=true immediately takes the endpoint live. It does not mention that a newly created endpoint is public/open-world at the tenant subdomain or what happens to the slug after creation, which keeps it below 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?

The core identity and the two key routing facts (publish shortcut, sibling for new versions) are front-loaded, with the exclusionary parenthetical last. Sentences are dense but every clause carries information; it is a little long-winded around the definition/workflow binding.

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 creation tool with a nested definition object and an output schema, the description covers what is created, how the definition is authored, and the publish path. Return-value details are legitimately left to the output schema, and the remaining gap (post-creation slug mutability, visibility of the live endpoint) is minor.

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 baseline is 3 and the schema already carries the heavy slug, publish and content_type semantics. The description adds meaning beyond the schema only for publish (one-step go-live) and definition (must satisfy the fetched JSON Schema and reference a workflow version plus cache setting), which is useful but modest given how much detail the schema already supplies.

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 resource ('create a BRAND-NEW dynamic endpoint') and clarifies that it mints both the endpoint and its version 1. It explicitly distinguishes itself from the closest sibling, create_dynamic_endpoint_version, so an agent can pick correctly without opening a 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?

Gives explicit when-to-use branches: pass publish=true for one-step go-live, or publish later with publish_dynamic_endpoint, and use create_dynamic_endpoint_version instead when the endpoint already exists. It also points to get_dynamic_endpoint_definition_schema as the prerequisite for authoring the definition.

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

create_dynamic_endpoint_versionCreate dynamic endpoint versionAInspect

Dynamic endpoint versioning — add a new version to an EXISTING dynamic endpoint (by endpoint_id) to evolve a dynamic endpoint you already created. Author the new version's definition against the schema from get_dynamic_endpoint_definition_schema. Pass publish=true to take this dynamic endpoint version live immediately. (For a brand-new dynamic endpoint, use create_dynamic_endpoint.)

NameRequiredDescriptionDefault
publishNoIf true, immediately publish the version this call creates (the common create-then-publish in one step). Defaults to false; omit to leave the version as an unpublished draft.
definitionYesThe dynamic endpoint definition, as a JSON object. Fetch the exact JSON Schema it must satisfy with get_dynamic_endpoint_definition_schema and author against it (or copy an existing one with the get_*_version tool). The owning service validates it on submit.
endpoint_idYesThe endpoint id to add a version to.

Output Schema

NameRequiredDescription
noteNo
slugYes
versionYes
publishedYes
public_urlNo
endpoint_idYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true); the description adds genuinely useful context beyond them: the version is added to an existing endpoint rather than creating one, publish defaults to draft, and the owning service validates the definition on submit. It stops short of describing failure/rollback behavior or what the created version record contains, which keeps it from 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?

A single tight paragraph with the core action and the existing-vs-new distinction front-loaded, followed by the schema-authoring pointer and the publish shortcut. Every clause carries information, though the parenthetical alternative could be folded more compactly.

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?

With an output schema present, annotations covering safety, and full schema coverage, the description supplies exactly what's missing: which sibling to use instead, how to obtain the definition schema, and the publish shortcut. Nothing an agent needs to invoke this correctly is absent.

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 all three parameters are already documented in the schema, including publish defaulting to false and the definition object's validation. The description's 'Pass publish=true to take this dynamic endpoint version live immediately' largely restates the publish parameter's schema text, so the baseline of 3 applies.

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 resource ('add a new version to an EXISTING dynamic endpoint') and scopes it to an endpoint_id, immediately separating it from the brand-new-endpoint sibling create_dynamic_endpoint. An agent can distinguish it from the version-creation siblings (create_app_version, create_schema_version, etc.) by the resource named.

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 names when to use it ('evolve a dynamic endpoint you already created'), when not to ('For a brand-new dynamic endpoint, use create_dynamic_endpoint'), and points at the prerequisite tool get_dynamic_endpoint_definition_schema for authoring the definition. The publish=true shortcut is also called out as an alternative to a separate publish step.

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

create_scheduleCreate scheduleAInspect

Schedule authoring — create a BRAND-NEW schedule (mints the schedule + its version 1). The definition names a workflow (versioned-slug ref, published/latest), a recurrence (EITHER a 5-field cron + IANA timezone, OR an 'every N minutes/hours' interval), and an optional static input bound as the workflow's $input on every fire; fetch its JSON Schema with get_schedule_definition_schema and author against it. Pass publish=true to activate it (start firing) in one step, or publish later with publish_schedule. (To add a version to a schedule that already exists, use create_schedule_version.)

NameRequiredDescriptionDefault
slugYesUnique per-tenant slug; hierarchical path segments allowed (e.g. reports/daily-summary).
publishNoIf true, immediately publish the version this call creates (the common create-then-publish in one step). Defaults to false; omit to leave the version as an unpublished draft.
definitionYesThe schedule definition, as a JSON object. Fetch the exact JSON Schema it must satisfy with get_schedule_definition_schema and author against it (or copy an existing one with the get_*_version tool). The owning service validates it on submit.
descriptionNoWhat this schedule does (human + LLM-facing prose).
display_nameNoHuman-readable name.

Output Schema

NameRequiredDescription
slugYes
versionYes
publishedYes
schedule_idYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, and openWorldHint=true. The description adds meaningful behavioral context beyond those annotations: it mints both the schedule and version 1, publish=true starts firing, omitted publish leaves a draft, and the owning service validates the definition on submit. It does not address duplicate-slug conflicts or permission requirements, but the key side effects and lifecycle behavior are clear.

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?

The description is front-loaded with the core action and is dense but purposeful. The final parenthetical alternative is useful, though the single long sentence makes it slightly less scannable than it could be.

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?

Given the nested definition, versioning model, and publish semantics, the description is complete enough for an agent to call the tool correctly. It points to get_schedule_definition_schema for the nested JSON Schema, and an output schema exists so return values do not need to be described.

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 schema already documents the five top-level parameters. The description still adds substantial meaning for the nested definition object by explaining the workflow reference, cron-plus-timezone versus interval recurrence, and optional static input bound as $input on every fire.

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?

The description states a specific verb and resource: create a brand-new schedule and mint its version 1. It explicitly distinguishes this from create_schedule_version and publish_schedule, so the agent can select the correct sibling without opening schemas.

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?

It gives explicit routing: use this tool for a new schedule, use create_schedule_version when adding a version to an existing schedule, and use publish_schedule when not publishing inline. It also explains the publish=true one-step activation versus leaving the version as a draft.

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

create_schedule_versionCreate schedule versionAInspect

Schedule versioning — add a new version to an EXISTING schedule (by schedule_id) to change its cron, timezone, workflow, or input. Author the new version's definition against the schema from get_schedule_definition_schema. Pass publish=true to activate this version immediately. (For a brand-new schedule, use create_schedule.)

NameRequiredDescriptionDefault
publishNoIf true, immediately publish the version this call creates (the common create-then-publish in one step). Defaults to false; omit to leave the version as an unpublished draft.
definitionYesThe schedule definition, as a JSON object. Fetch the exact JSON Schema it must satisfy with get_schedule_definition_schema and author against it (or copy an existing one with the get_*_version tool). The owning service validates it on submit.
schedule_idYesThe schedule id to add a version to.

Output Schema

NameRequiredDescription
slugYes
versionYes
publishedYes
schedule_idYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare the non-read-only, non-destructive, non-idempotent profile; the description adds real value by explaining that publish defaults to a draft and that the owning service validates the definition on submit. It does not warn that repeated calls create additional versions (relevant given idempotentHint=false), which is the main behavioral gap.

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?

A single tight paragraph with the existing-vs-new distinction front-loaded and the actionable guidance (schema tool, publish flag, alternative tool) in descending order of importance. The parenthetical aside is the only mildly interruptive element.

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?

With an output schema present, the description needn't explain returns, and it covers prerequisites, validation, draft-vs-publish, and the sibling alternative. What remains unstated is version lineage (whether the new version inherits the prior definition) and the consequence of calling it repeatedly.

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 explains publish, definition, and schedule_id thoroughly. The description only restates the publish=true behavior and the definition-authoring route, adding little beyond the structured fields; baseline 3 applies.

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?

The description gives a specific verb and resource ('add a new version to an EXISTING schedule') and explicitly scopes the operation by schedule_id. It also names the sibling it is not (create_schedule for brand-new schedules), so an agent can separate it from create_schedule and the publish_* family.

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?

It states the prerequisite (an existing schedule_id) and routes brand-new schedules to create_schedule, and it points at get_schedule_definition_schema for authoring. It stops short of saying how this differs from using publish_schedule or create_schedule_version-style flows when only activation is desired, so it is clear but not exhaustive.

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

create_schemaCreate schemaAInspect

Schema authoring — create a BRAND-NEW schema (mints the schema + its version 1). json_schema is the JSON Schema body datafiles bound to this schema (by schema_id) are validated against; property order is preserved exactly — it sets the field order of the generated editor, so author it in the order you want humans to see. Media uploads, entity references, cron and colors need an x-tessryx-ui hint or they render as bare text — get_guide("schemas"). Pass publish=true to publish schema version 1 immediately (the version datafiles resolve by default), or later with publish_schema. (To add a version to a schema that already exists, use create_schema_version.)

NameRequiredDescriptionDefault
slugYesURL-safe slug, optionally hierarchical.
publishNoIf true, immediately publish the version this call creates (the common create-then-publish in one step). Defaults to false; omit to leave the version as an unpublished draft.
descriptionNoWhat this schema describes.
json_schemaYesThe JSON Schema body datafiles validate against; becomes version 1. Property order is preserved verbatim.
display_nameYesHuman-readable name. Required (cannot be blank).

Output Schema

NameRequiredDescription
slugYes
versionYes
publishedYes
schema_idYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare readOnly=false, idempotent=false, destructive=false, but the description adds real substance beyond them: the call mints a schema plus version 1, property order is preserved verbatim and drives editor field order, and omitting publish leaves an unpublished draft. It stops short of covering failure modes such as slug collisions or permission requirements, which matters for a non-idempotent creation tool.

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?

The core identity ('create a BRAND-NEW schema') is front-loaded and every clause carries information, but the description is a single dense block of em-dash-separated fragments that is harder to scan than it could be. Nothing is redundant, though the parenthetical about create_schema_version could stand alone more cleanly.

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?

With an output schema present, return values need no explanation, and the description covers the creation semantics, publish flow, and json_schema authoring constraints for a 5-parameter tool with nested objects. Missing: behavior on duplicate slug or validation failure of the supplied json_schema, which an agent creating a resource would want to know.

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 baseline is 3, but the description goes beyond the schema for json_schema by explaining the consequence of property order (it sets editor field order) and that media/entity/cron/color fields need x-tessryx-ui hints. The publish parameter's effect on version resolution is also clarified. Minor gap: 'hierarchical' slug syntax is left to the schema.

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 (create) and resource (schema) with a precise scope: 'BRAND-NEW schema (mints the schema + its version 1)'. It also explicitly distinguishes itself from create_schema_version and publish_schema, so an agent can route correctly without opening a 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?

Names the alternative directly ('To add a version to a schema that already exists, use create_schema_version') and explains the two publish paths: publish=true now versus publish_schema later. It also routes to get_guide("schemas") when x-tessryx-ui hints are needed, which is a genuine when-to-use pointer.

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

create_schema_versionCreate schema versionAInspect

Schema versioning — add a new version to an EXISTING schema (by schema_id) to evolve a schema you already created. Property order in the new schema version is preserved verbatim (it drives the generated editor's field order). Media uploads, entity references, cron and colors need an x-tessryx-ui hint or they render as bare text — get_guide("schemas"). publish_schema (or publish=true here) chooses which schema version is live. (For a brand-new schema, use create_schema.)

NameRequiredDescriptionDefault
publishNoIf true, immediately publish the version this call creates (the common create-then-publish in one step). Defaults to false; omit to leave the version as an unpublished draft.
schema_idYesThe schema id to add a version to.
json_schemaYesThe JSON Schema body for the new immutable version. Property order is preserved verbatim.

Output Schema

NameRequiredDescription
slugYes
versionYes
publishedYes
schema_idYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and idempotentHint=false, so the description only needs to add context — which it does substantially: property order is preserved verbatim and drives editor field order, versions are immutable, an x-tessryx-ui hint is required for media/entity-reference/cron/color fields, and publish controls which version is live. These are non-obvious behavioral consequences an agent could not infer from the schema.

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?

The key scoping distinction is front-loaded in the first sentence, and every sentence carries information. It is dense — the x-tessryx-ui sentence is a parenthetical detour — but nothing is padding, and the closing exclusion is well placed.

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?

With annotations, a full schema description, and an output schema, the description covers the mutation's semantics, ordering side effect, highlighting prerequisite, and publish behavior. It omits what happens on invalid json_schema or a nonexistent schema_id, which is the main remaining gap for a write operation.

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 baseline is 3; the description adds real meaning on top — that publish=true is the one-step create-then-publish path and determines which version is live, and why property order in json_schema matters. It stops short of describing failure or validation behavior for a malformed json_schema.

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 resource ('add a new version to an EXISTING schema') and immediately scopes it to existing schemas by schema_id. It explicitly names the sibling it is not ('For a brand-new schema, use create_schema'), so an agent can distinguish it from create_schema and publish_schema without opening a 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?

Gives explicit when-to-use (evolve an existing schema), when-not (brand-new schema → create_schema), and names the alternative for publishing (publish_schema, or publish=true inline). It also routes to get_guide("schemas") for the x-tessryx-ui requirement, which is a concrete prerequisite condition.

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

create_workflowCreate workflowAInspect

Workflow authoring — create a BRAND-NEW workflow (mints the workflow + its version 1). A workflow composes blocks (api_call, sub_workflow, data) over $input and returns {content_type, output}. Fetch the definition's JSON Schema with get_workflow_definition_schema and author against it. The definition is statically validated BEFORE it is written: on error-severity findings nothing is minted (valid=false, created=false, findings returned) — so you never need a separate validate_workflow pass. On success the result also carries any advisory (warning/info) findings, e.g. a bare identifier that should be $-prefixed, or literal text better authored with language "literal". Pass publish=true to create and publish in one step. (To add a version to a workflow that already exists, use create_workflow_version.)

NameRequiredDescriptionDefault
slugYesURL-safe slug, optionally hierarchical (e.g. reports/daily).
publishNoIf true, immediately publish the version this call creates (the common create-then-publish in one step). Defaults to false; omit to leave the version as an unpublished draft.
definitionYesThe workflow definition, as a JSON object. Fetch the exact JSON Schema it must satisfy with get_workflow_definition_schema and author against it (or copy an existing one with the get_*_version tool). The owning service validates it on submit.
descriptionNoWhat this workflow does.
display_nameNoHuman-readable name.

Output Schema

NameRequiredDescription
slugNo
validYes
createdYes
versionNo
findingsNo
publishedYes
workflow_idNo

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses that the definition is statically validated before write, that error-severity findings abort creation with valid=false, created=false and returned findings, and that advisory findings are surfaced on success. Annotations only cover the safety profile (non-readonly, non-destructive, non-idempotent), so this adds real behavioral value an agent could not infer.

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 identity and the new-vs-version distinction, then layers validation semantics and the publish shortcut. Dense but every sentence carries operational meaning; the parenthetical advisory examples add minor bulk but aid authoring.

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?

For a nested-object mutation tool with an output schema, it covers what an agent needs: schema-fetch workflow (get_workflow_definition_schema), validation timing, failure result fields, and return shape {content_type, output}. Little is left to guess.

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; the description earns above baseline by explaining the consequence of the definition parameter (pre-write validation, failure semantics) and reinforcing the publish=true one-step behavior. It doesn't add much on slug/display_name/description beyond the schema, but the definition semantics are genuinely informative.

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 resource ('create a BRAND-NEW workflow'), clarifies that it mints the workflow plus version 1, and describes what a workflow composes. It explicitly distinguishes itself from create_workflow_version in the closing sentence, so an agent can route without opening either 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 names the alternative for the adjacent case ('To add a version to a workflow that already exists, use create_workflow_version') and tells the agent a separate validate_workflow pass is unnecessary because validation runs inline. It also documents the publish=true shortcut for create-then-publish.

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

create_workflow_versionCreate workflow versionAInspect

Workflow versioning — add a new version to an EXISTING workflow (by workflow_id) to evolve a workflow you already created. Author the new version's definition against the schema from get_workflow_definition_schema. Like create_workflow, the definition is statically validated BEFORE it is written: error-severity findings mint nothing (valid=false, created=false), and a successful write returns any advisory (warning/info) findings. Pass publish=true to publish this workflow version immediately, or later with publish_workflow. (For a brand-new workflow, use create_workflow.)

NameRequiredDescriptionDefault
publishNoIf true, immediately publish the version this call creates (the common create-then-publish in one step). Defaults to false; omit to leave the version as an unpublished draft.
definitionYesThe workflow definition, as a JSON object. Fetch the exact JSON Schema it must satisfy with get_workflow_definition_schema and author against it (or copy an existing one with the get_*_version tool). The owning service validates it on submit.
workflow_idYesThe workflow id to add a version to.

Output Schema

NameRequiredDescription
slugNo
validYes
createdYes
versionNo
findingsNo
publishedYes
workflow_idNo

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only cover safety/read-write hints; the description adds substantial behavior: static validation before write, error findings produce valid=false/created=false, successful writes surface advisory findings, and the publish flag's effect. This is exactly the kind of transactional detail annotations cannot express.

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 action and constraint, then layers validation behavior and alternatives. Dense but every sentence carries routing or behavior information; only the trailing parenthetical is mildly redundant with the opening scope.

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?

For a nested-object mutation with an output schema present, the description covers the prerequisite schema fetch, validation outcomes, failure modes, and publishing path. Nothing an agent needs to invoke it correctly is missing.

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 already 100%, so baseline is 3; the description adds real value by explaining the definition must satisfy get_workflow_definition_schema, the pre-write validation contract, and the create-then-publish semantics of publish. It stops short of enumerating each parameter but compensates meaningfully above the schema.

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+resource ('add a new version to an EXISTING workflow') and explicitly scopes it against the sibling create_workflow ('For a brand-new workflow, use create_workflow'). An agent can distinguish it from create_workflow and publish_workflow 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?

Gives explicit when-to-use (evolve an existing workflow), when-not (brand-new workflow → create_workflow), and the in-step alternative for publishing (publish=true vs later publish_workflow). All routing decisions are named.

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

delete_api_templateDelete API templateA
Destructive
Inspect

Permanently delete an api template and all its versions. Cannot be undone; a workflow api_call that references it fails cleanly at run time.

NameRequiredDescriptionDefault
template_idYesthe api template id to delete

Output Schema

NameRequiredDescription
idYes
deletedYes

TDQS

A4/5.0
Behavior4/5

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

The annotations already flag destructiveHint=true and idempotentHint=false, so the safety profile is covered; the description still earns credit for two things the annotations do not say: that all versions are removed along with the template, and that a referencing workflow api_call fails cleanly at run time. It stops short of disclosing permission requirements or whether the template must be unpublished first, which would be needed for 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.

Conciseness5/5

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

Two short sentences, front-loaded with the action and its scope, then the irreversibility and the downstream consequence. No filler, no restatement of the title, and every clause carries new information.

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?

With annotations covering the safety profile and an output schema covering the response, the description only needs to explain scope and consequences, which it does well (all versions, irreversible, breaks referencing api_calls). The one real gap is preconditions/permissions for a destructive, non-idempotent operation, which keeps it off a 5.

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?

There is a single required string parameter with 100% schema description coverage, so the schema already tells the agent everything ("the api template id to delete"). The description adds no format, sourcing hint (e.g., get it from list_api_templates), or constraint beyond what the schema provides, so the baseline 3 applies.

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?

The description opens with a specific verb and resource ("Permanently delete an api template") and adds the cascading scope ("and all its versions"), which tells an agent exactly what this removes. Against siblings like delete_app or delete_workflow, the resource noun is unambiguous, and against unpublish_api_template the word 'Permanently' does the differentiating work.

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?

Usage is only implied: the agent can infer 'call this when you want the template gone for good' from 'Permanently delete' and 'Cannot be undone'. There is no explicit when-to-use, no named alternative (e.g., unpublish_api_template or update_api_template to retire without destroying), and no precondition such as the template needing to be unpublished first.

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

delete_appDelete appA
Destructive
Inspect

Permanently delete an app and all its versions. This cannot be undone. It deletes only the app (the lens) — its member resources are untouched and continue to exist on their own. To simply hide the app without deleting, use unpublish_app.

NameRequiredDescriptionDefault
app_idYesthe app id to delete permanently

Output Schema

NameRequiredDescription
idYes
deletedYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true, but the description adds the non-obvious behavior that deletion is irreversible and, crucially, scoped: member resources are untouched and persist independently. That scope disclosure goes well beyond what the annotations or schema convey.

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 short sentences, front-loaded with the irreversible delete and its scope, then the alternative. Every sentence earns its place with no redundancy.

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?

Output schema exists and annotations carry the safety/idempotency profile, so the description needn't explain returns. Combined with the scope and alternative guidance, nothing needed to call this correctly is missing.

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?

Only one parameter and schema coverage is 100%, so the schema fully documents app_id. The description adds no syntax or format detail beyond 'the app id to delete permanently', so the baseline 3 applies.

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 resource ('Permanently delete an app and all its versions') and immediately distinguishes it from the sibling unpublish_app. An agent can tell exactly what this does without opening the 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 names the alternative ('To simply hide the app without deleting, use unpublish_app'), giving the condition that routes an agent to the correct tool. When-to-use and when-to-use-something-else are both covered.

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

delete_datafileDelete datafileA
Destructive
Inspect

Permanently delete a datafile (unpublishing it from the CDN first if published). Cannot be undone; anything referencing it is left dangling and degrades.

NameRequiredDescriptionDefault
datafile_idYesthe datafile id to delete

Output Schema

NameRequiredDescription
idYes
deletedYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is known; the description adds real substance on top by disclosing the side effect of CDN unpublishing and the irreversible dangling-reference consequence. It stops short of saying what a second call does or whether missing IDs error, which matters given idempotentHint=false.

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 tight sentences: the verb and its CDN side effect come first, the irreversible consequence second. No filler, no restatement of the title.

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?

Return values are covered by the output schema and the destructive semantics plus cascade behavior are spelled out, which is what an agent most needs for a delete. Minor gap: nothing on error behavior for a nonexistent ID or on repeat calls, notable given the non-idempotent annotation.

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?

Single required parameter with 100% schema description coverage, so the schema fully documents datafile_id. The description adds no format, sourcing, or lookup guidance beyond that, which is the expected baseline when the schema does the work.

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?

Specific verb+resource ("Permanently delete a datafile") with the key qualifier that CDN unpublishing is folded in. It implicitly distinguishes itself from the unpublish_datafile sibling via the parenthetical, but never names that sibling outright, so an agent must infer the boundary.

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 description implies when this is appropriate (permanent removal, not just unpublishing from the CDN), but it never explicitly says "to merely take offline use unpublish_datafile" or states prerequisites such as required permissions or whether the datafile must be unpublished first. Usage context is implied rather than stated.

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

delete_dynamic_endpointDelete dynamic endpointA
Destructive
Inspect

Permanently delete a dynamic endpoint. Unlike unpublish, this removes the resource entirely — it no longer appears in list_dynamic_endpoints. Cannot be undone. Nothing purges cached copies: the edge can keep serving its copy of the public URL until the endpoint's s_maxage_seconds run out.

NameRequiredDescriptionDefault
endpoint_idYesthe endpoint id to delete

Output Schema

NameRequiredDescription
idYes
deletedYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true and idempotentHint=false, so the description could have coasted; instead it adds irreversibility ('Cannot be undone') and, importantly, the non-obvious fact that edge caches keep serving the public URL until s_maxage_seconds expires. That cache-staleness caveat is a genuine behavioral disclosure unavailable from any structured field.

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 short sentences, zero waste, and the irreversible/cache caveats are front-loaded right after the core action. Each sentence carries distinct information that an agent needs before calling it.

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?

The tool has an output schema and fully annotated safety profile, and the description covers everything left: permanence, list visibility, non-recoverability, and cache propagation lag. Nothing an agent needs in order to call this correctly is missing.

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?

One parameter with 100% schema description coverage, so the schema already documents endpoint_id ('the endpoint id to delete'). The description adds nothing parameter-specific, which is acceptable but deserves only baseline credit.

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 resource ('Permanently delete a dynamic endpoint') and immediately contrasts it with the nearest alternative operation, unpublish. An agent can distinguish it from unpublish_dynamic_endpoint and delete_dynamic_endpoint's other siblings without opening a schema.

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?

Explicitly names the alternative operation ('Unlike unpublish, this removes the resource entirely') and gives the observable consequence ('no longer appears in list_dynamic_endpoints'), which effectively communicates when to pick this over unpublish. It stops short of stating a positive selection criterion such as 'use only when you are sure the endpoint will never be needed', so not a 5.

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

delete_scheduleDelete scheduleA
Destructive
Inspect

Permanently delete a schedule and all its versions and run history. This cannot be undone. To simply stop it firing without deleting, use unpublish_schedule.

NameRequiredDescriptionDefault
schedule_idYesthe schedule id to delete permanently

Output Schema

NameRequiredDescription
idYes
deletedYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, so the safety profile is covered. The description adds material value beyond that by disclosing what is destroyed (versions and run history) and that the action is irreversible. It does not mention required permissions, a minor omission.

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 short sentences, front-loaded with the destructive verb and cascade scope, then irreversibility, then the alternative. No filler sentences.

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?

For a destructive mutation with an output schema, the agent needs cascade scope, irreversibility, and an escape hatch to a safer sibling – all present. Nothing essential is missing.

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% and the single parameter is documented in-schema as 'the schedule id to delete permanently.' The description adds no syntax or format detail beyond the schema, so the baseline 3 applies.

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?

Specific verb 'permanently delete' plus resource 'schedule' and explicit cascade scope ('all its versions and run history'). It also names the sibling it is not (unpublish_schedule), so the agent can distinguish it without opening a 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 routes the agent to the alternative when the goal is only to stop firing: 'use unpublish_schedule.' That is a clear when-to-use/when-to-use-instead statement rather than implied usage.

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

delete_schemaDelete schemaA
Destructive
Inspect

Permanently delete a schema and all its versions. Cannot be undone; datafiles or workflows bound to it keep the dangling reference and simply skip schema validation.

NameRequiredDescriptionDefault
schema_idYesthe schema id to delete

Output Schema

NameRequiredDescription
idYes
deletedYes

TDQS

A4/5.0
Behavior4/5

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

The annotations already declare destructiveHint=true and idempotentHint=false, but the description adds material context beyond them: the deletion is irreversible, it spans all versions, and existing datafiles/workflows retain dangling references and silently skip validation. That downstream side effect is exactly the kind of consequence an agent cannot get from the annotations.

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 sentences, zero filler, and the irreversibility warning is front-loaded right after the action statement. The dangling-reference caveat earns its place because it is non-obvious behavior.

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?

Output schema exists, so return values need no explanation, and the annotations plus description together cover safety, scope, and side effects. The only gap is whether deletion fails or proceeds when resources are bound, which the description only partially answers with 'keep the dangling reference'.

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?

The single schema_id parameter is fully documented in the schema itself (100% coverage), and the description adds nothing about its format or where to obtain it. Baseline 3 applies because the schema already carries the parameter semantics.

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?

Specific verb (permanently delete) plus the resource (schema) and the exact scope (all its versions). This is clearly separable from siblings like update_schema, unpublish_schema, and delete_datafile 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 Guidelines3/5

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

The description makes the destructive intent obvious, so the implied usage is real deletion rather than unpublishing. But it never names an alternative (unpublish_schema vs delete_schema, or update_schema for changes), so the agent must infer the when/when-not conditions.

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

delete_workflowDelete workflowA
Destructive
Inspect

Permanently delete a workflow and all its versions. Cannot be undone; endpoints or sub_workflow references to it fail cleanly at run/serve time.

NameRequiredDescriptionDefault
workflow_idYesthe workflow id to delete

Output Schema

NameRequiredDescription
idYes
deletedYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true, so the safety profile is covered; the description earns credit for going beyond it by disclosing the cascade to all versions and the downstream consequence that endpoints and sub_workflow references fail at run/serve time. It stops short of stating auth/permission requirements or the non-idempotent behavior the annotations declare.

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 sentences, zero filler. The irreversible nature is front-loaded immediately after the action statement, and the downstream-impact detail follows it in dependency order.

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?

With an output schema present, return values needn't be explained, and the description covers irreversibility and runtime consequences well. The one notable omission for a destructive lifecycle tool is whether the workflow must be unpublished first or what the caller should do about existing endpoint references beforehand.

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?

Only one parameter at 100% schema description coverage, so the schema fully documents workflow_id. The description adds no format, sourcing, or lookup guidance (e.g. where to obtain the id via list_workflows), leaving this at baseline.

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?

A specific verb and resource ('Permanently delete a workflow') plus the important scope detail that all versions go with it. It doesn't explicitly differentiate itself from adjacent lifecycle operations like publish_workflow or the version-level siblings, but the resource and blast radius are unambiguous.

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 'Cannot be undone' clause signals caution and implies a last-resort action, but the description never states when to use this versus alternatives (e.g. leaving a workflow unpublished or deleting only a version) or what prerequisites must hold. Usage is inferable rather than stated.

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

execute_api_templateExecute API templateA
Destructive
Inspect

Execute an api template live against the given variables and return the full trace: the rendered request (method, url, headers, body) and the response (status, headers, body, duration). Use this to debug a template before wiring it into a workflow. This runs the real outbound request.

NameRequiredDescriptionDefault
slugNothe template slug to execute (provide this or template_id)
versionNospecific version to execute; omit for the published version
variablesNovalues bound to the template's variables for this execution
template_idNothe template id to execute (provide this or slug)

Output Schema

NameRequiredDescription
duration_msYes
request_urlYes
status_codeYes
request_bodyYes
response_bodyYes
request_methodYes
request_headersYes
response_headersYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, openWorldHint=true, and non-idempotent, and the description reinforces this by warning 'This runs the real outbound request' and describing the full trace returned. It does not cover failure modes, auth requirements, or rate limits, so it adds meaningful but not exhaustive context.

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: purpose and return value first, debugging guidance second, the live-request warning last. No filler.

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?

Output schema exists, so the description need not detail return values, and it still summarizes them usefully; annotations cover the safety profile. Minor gaps remain around error behavior or side effects on the target system, but nothing essential for correct invocation is missing.

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% and each of the four parameters (slug, template_id, version, variables) is documented in the schema, including the slug-or-id alternative and version defaulting. The description only alludes to 'given variables' and adds nothing beyond the schema, so baseline 3 applies.

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 ('execute') and resource ('an api template') plus the scope of what is returned (rendered request and response). It is clearly distinguishable from siblings like get_api_template, create_api_template_version, or validate_workflow.

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?

Gives an explicit use case: 'Use this to debug a template before wiring it into a workflow.' It does not name a concrete alternative (e.g., preview_dynamic_endpoint or get_api_template) or state when not to use it, which keeps it below a 5.

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

get_api_templateGet API templateA
Read-onlyIdempotent
Inspect

Get a single api template by slug or id, including the definition body of its current version (published if any, else latest). Use get_api_template_version to read a specific older version.

NameRequiredDescriptionDefault
slugNothe template slug (provide this or template_id)
template_idNothe template id (provide this or slug)

Output Schema

NameRequiredDescription
slugYes
versionNo
definitionNo
descriptionYes
template_idYes
display_nameYes
latest_versionYes
last_published_versionYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive. The description adds genuinely useful behavior beyond them: the version-resolution rule (published if any, else latest) and the fact that the definition body is included. It doesn't cover error behavior for a missing slug/id, keeping it below 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.

Conciseness5/5

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

Two sentences, zero waste, with the scoping/return rule front-loaded ahead of the sibling redirect. Every clause earns its place.

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?

For a read-only lookup with an output schema, the description covers what an agent needs: what is fetched, how the version is chosen, and where to go for other versions. Return-value detail is correctly left to the output 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% and both parameters already document the 'provide this or slug' either/or constraint. The prose restates 'by slug or id' without adding format or precedence guidance, so the schema carries the load — baseline 3.

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 resource ('Get a single api template') and specifies the lookup keys (slug or id). It also defines what is returned ('the definition body of its current version'), which cleanly distinguishes it from get_api_template_version and list_api_templates.

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 names the alternative tool and the condition that selects it: 'Use get_api_template_version to read a specific older version.' An agent can route between the two without inference.

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

get_api_template_definition_schemaGet API template definition schemaA
Read-onlyIdempotent
Inspect

Get the JSON Schema an api template definition must satisfy. Fetch this before authoring the definition for create_api_template / create_api_template_version.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
json_schemaYes

TDQS

A4.2/5.0
Behavior3/5

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

The annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered for this zero-argument read. The description adds the sequencing constraint but nothing about what the returned schema looks like or when it might change; with an output schema present, that omission is minor, so a 3 is fair.

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 sentences, no filler. The 'what' comes first and the 'when' second, which is the right front-loading for a prerequisite fetch tool.

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?

With an output schema present, return values need no explanation, and the zero-parameter input eliminates ambiguity. What remains unclear is whether the same schema applies to update_api_template, a small but real gap for a tool whose entire job is to be consulted before authoring.

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?

The tool takes no parameters and the input schema is an empty closed object, so there is nothing to disambiguate. Baseline 4 applies.

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?

Specific verb plus resource: it returns the JSON Schema that an API template definition must satisfy. That makes it immediately distinguishable from get_api_template / list_api_templates, and the named consumers (create_api_template / create_api_template_version) anchor its role in the family of sibling definition-schema tools.

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?

The description gives explicit ordering guidance: 'Fetch this before authoring the definition for create_api_template / create_api_template_version.' That is a clear call condition. It omits update_api_template, which also needs a definition, so the set of consumers is not complete.

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

get_api_template_versionGet API template versionA
Read-onlyIdempotent
Inspect

Read back the full stored definition of an api template version by slug or id. Returns the exact definition body that was authored (as a JSON string, so you can parse it to diff or patch and resubmit as a new version) plus its checksum. Omit version to get the latest version.

NameRequiredDescriptionDefault
slugNothe template slug (provide this or template_id)
versionNospecific version to fetch; omit (0) for the latest version
template_idNothe template id (provide this or slug)

Output Schema

NameRequiredDescription
versionYes
definitionYes
content_sha256Yes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real value beyond that: the return payload is the exact authored body as a JSON string plus a checksum, and it explains how the body is meant to be reused. Return-shape detail is somewhat redundant with the output schema, keeping it at 4.

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 core action, followed by return detail and the version default. Every clause earns its place with no repetition or filler.

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?

With an output schema present and full param coverage, the description supplies enough: what is returned (definition body + checksum) and the version default. Only the sibling differentiation against get_api_template is left implicit.

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 baseline would be 3, but the description reinforces the slug/id duality and the version-omission semantics ('Omit version to get the latest version'), matching the schema's '0 for latest' note. It adds minor interpretive value over the schema rather than fully new syntax.

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 ('Read back') and resource ('full stored definition of an api template version'), and scopes it by slug or id. This is distinguishable from get_api_template (metadata-level) by the 'version definition' framing, though it never explicitly names that sibling as the alternative.

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?

Gives clear usage context — omit version for latest, and the definition-as-JSON-string is intended for diffing or patching and resubmitting as a new version, which implicitly routes the agent to create_api_template_version next. No explicit when-not or named alternative, so not a 5.

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

get_appGet appA
Read-onlyIdempotent
Inspect

Get a single app by slug or id. Returns its metadata plus published_manifest — the TYPED selector of its last-published version (membership prefix rules + includes/excludes, and display), so you can read the app's shape from concrete fields. published_manifest is absent when the app is unpublished; to read/edit the raw definition body (draft or any version) use get_app_version.

NameRequiredDescriptionDefault
slugNothe app slug (provide this or app_id)
app_idNothe app id (provide this or slug)

Output Schema

NameRequiredDescription
slugYes
app_idYes
descriptionYes
display_nameYes
latest_versionYes
published_manifestNo
last_published_versionYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds genuine context beyond that: what published_manifest contains, and that it is missing for unpublished apps. It stops short of describing error behavior or pagination, but for a single-item read there is little else to disclose.

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?

Three sentences, front-loaded with the core action and immediately followed by return-value semantics and the sibling routing. The clause 'so you can read the app's shape from concrete fields' is mildly redundant with the preceding TYPED selector explanation, but nothing else is wasted.

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 the description is not obliged to enumerate return fields, and it correctly focuses on the one nuance an agent cannot infer: published_manifest's absence for unpublished apps. The minor gap is that neither schema nor description states what happens if zero arguments are passed, which is relevant given required parameters is 0.

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% and both parameters already document the 'provide this or the other' relationship. The description's 'by slug or id' restates the schema rather than adding syntax, format, or precedence rules for when both are supplied — the baseline 3 applies.

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 resource ('Get a single app by slug or id') and goes further to name what is returned: metadata plus published_manifest, defined as the typed selector of the last-published version. It also explicitly distinguishes itself from get_app_version, so an agent can pick between the two without opening either 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?

Names the alternative tool and the exact condition that selects it: 'to read/edit the raw definition body (draft or any version) use get_app_version.' It also flags the edge case that published_manifest is absent for unpublished apps, so the agent knows when the result will be incomplete.

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

get_app_definition_schemaGet app definition schemaA
Read-onlyIdempotent
Inspect

Get the JSON Schema an app definition must satisfy: the membership SELECTOR (prefix rules — a slug folder + the member kinds it covers — plus explicit includes/excludes) and display metadata. Fetch this before authoring the definition for create_app / create_app_version.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
json_schemaYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds real value beyond that by disclosing the shape of the returned schema (selector semantics, prefix rules, display metadata), letting the agent anticipate what it will get before calling.

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 sentences, front-loaded with the primary noun phrase, and the sequencing instruction comes last where it belongs. The parenthetical elaborating the selector is dense but every clause carries meaning.

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 needn't be spelled out, yet the description still characterizes the key payload component (the membership selector). For a zero-param read-only schema fetch, nothing an agent needs is missing.

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?

The tool takes zero parameters, so there are no semantics to explain and the baseline of 4 applies. The description correctly spends no words on inputs and instead details the output contract.

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 resource (get the JSON Schema an app definition must satisfy) and then enumerates the schema's contents: membership SELECTOR with prefix rules, slug folder, member kinds, explicit includes/excludes, and display metadata. This clearly separates it from data-returning siblings like get_app, get_app_version, and get_app_members.

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?

"Fetch this before authoring the definition for create_app / create_app_version" gives explicit ordering and names the exact consumer tools, which is exactly the guidance an agent needs. It lacks a negative case (e.g., when not to call it), but with a zero-param read-only tool an exclusion is close to unnecessary.

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

get_app_membersGet app membersA
Read-onlyIdempotent
Inspect

Resolve an app's LIVE member set — the concrete resources its selector currently matches. The app stores only rules (prefix rules + includes/excludes); this fans out to each member kind's list and returns the resolved union(prefixes) + includes − excludes as {kind, slug, display_name}. Members are always current (a lens, not a pinned list). Resolves the published version by default; pass version to preview a draft's members before publishing. A kind with too many members to list (a blog's datafiles run to thousands) is NOT enumerated: it is omitted from members entirely and reported under summarized_kinds as a count plus a per-folder rollup, and members_complete is then false — so count can exceed members length. To see the items of a summarized kind, call that kind's own list tool with one of the reported slug_prefix values (e.g. list_datafiles); this tool never pages a whole collection. Use this to see or verify what an app contains.

NameRequiredDescriptionDefault
slugNothe app slug (provide this or app_id)
app_idNothe app id (provide this or slug)
versionNoresolve this specific version's selector; omit (0) for the current one (published if the app is published, else the latest draft — so you can preview a draft's members before publishing)

Output Schema

NameRequiredDescription
countYes
membersYes
versionYes
members_completeYes
summarized_kindsNo
unresolved_kindsNo

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover the read-only, idempotent safety profile, but the description adds substantial behavior beyond that: members are a live lens rather than a pinned list, the published version resolves by default, summarized kinds are omitted from members and reported under summarized_kinds with members_complete=false, and count can exceed members length. These are exactly the surprises an agent needs to know about.

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?

The definition leads with the core claim (live resolved set) and then layers the important caveats about summarized kinds. It is dense but largely load-bearing; a few clauses (the parenthetical about blog datafiles, the repeated draft-preview phrasing also present in the schema) could be trimmed.

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?

For a fan-out resolution tool, the description covers the semantics, default version resolution, the truncation/summarization contract, the count-vs-length discrepancy, and the escape hatch to sibling list tools. An output schema exists, so the description does not need to explain return shapes, and it still sketches the member record shape usefully.

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 baseline is 3. The description restates the version parameter's default-resolution semantics that the schema already documents ('omit (0) for the current one ... preview a draft's members before publishing'), and adds no detail about slug versus app_id beyond the schema.

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 resource ('Resolve an app's LIVE member set') and immediately clarifies that this is not the stored rules but the resolved union of the selector's matches. This clearly distinguishes it from get_app/get_app_version (which return the rule definitions) and from list_datafiles (which lists a single kind).

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 states when to use it ('see or verify what an app contains'), when to use a sibling instead ('To see the items of a summarized kind, call that kind's own list tool ... e.g. list_datafiles'), and warns what it will not do ('never pages a whole collection'). It also explains that passing version previews a draft's members before publishing.

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

get_app_versionGet app versionA
Read-onlyIdempotent
Inspect

Read back the full stored definition of an app version by slug or id. Returns the exact definition body that was authored (as a JSON string, so you can parse it to diff or edit and resubmit as a new version) plus its checksum. Omit version to get the latest version. This is the EDITING view; get_app returns the typed published manifest for reading.

NameRequiredDescriptionDefault
slugNothe app slug (provide this or app_id)
app_idNothe app id (provide this or slug)
versionNospecific version to fetch; omit (0) for the latest version

Output Schema

NameRequiredDescription
versionYes
definitionYes
content_sha256Yes

TDQS

A4.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered structurally. The description adds real value beyond that — the body comes back as a JSON string plus a checksum, and the string is meant to be parsed and resubmitted — but it says nothing about size limits, error behavior for a nonexistent version, or whether historical versions are immutable.

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 sentences, front-loaded with the action, then the return shape, then the sibling disambiguation. Every clause carries information an agent needs; nothing is repeated from the annotations.

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?

With an output schema present, return values need not be explained, and the rich annotations cover safety and idempotency. The description fills the remaining gaps that structure cannot: the JSON-string encoding of the body, the checksum, the default-version behavior, and the read-vs-edit split against get_app.

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 description coverage is 100%, so slug/app_id/version are already documented, and the description only restates the "omit version for latest" default. It earns slightly above baseline by framing why you would fetch a specific version at all — to diff or edit and resubmit — which the schema does not convey.

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 resource ("Read back the full stored definition of an app version by slug or id") and immediately names what it is not: "This is the EDITING view; get_app returns the typed published manifest for reading." An agent can distinguish this from get_app and list_app_versions 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?

Gives the explicit selection rule against the nearest sibling — use this for editing, get_app for reading the typed published manifest — and states the default behavior ("Omit version to get the latest version"). The intended downstream workflow (diff, edit, resubmit as a new version) is spelled out rather than implied.

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

get_assetGet assetA
Read-onlyIdempotent
Inspect

Get a single published asset by slug or media id, including its absolute CDN URL, content type, and size. Use this to confirm an asset exists and fetch the URL to embed.

NameRequiredDescriptionDefault
slugNothe asset slug (provide this or media_id)
media_idNothe asset's media id (provide this or slug)

Output Schema

NameRequiredDescription
urlNo
slugYes
statusNo
media_idYes
created_atNo
size_bytesNo
updated_atNo
content_typeNo
display_nameNo
original_filenameNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely new behavior: only *published* assets are returned, and the response will contain URL, content type and size.

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 sentences, zero filler, front-loaded with the purpose and then the use case. Nothing in it could be removed without losing information.

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?

Both optional identifiers are documented in the schema, an output schema covers the return shape, and annotations cover safety semantics. The description's extra job — telling the agent it only sees published assets — is done.

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% and each parameter already documents the 'provide this or the other' rule, so the schema does the heavy lifting. The description adds mild value by restating that lookup can be by slug or media id, but no format examples or clarification of precedence is given.

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 resource ('Get a single published asset') plus the two lookup keys and what is returned (CDN URL, content type, size). The word 'single' and 'published' clearly separate it from list_assets and the rest of the get_* family.

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?

Explicitly says when to reach for it: 'Use this to confirm an asset exists and fetch the URL to embed.' It gives a positive use case but does not name an alternative (e.g. list_assets for discovery) or state exclusions.

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

get_custom_domainGet custom domainA
Read-onlyIdempotent
Inspect

Get a single custom domain by hostname: its lifecycle status, the DNS records the customer must publish, its routing (slug_prefix + root_endpoint), and any human-facing check/certificate messages. Use this to answer 'is my domain live yet?' and to re-display the DNS records for a pending domain.

NameRequiredDescriptionDefault
hostnameYesthe custom domain hostname, e.g. shop.customer.com

Output Schema

NameRequiredDescription
statusYes
hostnameYes
dns_recordsNo
slug_prefixNo
verified_atNo
activated_atNo
display_nameNo
root_endpointNo
last_check_messageNo
cert_status_messageNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context by specifying what information is returned, including lifecycle status, DNS records, routing details, and human-facing check/certificate messages.

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 tightly written sentences, front-loaded with the operation and followed by concrete use cases. Every sentence earns its place and there is no redundant or vague text.

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?

For a read-only single-resource lookup with one fully documented parameter, rich annotations, and an output schema, the description is complete. It explains the returned information and practical usage without needing to duplicate schema details.

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?

The single hostname parameter is fully documented in the schema with an example ('shop.customer.com'), and schema description coverage is 100%. The description reinforces that lookup is by hostname but does not add syntax or formatting details beyond what the schema already provides, so the baseline of 3 is appropriate.

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?

The description states a specific verb and resource ('Get a single custom domain by hostname') and scopes it to a single lookup rather than a list. It also enumerates the returned facets (lifecycle status, DNS records, routing, messages), making it clearly distinct from sibling tools like list_custom_domains, create_custom_domain, and verify_custom_domain.

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?

It gives clear usage context: answer 'is my domain live yet?' and re-display DNS records for a pending domain. However, it does not explicitly name alternatives or exclusions, such as when to use list_custom_domains or verify_custom_domain instead.

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

get_datafileGet datafileA
Read-onlyIdempotent
Inspect

Get a single datafile by slug or id, including its JSON content and last published CDN path.

NameRequiredDescriptionDefault
slugNothe datafile slug (provide this or datafile_id)
datafile_idNothe datafile id (provide this or slug)

Output Schema

NameRequiredDescription
jsonNo
slugYes
schema_idNo
datafile_idYes
descriptionYes
display_nameYes
content_sha256No
last_published_pathNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and a closed-world scope, so the safety profile is fully covered. The description adds one useful behavioral detail — that the response includes JSON content and the last published CDN path — but says nothing about failure modes (missing slug, unpublished datafile) or permissions.

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 front-loaded sentence with zero filler; the identifying verb and resource come first and the payload detail follows.

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 for the return shape and annotations cover safety, so the description's job is small and it mostly does it. Missing only the edge-case behavior (what happens when neither parameter is supplied or the datafile is not found).

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% and both parameters are documented there with their mutual-exclusivity note ('provide this or slug'). The description only echoes 'by slug or id' without adding format or precedence rules, so 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 (get), resource (datafile), scope (single) and lookup key (slug or id), which implicitly contrasts with list_datafiles. It does not explicitly name the sibling alternatives the way a top-tier definition would.

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?

Usage is only implied: 'single' vs the list_datafiles sibling, and 'by slug or id' hints at the lookup pattern. There is no explicit when-to-use/when-not, no note that exactly one of the two optional parameters should be supplied, and no alternative named.

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

get_dynamic_endpointGet dynamic endpointA
Read-onlyIdempotent
Inspect

Get a single dynamic endpoint by slug or id, including its public URL and the definition body of its current version (published if any, else latest). Use get_dynamic_endpoint_version to read a specific older version.

NameRequiredDescriptionDefault
slugNothe endpoint slug (provide this or endpoint_id)
endpoint_idNothe endpoint id (provide this or slug)

Output Schema

NameRequiredDescription
slugYes
versionNo
definitionNo
public_urlNo
descriptionYes
endpoint_idYes
content_typeYes
display_nameYes
latest_versionYes
last_published_versionYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds real value beyond that by disclosing the version-resolution rule ('published if any, else latest') and what the payload contains. It stays silent on auth requirements or error behavior when neither identifier is supplied.

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 sentences, front-loaded with the primary capability and followed by a single disambiguation pointer. Nothing is padded or repeated from the annotations.

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 structure need not be spelled out, yet the description still signals the useful payload contents. For a trivial two-param read tool this is nearly complete; only the neither-identifier-supplied case is left unstated.

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% and both parameters are already documented as alternatives ('provide this or endpoint_id'). The description restates the slug-or-id choice but adds no format examples or precedence rule for when both are passed, so baseline 3 applies.

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?

Names a specific verb and resource ('Get a single dynamic endpoint by slug or id') and enumerates what comes back: the public URL and the definition body of the current version. It also distinguishes itself from the near-identical sibling get_dynamic_endpoint_version, so an agent can choose without opening both schemas.

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?

Explicitly routes the agent to get_dynamic_endpoint_version 'to read a specific older version', which is the main ambiguity for this tool. It does not mention other adjacent siblings like get_dynamic_endpoint_definition_schema or list_dynamic_endpoints, so it is clear context but not exhaustive when/when-not guidance.

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

get_dynamic_endpoint_definition_schemaGet dynamic endpoint definition schemaA
Read-onlyIdempotent
Inspect

Get the JSON Schema a dynamic endpoint definition must satisfy. Fetch this before authoring the definition for create_dynamic_endpoint / create_dynamic_endpoint_version.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
json_schemaYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is free. The description adds genuinely new behavioral context: this is a prerequisite read that must precede authoring a definition, establishing workflow ordering. Return shape is covered by the output schema, so no further disclosure is owed.

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 sentences, front-loaded with what it returns and followed by the ordering instruction. Every clause earns its place, with no restatement of the name or annotations.

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?

With no parameters, an output schema present, and annotations covering safety, the only things an agent needs are purpose and sequencing — both supplied. Nothing required to call this correctly is missing.

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?

The tool has zero parameters, which is the baseline-4 case; there are no arguments whose meaning could be clarified. The description correctly implies no inputs are needed.

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 resource ('Get the JSON Schema a dynamic endpoint definition must satisfy') and names the exact siblings it feeds ('create_dynamic_endpoint / create_dynamic_endpoint_version'), so an agent can separate it from the many other get_*_definition_schema and get_dynamic_endpoint tools.

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?

Explicitly says when to call it ('Fetch this before authoring the definition for create_dynamic_endpoint / create_dynamic_endpoint_version'), which is a concrete pre-condition ordering. It does not state exclusions (e.g. that it should not be called when updating an existing endpoint), but for a zero-arg lookup that gap is small.

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

get_dynamic_endpoint_versionGet dynamic endpoint versionA
Read-onlyIdempotent
Inspect

Read back the full stored definition of a dynamic endpoint version by slug or id. Returns the exact definition body that was authored (as a JSON string, so you can parse it to diff or patch and resubmit as a new version) plus its checksum. Omit version to get the latest version.

NameRequiredDescriptionDefault
slugNothe endpoint slug (provide this or endpoint_id)
versionNospecific version to fetch; omit (0) for the latest version
endpoint_idNothe endpoint id (provide this or slug)

Output Schema

NameRequiredDescription
versionYes
definitionYes
content_sha256Yes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description still adds real substance: the definition comes back as a JSON string body plus a checksum, and omitting version defaults to latest. It stops short of covering error behavior for an unknown slug or version, which would complete the picture.

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: what it returns, what the payload is useful for, and the version default. Front-loaded with the core action and free of filler.

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?

With an output schema present, the description needn't explain return structure, and it correctly focuses on the JSON-string body and checksum. Coverage is nearly complete for a read tool; only failure modes for invalid slug/version are unaddressed.

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% and all three parameters are documented in the schema, including the 'omit (0) for latest' semantics. The description only restates the slug/id alternative and the version default, adding no format or edge-case detail beyond the schema.

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?

The description uses a specific verb+resource pair ('Read back the full stored definition of a dynamic endpoint version') and scopes it by slug or id. It implicitly distinguishes itself from get_dynamic_endpoint (metadata) by emphasizing 'full stored definition', but it never names the sibling, so an agent must infer the boundary.

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?

It gives a clear use context ('so you can parse it to diff or patch and resubmit as a new version') and states that omitting version gets the latest. It does not say when to prefer this over get_dynamic_endpoint, get_dynamic_endpoint_definition_schema, or list_dynamic_endpoint_runs, leaving the sibling routing to inference.

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

get_guideGet guideA
Read-onlyIdempotent
Inspect

Fetch a Tessryx guide by topic (markdown). Use list_guides to see the available topics. Reach for the relevant guide before authoring to avoid trial-and-error.

NameRequiredDescriptionDefault
topicYesThe guide topic to fetch (see list_guides). One of: overview, build-a-page, build-a-blog, authoring, workflows, agents, datafiles, api-templates, endpoints, apps, schemas, schedules, custom-domains, dependencies

Output Schema

NameRequiredDescription
titleYes
topicYes
contentYes

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is fully covered without the description. The description adds only that the payload is markdown and that guides are prep material — useful but thin, with no statement on size, paging, or caching.

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 short sentences with zero filler: what it does and returns first, then how to pick a topic and when to reach for it. Nothing restates the 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-value explanation is unnecessary, and the single enum parameter is fully specified in the schema. Combined with the discovery pointer to list_guides, an agent has everything needed to call this correctly on the first try.

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% and the sole parameter is a 14-value enum documented inline, so the schema carries the full burden. The description's only addition is pointing at list_guides as the way to discover valid topics; it adds no per-topic meaning beyond the enum.

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?

Specific verb (fetch) plus specific resource (a Tessryx guide by topic) and even the return format (markdown). It is clearly distinguishable from every sibling, all of which operate on platform resources rather than documentation.

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 routes discovery to list_guides and states the trigger condition for calling it: consult the relevant guide before authoring to avoid trial-and-error. Both the alternative and the when-to-use condition are stated outright.

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

get_resource_graphGet resource graphA
Read-onlyIdempotent
Inspect

Browse how resources connect, in either direction. direction 'depends_on' (default) shows what this resource NEEDS, following 'depth' hops (default 3). direction 'depended_on_by' shows what would BREAK if you changed or deleted it — transitive and not depth-limited, since the chain (api template → the workflows calling it → the endpoints running those) is the answer; use it before a delete or a breaking edit. Each edge carries the reference text as authored, whether it names @published or @latest, and what that resolves to right now, so version drift is visible and not just connectivity. Check unscanned_kinds on a reverse result: a schema's referrers include every datafile and are too expensive to enumerate, so an empty answer there does NOT mean nothing depends on it. To find out whether something is broken rather than what it connects to, use analyze_resource.

NameRequiredDescriptionDefault
kindYesthe kind of resource to start from: workflow, dynamic_endpoint, api_template, datafile, schema, schedule, secret, custom_domain
depthNohow many hops to follow (default 3). This is a browsing control for looking around; analyze_resource always follows chains to the end rather than stopping at a depth
resourceYesslug of the resource, optionally with a version suffix (e.g. 'blog/render' or 'blog/render@latest'); a bare slug means @published. For a custom_domain this is the hostname
directionNowhich way to walk: 'depends_on' (default — what this resource needs) or 'depended_on_by' (what would break if you changed or deleted it). depended_on_by is transitive: deleting an api template surfaces the workflows that call it AND the endpoints that run those workflows

Output Schema

NameRequiredDescription
rootYes
edgesYes
nodesYes
truncatedNo
depth_exceededNo
scan_truncatedNo
unscanned_kindsNo
aggregate_referrersNo

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds substantial behavior beyond them: depended_on_by is transitive and not depth-limited while depends_on follows depth hops, edges carry authored vs. resolved version text so drift is visible, and unscanned_kinds means an empty reverse result does NOT imply no dependents. That last caveat is exactly the kind of non-obvious behavioral context the description should carry.

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?

The purpose is front-loaded and every sentence carries information (direction semantics, version drift, unscanned_kinds caveat, alternative tool). It is dense and long-ish for a graph tool, but there is no filler; a slightly tighter phrasing of the edge-metadata sentence would earn a 5.

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-format explanation is unnecessary, and the description still covers the two things an agent most needs that structure cannot convey: the asymmetry between the two directions and the unscanned_kinds false-empty trap. Nothing required to call it correctly is missing.

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 baseline is 3, but the description meaningfully extends the parameters: it explains what each direction semantically returns, frames depth as a browsing control versus analyze_resource following chains to the end, and notes version-suffix resolution for the resource slug. It stops short of restating kinds, but the value added over the schema is real.

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?

The description names a specific action (browse how resources connect) and a specific resource (resource graph), and explicitly distinguishes two traversal directions. It also names the sibling it is not (analyze_resource), so an agent can separate this from the other get_* tools without opening the 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?

It gives explicit when-to-use guidance: call depended_on_by before a delete or a breaking edit, and use analyze_resource instead when the question is whether something is broken rather than what it connects to. Both the positive case and the alternative are stated.

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

get_scheduleGet scheduleA
Read-onlyIdempotent
Inspect

Get a single schedule by slug or id, including its cron status (last_published_version, next_run_at, last_run_id) and the definition body of its current version (published if any, else latest). Use get_schedule_version to read a specific older version.

NameRequiredDescriptionDefault
slugNothe schedule slug (provide this or schedule_id)
schedule_idNothe schedule id (provide this or slug)

Output Schema

NameRequiredDescription
slugYes
versionNo
definitionNo
descriptionYes
last_run_atNo
last_run_idNo
next_run_atNo
schedule_idYes
display_nameYes
latest_versionYes
last_published_versionYes

TDQS

A4.3/5.0
Behavior4/5

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

The description adds meaningful behavior beyond the annotations: it discloses the returned cron status fields and the version-selection rule ('published if any, else latest'). Annotations already cover the read-only, idempotent, non-destructive profile, so remaining gaps such as permission requirements or not-found behavior are minor.

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 sentences are used with zero waste: the core behavior and returns are front-loaded, followed by the sibling alternative. Every clause carries actionable information.

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?

With an output schema present and annotations covering safety traits, the description supplies the remaining decision-relevant context: what is returned, how the current version is selected, and where to go for older versions. Nothing needed to invoke it correctly is missing.

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?

The schema has 100% description coverage for both parameters, and the description reinforces that either slug or id may identify the schedule. It does not add syntax, format, or precedence details beyond what the schema already documents, so the baseline of 3 applies.

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?

The description states a specific verb and resource ('Get a single schedule'), explains the lookup keys (slug or id), and enumerates the returned data (cron status and current version definition body). It clearly distinguishes itself from get_schedule_version by naming that sibling for older versions.

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?

It explicitly routes the agent to get_schedule_version when a specific older version is needed, which is a clear alternative-selection rule. It does not state when not to use this tool or mention list_schedules as a discovery path, but the context is otherwise unambiguous.

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

get_schedule_definition_schemaGet schedule definition schemaA
Read-onlyIdempotent
Inspect

Get the JSON Schema a schedule definition must satisfy (workflow reference; recurrence as EITHER a 5-field cron + IANA timezone OR an 'every N minutes/hours' interval; optional static input). Fetch this before authoring the definition for create_schedule / create_schedule_version.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
json_schemaYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description still adds value by characterizing what the returned schema enforces: a workflow reference, two mutually exclusive recurrence forms, and optional static input. It stops short of describing response shape, but an output schema exists, so that omission is acceptable.

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?

One dense sentence, front-loaded with the action and resource, followed by a parenthetical that carries the important schema-shape details, then the usage rule. No filler and nothing redundant with the annotations.

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?

With an output schema present, return values need not be explained. The description covers what the tool returns conceptually, when to call it, and what it feeds into, which is everything an agent needs for a zero-parameter discovery call.

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?

The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline for a parameterless tool is 4; no misinformation is present.

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?

The description gives a specific verb and resource ('Get the JSON Schema a schedule definition must satisfy') and immediately disambiguates the content and domain (workflow reference, recurrence, static input). An agent can distinguish this from the many sibling '*_definition_schema' tools 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?

It states an explicit ordering rule ('Fetch this before authoring the definition') and names the exact consumers ('create_schedule / create_schedule_version'). This is both a when-to-use instruction and a routing hint to the correct follow-up tools.

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

get_schedule_versionGet schedule versionA
Read-onlyIdempotent
Inspect

Read back the full stored definition of a schedule version by slug or id. Returns the exact definition body that was authored (as a JSON string, so you can parse it to diff or patch and resubmit as a new version) plus its checksum. Omit version to get the latest version.

NameRequiredDescriptionDefault
slugNothe schedule slug (provide this or schedule_id)
versionNospecific version to fetch; omit (0) for the latest version
schedule_idNothe schedule id (provide this or slug)

Output Schema

NameRequiredDescription
versionYes
definitionYes
content_sha256Yes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, so the safety profile is covered. The description adds genuinely new behavior: the definition is returned as a JSON string requiring parsing, and a checksum accompanies it, which matters for diff/patch/resubmit workflows.

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 sentences, no filler: purpose first, then return shape, then the version-omission rule. Every sentence carries information an agent would otherwise have to infer.

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?

Output schema exists, but the description still clarifies the JSON-string return and checksum, which is the key detail for downstream diff/patch use. For a read-only lookup with full schema coverage, nothing needed to invoke it correctly is missing.

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% and already documents slug vs schedule_id and 'omit (0) for the latest version'. The description restates the slug-or-id choice and the omit-version behavior without adding format or edge-case detail beyond the schema, so the baseline of 3 applies.

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 resource: reads back the full stored definition of a schedule version, keyed by slug or id. This clearly separates it from get_schedule (current schedule state) and list_schedule_versions (enumeration), which appear as siblings.

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?

Explicitly says to omit version for the latest, and frames the use case: parse the body to diff or patch and resubmit as a new version. It stops short of naming exclusion conditions against get_schedule/get_schedule_definition_schema, but the context for choosing this tool is clear.

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

get_schemaGet schemaA
Read-onlyIdempotent
Inspect

Get a single schema by slug or id, including the JSON Schema body of its current version — use it to author a datafile that conforms.

NameRequiredDescriptionDefault
slugNothe schema slug (provide this or schema_id)
schema_idNothe schema id (provide this or slug)

Output Schema

NameRequiredDescription
slugYes
versionNo
schema_idYes
descriptionYes
json_schemaNo
display_nameYes
latest_versionYes
last_published_versionYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive, so safety is covered. The description adds a detail not in the structured fields: the body returned is that of the *current* version, which matters for an agent authoring a conforming datafile and hints that historical versions live elsewhere.

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 sentence that front-loads the resource and lookup keys, then closes with the motivating use case. No filler, nothing redundant with the schema.

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 two-parameter read-only tool with full schema coverage, an output schema, and rich annotations, this is close to sufficient. A minor gap remains around error behavior when the slug is unknown or when both identifiers are passed.

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%, and the schema itself states the 'provide this or schema_id' either/or rule for both parameters. The description's 'by slug or id' merely restates rather than adding format or precedence guidance (e.g., which wins if both are supplied), so baseline 3 applies.

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 resource ('Get a single schema'), the lookup keys ('by slug or id'), and the payload ('JSON Schema body of its current version'). The word 'single' plus the authoring intent cleanly separates it from list_schemas and the list_* siblings.

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?

'use it to author a datafile that conforms' gives a concrete when-to-use tied to a downstream task (create_datafile/patch_datafile). It does not name alternatives such as list_schemas or get_schema_version, so the routing is implied rather than explicit.

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

get_secretGet secretA
Read-onlyIdempotent
Inspect

Get a single secret by slug or id (metadata only — the value is never returned; value_preview is a non-sensitive hint such as the last few characters). To add or change a secret's value, send the user to https://tessryx.io/dashboard/secrets; it cannot be set through this assistant.

NameRequiredDescriptionDefault
slugNothe secret slug (provide this or secret_id)
secret_idNothe secret id (provide this or slug)

Output Schema

NameRequiredDescription
slugYes
secret_idYes
created_atYes
updated_atYes
descriptionYes
display_nameYes
value_previewNo

TDQS

A4.5/5.0
Behavior5/5

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

Adds essential behavior beyond the readOnly/non-destructive annotations: the value is never returned, value_preview is only a non-sensitive hint such as trailing characters, and secret values cannot be set through this assistant. These are exactly the constraints an agent needs to avoid misusing the tool.

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 sentences, front-loaded with the core lookup behavior, followed by the critical limitation and the redirect to the dashboard. There is no wasted text.

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?

Complete for a metadata-only getter: the input schema covers both lookup parameters, annotations cover safety, and an output schema exists. The description fills the critical gap by explaining that secret values are never returned and cannot be modified here.

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%, and the schema already documents that slug or secret_id must be provided as alternatives. The description reinforces lookup by slug or id but does not add format details or selection guidance beyond the schema, so baseline 3 is appropriate.

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 resource: get a single secret by slug or id, with the scope explicitly limited to metadata. This clearly distinguishes it from the sibling list_secrets and from mutation tools that would change a secret.

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?

Explicitly says this tool cannot set or change a secret's value and directs the user to the web dashboard for that. The usage context is clear, though it does not explicitly name list_secrets as the alternative for browsing multiple secrets.

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

get_workflowGet workflowA
Read-onlyIdempotent
Inspect

Get a single workflow by slug or id, including the definition body of its current version (published if any, else latest) and its latest/last-published version numbers. Use get_workflow_version to read a specific older version.

NameRequiredDescriptionDefault
slugNothe workflow slug (provide this or workflow_id)
workflow_idNothe workflow id (provide this or slug)

Output Schema

NameRequiredDescription
slugYes
versionNo
definitionNo
descriptionYes
workflow_idYes
display_nameYes
latest_versionYes
last_published_versionYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real semantic context beyond that: which version body is returned and what version numbers accompany it. It stops short of describing failure behavior (e.g., neither slug nor id supplied) or the shape of the returned definition.

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 sentences, no filler, with the core capability front-loaded and the alternative-tool pointer last. Every clause carries information.

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 values need not be spelled out, and annotations cover safety; the description fills the important gap about version resolution. Minor omission: behavior when both identifiers are given, or when neither is.

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% and both parameters already document the 'provide this or the other' relationship. The description's 'by slug or id' only restates that, adding no syntax, format, or precedence guidance for the zero-required-parameter case.

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 resource ('Get a single workflow by slug or id') and precisely scopes what comes back: the current version's definition body plus latest/last-published version numbers. It cleanly distinguishes itself from get_workflow_version and from list_workflows.

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 routes the agent: 'Use get_workflow_version to read a specific older version.' It also encodes the version-resolution rule (published if any, else latest), which is exactly the decision an agent needs before calling either tool.

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

get_workflow_definition_schemaGet workflow definition schemaA
Read-onlyIdempotent
Inspect

Get the JSON Schema a workflow definition must satisfy. Fetch this before authoring the definition for create_workflow / create_workflow_version.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
json_schemaYes

TDQS

A4.5/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is fully covered. The description's only extra signal is the sequencing requirement — valuable but thin, with no mention of response size or whether the schema is stable across versions.

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 short sentences, no waste, and the call-ordering instruction is front-loaded where the agent will read it. Every clause earns its place.

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?

A zero-parameter read-only lookup with an output schema and full annotation coverage needs only to state its purpose and its place in the authoring flow, both of which are present. Nothing an agent needs to invoke it correctly is missing.

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?

The tool takes zero parameters, so there is nothing to disambiguate and the baseline of 4 applies. The input schema is an empty closed object, consistent with the description.

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?

Specific verb and resource: 'Get the JSON Schema a workflow definition must satisfy'. It clearly separates itself from get_workflow / get_workflow_version because it returns a schema rather than the workflow object, and it names the downstream tools it exists to serve.

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?

Explicit prerequisite ordering: 'Fetch this before authoring the definition for create_workflow / create_workflow_version.' An agent knows exactly when to call it and which sibling calls it feeds.

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

get_workflow_runGet workflow runA
Read-onlyIdempotent
Inspect

Get the stored record of a past workflow run by run id: status, content_type, and the output (decoded as a string; output_truncated is true when the stored output was sampled down). Runs from a LIVE ENDPOINT SERVE keep only the first few KB of the page — re-run or preview the endpoint to see a whole render. Runs you triggered (run_workflow, preview) store their output in full.

NameRequiredDescriptionDefault
run_idYesthe run id returned by run_workflow

Output Schema

NameRequiredDescription
chainNopresent only for a run that is part of a chain: its place in it and whether the chain continues after it
errorNo
outputNo
run_idYes
statusYes
messageNo
workflow_idYes
content_typeYes
output_truncatedNo
workflow_versionYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare a safe read, but the description adds what an agent genuinely cannot infer: output is decoded as a string, output_truncated signals sampling, and stored output is severely truncated for endpoint-serve runs. That truncation caveat materially changes how an agent should interpret results.

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: what it returns first, then the truncation semantics and the workaround. No filler, no repetition of the title, and the most decision-relevant caveat is easy to find.

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 flags the non-obvious truncation behavior that the schema cannot convey. Combined with the safe-read annotations and a single documented id parameter, nothing needed to call or interpret this tool is missing.

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?

With one parameter at 100% schema coverage, the schema already explains run_id as the id returned by run_workflow. The description repeats 'by run id' without adding format, source, or validation detail beyond what the schema gives, so baseline 3 applies.

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?

The description names a specific verb and resource (get the stored record of a past workflow run) plus the key selector (by run id) and the payload it returns (status, content_type, output). It clearly separates itself from run_workflow (triggers) and from list_runs (enumerates) simply by describing stored-record retrieval.

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?

It gives a concrete rule: runs from a LIVE ENDPOINT SERVE are truncated, so re-run or preview the endpoint to see a full render, whereas runs you triggered via run_workflow or preview are stored in full. That tells the agent when this tool's output is sufficient and when to route elsewhere. It only stops short of naming list_runs as the source of run ids.

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

get_workflow_run_tracesGet workflow run tracesA
Read-onlyIdempotent
Inspect

Get the full per-step execution trace of a run by run id (paged). Each step lists its blocks with the input each consumed and the output it produced, plus any error_message, and the variable scope captured at that step. Use this to debug why an expression or block produced the wrong value. Large captured values are shortened, with a marker saying so: a scope entry may point at the block output beside it rather than repeat it (the value is in the same trace). On UNATTENDED runs only — a live endpoint serve, a schedule falling due — text copied verbatim from the definition (a literal expression) is also replaced by its path there; read it with get_workflow_version. Those runs are shortened harder overall too, so to capture a value in full, re-run it yourself (run_workflow / preview_dynamic_endpoint / run_schedule_now) — runs you trigger keep everything, literals included. A loop block, and an llm block with tools (an agent), lists iterations: each loop iteration or agent turn with the blocks it ran (iterations_total is how many actually ran; a long run keeps the first and last and may drop some between). A run with many or large steps stores some of them with it, from its start and its end (a sub-workflow's steps count, one each), and keeps the complete set separately for two weeks; these pages read the complete set when there is one, and trace_truncated says only part of the run was stored with it. For an agent turn the first block is an llm block recording that one model call — its output carries stop_reason, input/output tokens, tool_calls and the start of the reply, and started_at/finished_at give how long the call took — followed by the tools it called.

NameRequiredDescriptionDefault
run_idYesthe run id returned by run_workflow
page_sizeNomaximum number of step traces to return in this page
page_tokenNotoken from a previous response's next_page_token to fetch the next page

Output Schema

NameRequiredDescription
stepsYes
next_page_tokenYes

TDQS

A4.3/5.0
Behavior5/5

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

Goes far beyond the readOnly/idempotent annotations: discloses output truncation of large captured values, the marker-and-pointer convention for scope entries, harsher shortening and literal-path substitution on UNATTENDED runs, two-week retention of the complete step set, the trace_truncated flag, and iteration behavior for loop and agent blocks. This is exactly the kind of context annotations cannot carry.

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

Conciseness3/5

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

The core purpose is front-loaded, but the description is a single dense wall of text with heavy parentheticals and em-dash asides (unattended-run caveats, loop/agent iteration detail, retention, agent turn block layout). Most sentences earn their place, but the lack of structure makes it harder to scan than it needs to be.

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?

Despite an output schema already existing, the description supplies the interpretive context an agent needs to read a trace correctly: truncation markers, trace_truncated, iteration counts, and per-turn token/tool_calls fields. Nothing material is missing for correct invocation or interpretation.

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 all three params (run_id, page_size, page_token) are already documented in the schema. The description says the output is 'paged' but adds no format or range detail beyond the schema's own page_token/page_size descriptions, so the baseline of 3 applies.

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?

Opens with a specific verb+resource+scope: 'Get the full per-step execution trace of a run by run id (paged)'. It then differentiates itself from the run-summary sibling by explaining the step/block/variable-scope content and its debugging purpose ('debug why an expression or block produced the wrong value'). An agent can tell this apart from get_workflow_run or list_runs without opening a schema.

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?

Gives an explicit use case ('Use this to debug why an expression or block produced the wrong value') and names concrete alternatives when trace data is lossy: re-run with run_workflow / preview_dynamic_endpoint / run_schedule_now to capture values in full. It stops short of stating when NOT to use it (e.g. use get_workflow_run for run status only), so it is strong but not fully exhaustive.

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

get_workflow_versionGet workflow versionA
Read-onlyIdempotent
Inspect

Read back the full stored definition of a workflow version by slug or id. Returns the exact definition body that was authored (as a JSON string, so you can parse it to diff or patch and resubmit as a new version) plus its content_sha256. Omit version to get the latest version.

NameRequiredDescriptionDefault
slugNothe workflow slug (provide this or workflow_id)
versionNospecific version to fetch; omit (0) for the latest version
workflow_idNothe workflow id (provide this or slug)

Output Schema

NameRequiredDescription
versionYes
definitionYes
content_sha256Yes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, so the description only needs to add context — and it does: the body is returned as a JSON string exactly as authored, accompanied by content_sha256, and omitting version yields the latest. It leaves error cases (unknown slug/id, version not found) and slug-vs-id precedence unstated.

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 sentences, front-loaded with what is read and followed by what is returned and the default-version behavior. No filler, and the most decision-relevant facts come first.

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?

The tool is a simple three-parameter read with an output schema and full annotation coverage; the description covers retrieval scope, return shape, and the version default. Nothing needed to invoke it correctly is missing.

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 all three parameters are already documented, including 'omit (0) for the latest version'. The description largely restates this ('omit version to get the latest version'; 'by slug or id') without adding precedence rules or clarifying whether both identifiers may be supplied. Baseline 3 applies when the schema does the heavy lifting.

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 resource ('Read back the full stored definition of a workflow version by slug or id'), which separates it from the version-less get_workflow and from schema-oriented siblings like get_workflow_definition_schema. It also names the return artifacts (definition body, content_sha256), so an agent knows exactly what it gets.

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?

The parenthetical about parsing the body 'to diff or patch and resubmit as a new version' gives a concrete usage context that implicitly chains to patch_workflow and create_workflow_version. It does not explicitly name alternatives or exclusions (e.g., when to use get_workflow instead), so it stops short of a 5.

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

invite_visitorInvite visitorAInspect

Invite someone by email to this workspace's private pages, and only those: a visitor is a member with the Visitor role, who never sees the console, these tools or the workspace's resources, and takes no seat. Tessryx sends no email. Give the person the link to a page whose endpoint lists ROLE_VISITOR in auth.allow.tenant_roles; they sign in or sign up with this address and accept on one screen. tenant_roles is an exact match: list every role that should get in, e.g. ["ROLE_VISITOR", "ROLE_OWNER", "ROLE_ADMIN"], or the owner is shut out of their own page. Pass sites to admit them to some of the workspace's sites only (a folder, an app, or a custom domain): when the workspace runs more than one site, such as one per client, always pass the sites the person is for. Without sites they may see every members-only page that admits visitors. Refused if the address is already on the team, already a visitor (change their sites with set_visitor_sites), or already invited, and past the plan's visitor limit (pending invites count).

NameRequiredDescriptionDefault
emailYesThe person's email address. They must sign in with exactly this address to accept.
sitesNoThe sites this person is for, each one folder, app or domain. Omit for all of the workspace's sites.

Output Schema

NameRequiredDescription
emailYes
sitesYes
all_sitesYes
created_atYes
invited_by_user_idYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=false, idempotentHint=false and destructiveHint=false; the description adds material behavior the annotations cannot: no email is sent by the system, the invitee must accept via a page whose endpoint lists ROLE_VISITOR in auth.allow.tenant_roles, tenant_roles is an exact match (omitting the owner would shut them out), and pending invites count against the plan limit. The non-idempotent hint is consistent with "refused if... already invited" — no contradiction.

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?

The core action and its scope are front-loaded in the first clause, and every sentence carries operational weight. It is nonetheless a single dense block for a two-parameter tool, with the tenant_roles aside sitting between the invite step and the sites guidance, which slightly disrupts reading order.

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 no explanation; the description instead covers what an agent could get wrong — email exactness, the acceptance flow, the tenant_roles requirement, site scoping, and all refusal cases. Nothing needed to invoke this correctly is missing.

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 baseline is 3, and the description rises above it by explaining the consequence of omitting sites ("they may see every members-only page that admits visitors") and the operational rule for choosing sites per client. The tenant_roles exact-match warning adds real acceptance-failure context that the schema cannot express, though some of the sites guidance overlaps the schema's own descriptions.

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?

Opens with a specific verb and resource ("Invite someone by email to this workspace's private pages") and immediately scopes it to private pages only, defining the resulting entity as "a member with the Visitor role." That definition alone distinguishes it from set_member_scope, create_app, and the other siblings.

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 names the alternative for a related task ("change their sites with set_visitor_sites") and states the conditions under which the call is refused: already on the team, already a visitor, already invited, or past the plan's visitor limit. It also tells the agent to always pass sites when the workspace runs more than one site, which is a concrete when-to-use rule rather than an implication.

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

list_api_templatesList API templatesB
Read-onlyIdempotent
Inspect

List the api templates belonging to the authenticated tenant. An api template is a reusable, parameterized HTTP or gRPC request a workflow invokes to reach an external system.

NameRequiredDescriptionDefault
page_sizeNomaximum number of templates to return in this page
page_tokenNotoken from a previous response's next_page_token to fetch the next page
slug_prefixNoonly return templates whose slug starts with this prefix

Output Schema

NameRequiredDescription
templatesYes
next_page_tokenYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already establish read-only, idempotent, non-destructive, and non-open-world behavior. The description adds tenant scoping and a resource definition, but does not describe ordering, pagination behavior, or what happens with no results.

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 sentences, front-loaded with the tool's purpose, with the second sentence efficiently defining the resource. No redundant or filler content.

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 simple read-only list tool with full schema coverage and an output schema, the description covers scope and resource identity. It could mention pagination or result ordering, but those are adequately handled by the schema and output contract.

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 parameters are already fully documented. The description does not add meaning beyond the schema, which is acceptable but leaves this dimension at the baseline.

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?

The description gives a specific verb and resource (list API templates) and defines what an API template is, plus the tenant scope. It is clear against the `get_api_template` sibling by implication, but does not explicitly distinguish itself from other list/read operations.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus alternatives such as `get_api_template` or other list endpoints. Usage is only implied by the verb 'List' and the tenant-scoping sentence.

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

list_appsList appsA
Read-onlyIdempotent
Inspect

List the apps belonging to the authenticated tenant. An APP is the foremost organizing container — a versioned, publishable grouping of resources (schemas, datafiles, api templates, workflows, dynamic endpoints, schedules) that share a slug-folder prefix, e.g. everything under 'storefront/'. When building a new page or a shared-API bundle, work inside an app: pick its slug prefix, then author each resource under that prefix so it is captured automatically. Returns summaries; fetch one with get_app.

NameRequiredDescriptionDefault
page_sizeNomaximum number of apps to return in this page
page_tokenNotoken from a previous response's next_page_token to fetch the next page
slug_prefixNoonly return apps whose slug starts with this prefix

Output Schema

NameRequiredDescription
appsYes
next_page_tokenYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds value beyond that by disclosing that results are tenant-scoped and that it 'Returns summaries' rather than full objects — a meaningful behavioral detail the agent would otherwise only learn from a failed assumption.

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-loaded with the core action, and every sentence carries information: scope, a definition of the resource domain, and the routing hint to get_app. The middle sentence is long but earns its length by teaching the agent the app/slug-prefix model it needs to author resources correctly.

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 structure needn't be spelled out, and the description still flags that returns are summaries. Combined with tenant scoping and the get_app pointer, an agent has enough to call this correctly; only pagination behavior is left entirely 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%, with page_size, page_token and slug_prefix each documented in the schema, so the baseline is 3. The description adds no parameter-level meaning — it never mentions prefix filtering or pagination — so it neither compensates nor detracts.

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 resource ('List the apps') plus the scope ('belonging to the authenticated tenant'), and then defines what an APP is with concrete examples ('storefront/'). It also contrasts itself with get_app ('fetch one with get_app'), so the agent can distinguish it from the many sibling list_* and get_* tools.

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?

Provides clear usage context ('When building a new page or a shared-API bundle, work inside an app: pick its slug prefix...') and names the alternative for full details ('fetch one with get_app'). It stops short of explicit when-not-to-use guidance versus sibling lists like list_app_versions, but the context is sufficient to select the tool.

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

list_app_versionsList app versionsA
Read-onlyIdempotent
Inspect

Get the earliest and latest version numbers of an app (by slug or id), to know the range you can fetch with get_app_version.

NameRequiredDescriptionDefault
slugNothe app slug (provide this or app_id)
app_idNothe app id (provide this or slug)

Output Schema

NameRequiredDescription
latest_versionYes
earliest_versionYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the bar is lower. The description still adds a genuinely useful behavioral fact beyond the schema: the result is a bounded range (earliest and latest only), not an enumeration, which prevents an agent from assuming it can page through all versions.

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 sentence with the return scope front-loaded and the follow-up tool named at the end. Nothing is redundant and nothing needs to be re-read.

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?

Annotations cover the safety profile, an output schema covers the return shape, and the schema covers both parameters, so the description only needs the one thing structured fields cannot express — that the output is a range, not a list — and it delivers that. Minor gap: no mention of behavior for apps with zero or one version.

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% and both parameters already document the 'provide this or app_id' mutual-exclusivity rule. The description's '(by slug or id)' merely restates that, adding no format, precedence, or validation detail beyond the schema, so the baseline 3 applies.

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 and resource: 'Get the earliest and latest version numbers of an app (by slug or id)'. This also corrects the potentially misleading name 'list_app_versions' by clarifying it returns a range, not a full list, and it distinguishes itself from the sibling get_app_version.

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?

Explicitly names the follow-up/alternative tool and the condition that selects it: use this 'to know the range you can fetch with get_app_version'. It stops short of stating when not to use it (e.g. if you already know the version number), but the routing intent is clear.

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

list_assetsList assetsA
Read-onlyIdempotent
Inspect

List the binary assets (images, files) this tenant has published to the media CDN, with each asset's absolute URL. Supports a slug-prefix browse and pagination. Assets are produced by a workflow's asset block; use this to see what has already been published and to get an asset's URL to embed in a page. If the image or file you need is not here, send the user to https://tessryx.io/dashboard/media to upload it — you cannot upload a binary the user has not given you.

NameRequiredDescriptionDefault
page_sizeNomaximum number of assets to return in this page
page_tokenNotoken from a previous response's next_page_token to fetch the next page
slug_prefixNoonly return assets whose slug starts with this prefix (hierarchical browse, e.g. 'products/hero')
exact_slug_prefixNoif true, only return assets directly under slug_prefix (not deeper descendants)
include_level_prefixesNoif true, also return the child folder prefixes at the current level

Output Schema

NameRequiredDescription
assetsYes
next_page_tokenNo
current_level_prefixesNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuinely new context: assets originate from a workflow's asset block, and the tool cannot upload binaries the user has not provided, which prevents a plausible agent misuse.

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?

Four sentences, each doing work, with the core purpose and URL payload front-loaded. The closing upload caveat is slightly tangential to 'list' but is high-value guidance, so it earns its place; structure is otherwise tight.

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?

With an output schema present, the description need not explain return values, and it still covers origin of assets, the URL of each item, filtering/pagination capability, and the upload limitation. Nothing an agent needs to call this correctly or interpret its role is missing.

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 page_size, page_token, slug_prefix, exact_slug_prefix and include_level_prefixes are all documented in the schema itself. The description only echoes the high-level capabilities ('slug-prefix browse and pagination') without explaining interactions such as how exact_slug_prefix modifies slug_prefix. Baseline 3 applies when the schema carries the weight.

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 resource (list binary assets on the media CDN) and adds the distinguishing payload detail that each asset comes with its absolute URL. It is clearly separable from sibling reads like get_asset and from non-binary list tools like list_datafiles.

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?

Gives concrete usage contexts: see what a workflow's asset block has already published, and fetch a URL to embed in a page. It also states an exclusion path — if the asset isn't listed, send the user to the dashboard to upload — but never names get_asset as the single-asset alternative, so the routing is not fully explicit.

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

list_custom_domainsList custom domainsA
Read-onlyIdempotent
Inspect

List the custom domains claimed by the authenticated tenant. A custom domain serves the tenant's dynamic endpoints on the customer's own hostname (shop.customer.com) instead of the default .tessryx.app/ URL. Optionally filter by lifecycle status (PENDING, VERIFIED, CERT_PENDING, ACTIVE).

NameRequiredDescriptionDefault
statusNoonly return domains in this lifecycle status: PENDING, VERIFIED, CERT_PENDING, or ACTIVE; omit for all
page_sizeNomaximum number of domains to return in this page
page_tokenNotoken from a previous response's next_page_token to fetch the next page

Output Schema

NameRequiredDescription
domainsYes
next_page_tokenYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description earns credit beyond that by scoping results to the authenticated tenant and explaining what a custom domain actually represents (serving dynamic endpoints on the customer's hostname instead of the default URL). It does not mention pagination behavior, but that is documented in the schema.

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?

Three sentences, front-loaded with the action and scope; the filtering hint lands last where an agent looks for it. The middle sentence on domain semantics is slightly expansive but still earns its place by clarifying what the listed entities are.

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 shape needn't be described, pagination params are covered by the schema, and annotations carry the safety profile. What remains is the tenant scoping and domain semantics, which the description supplies. Nothing an agent needs in order to call it correctly is missing.

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 all three parameters are already documented, including the exact status enum values. The description's 'Optionally filter by lifecycle status (PENDING, VERIFIED, CERT_PENDING, ACTIVE)' restates what the schema already says without adding format or edge-case detail. 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?

Opens with a specific verb+resource and a clear scope: 'List the custom domains claimed by the authenticated tenant.' This separates it from get_custom_domain, create_custom_domain and update_custom_domain by naming the tenant-wide collection, though it never explicitly names those siblings.

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?

It says the status filter is optional and enumerates the values, which is mild usage guidance for the parameter. But there is no explicit statement of when to reach for this versus get_custom_domain for a single domain, and no exclusions or prerequisites — usage is implied rather than directed.

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

list_datafilesList datafilesB
Read-onlyIdempotent
Inspect

List the datafiles belonging to the authenticated tenant. A datafile is a published JSON object served from a CDN — the data layer a page can fetch and hydrate from.

NameRequiredDescriptionDefault
page_sizeNomaximum number of datafiles to return in this page
page_tokenNotoken from a previous response's next_page_token to fetch the next page
slug_prefixNoonly return datafiles under this FOLDER path (matched on whole '/'-delimited segments, NOT as a raw string prefix), e.g. 'blog/posts' (trailing slash optional) returns everything under blog/posts/. A partial segment matches nothing — 'blog/2026-08' will NOT match 'blog/2026-08-01-hello'; use the full segment(s)
include_totalNoif true, also return total_count: the number of datafiles at this folder level (direct children of slug_prefix, or the tenant total when no prefix). Exact-as-full-total for a flat collection like a blog's posts under one prefix; a per-level count when nested. Use it for 'N items' / 'page X of Y'

Output Schema

NameRequiredDescription
datafilesYes
total_countNo
next_page_tokenYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered structurally. The description adds useful domain context (datafiles are CDN-served published JSON for page hydration), but says nothing about pagination behavior, result ordering, or what's omitted when unpublished — gaps the annotations don't fill.

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 short sentences, zero waste, with the operation and scope front-loaded and the resource definition following immediately. Nothing is repeated from the title or annotations.

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?

With full annotation coverage and an output schema, the description needn't explain safety or return shape, and the datafile definition closes the conceptual gap. The only shortfall is the absence of when-to-use routing among many list_* siblings, which is the one thing structured fields can't supply.

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%, and the schema's own descriptions (especially the detailed slug_prefix segment-matching note and include_total semantics) are unusually rich, so the schema carries the full parameter burden. The description contributes nothing about any of the four parameters, which is acceptable but not additive — baseline 3.

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 (datafiles) and scopes it to the authenticated tenant, and the second sentence defines what a datafile actually is. The 'list' vs 'get_datafile' distinction is inferable from the verb, but no sibling is named explicitly, keeping it at 4 rather than 5.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus get_datafile, list_assets, or any other sibling, and no mention of the pagination/folder-prefix workflow that governs how you'd actually page through results. The tenant scoping is the only contextual signal, so usage is left to inference.

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

list_dynamic_endpoint_runsList dynamic endpoint runsA
Read-onlyIdempotent
Inspect

List a dynamic endpoint's recent EXECUTIONS, newest-first — the place to look when a live page is broken. Each item carries the outcome (status + the failure message the public URL hides behind a 500) plus request_path, the resolved path including any :param values, so you can see WHICH request failed on a parameterised endpoint. run_id resolves to the full run and its step traces via get_workflow_run / get_workflow_run_traces. Only cache MISSES that reached the origin appear here, so this is renders, not traffic; history is kept for about two weeks. Defaults to live serves — pass previews=true for the editor-preview history instead.

NameRequiredDescriptionDefault
slugNothe endpoint slug (provide this or endpoint_id)
previewsNolist editor PREVIEW runs instead of live serves; defaults to false (live serves only)
page_sizeNomaximum number of runs to return in this page
page_tokenNotoken from a previous response's next_page_token to fetch the next page
endpoint_idNothe endpoint id (provide this or slug)

Output Schema

NameRequiredDescription
runsYes
next_page_tokenYes

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, it discloses that only cache MISSES reaching the origin appear, that history spans about two weeks, that failure messages are normally hidden behind a public 500, and that live serves are the default with previews opt-in. These are non-obvious behavioral traits an agent could not infer from structured fields.

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?

Purpose is front-loaded in the first clause, and each subsequent sentence carries new information (outcome fields, run_id resolution, cache-miss scope, retention, previews default). Dense but slightly heavy with parentheticals; nearly every sentence earns its place.

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-value detail is not required, yet the description still orients the agent to key item fields (outcome, request_path). With one of slug/endpoint_id optional, the guidance on which to provide is covered by the schema. Nothing material is missing for correct invocation.

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 baseline is 3, but the description adds semantic context: slug/endpoint_id are interchangeable identifiers, request_path resolves :param values, and previews flips between live and editor history. It does not add syntax or paging detail beyond the schema, so not a 5.

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 resource ('List a dynamic endpoint's recent EXECUTIONS, newest-first') and names the motivating scenario (a live page is broken). It is clearly distinguishable from siblings like list_runs, list_schedule_runs, and list_dynamic_endpoints by being scoped to execution history of one endpoint.

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?

Gives an explicit trigger ('the place to look when a live page is broken'), an explicit exclusion in scope (cache misses only, renders not traffic), and routes onward to alternatives: get_workflow_run / get_workflow_run_traces for full runs, and previews=true for editor-preview history.

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

list_dynamic_endpointsList dynamic endpointsB
Read-onlyIdempotent
Inspect

List the dynamic endpoints belonging to the authenticated tenant. A dynamic endpoint binds a public URL to a workflow; it is both a page render and a callable API route.

NameRequiredDescriptionDefault
page_sizeNomaximum number of endpoints to return in this page
page_tokenNotoken from a previous response's next_page_token to fetch the next page
slug_prefixNoonly return endpoints whose slug starts with this prefix

Output Schema

NameRequiredDescription
endpointsYes
next_page_tokenYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds useful tenant-scoping and explains the domain concept of a dynamic endpoint, but it does not discuss pagination, filtering behavior, or any other operational traits beyond that.

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?

The description is two concise sentences with no filler. It front-loads the primary purpose before adding the domain definition.

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 simple list tool with rich annotations, a fully described input schema, and an output schema, the description is largely complete. The main gap is the lack of explicit routing guidance against sibling list/get operations, but nothing required to invoke the tool correctly is missing.

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 page_size, page_token, and slug_prefix are already documented in the input schema. The description adds no parameter-specific meaning or formatting guidance, so the baseline of 3 is appropriate.

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?

The description uses a specific verb and resource ('List the dynamic endpoints') and scopes it to the authenticated tenant. It also defines what a dynamic endpoint is, making the resource understandable. It does not explicitly distinguish this from nearby siblings such as get_dynamic_endpoint or list_dynamic_endpoint_runs.

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

Usage Guidelines2/5

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

The description implies enumeration through the verb 'List,' but gives no explicit guidance on when to use this versus get_dynamic_endpoint, preview_dynamic_endpoint, or list_dynamic_endpoint_runs. There are no stated exclusions, prerequisites, or alternative-selection rules.

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

list_guidesList guidesA
Read-onlyIdempotent
Inspect

List the available Tessryx guides (topic + what each covers). Read a guide with get_guide before building something you're unsure how to model — they cover the platform overview, an end-to-end page recipe, and the authoring lifecycle.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
guidesYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world, so the safety profile is covered. The description adds non-redundant context: this is an index/table-of-contents call whose value is knowing what topics exist, and it names the three topic areas so the agent knows what to expect. It does not add cost/pagination caveats, but with full annotation coverage that is minor.

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 sentences, zero filler: the first defines the output shape, the second delivers the routing advice and the content preview. Nothing repeats the title or the annotations.

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?

A zero-parameter discovery tool with an output schema, so return values and pagination need no explanation. The description supplies exactly what the structured data cannot: why the agent would call this and what it leads to.

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?

Zero parameters, so the baseline is 4. The description correctly says nothing about arguments and instead spends its words on the semantic meaning of the returned list.

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?

Uses a specific verb+resource ("List the available Tessryx guides") and even characterizes the payload ("topic + what each covers"). It implicitly separates itself from get_guide, which fetches a single guide, though the distinction is carried more by the usage sentence than by the purpose statement itself.

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 names the alternative (get_guide) and the trigger condition ("before building something you're unsure how to model"), then lists what the guides actually cover so the agent can judge relevance without calling it first. This is a complete when/when-not/alternative routing instruction.

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

list_runsList workflow runsA
Read-onlyIdempotent
Inspect

List a workflow's past runs, most-recent-first, by workflow id; or, with chain_id, one chain's runs in link order (a chain is a long job run as successive runs of one workflow; its id is the run_id of its first run). Optionally filter by status (succeeded, failed, running, cancelled). Returns run summaries (run_id, status, message, timestamps, and chain for a run in a chain: its link_index and whether it continues, false once the chain has finished); use get_workflow_run for a run's output or get_workflow_run_traces for per-step detail.

NameRequiredDescriptionDefault
statusNooptional status filter: succeeded, failed, running, or cancelled; omit for all
chain_idNolist one chain's runs instead, in link order: the chain id is the run_id of its first run
page_sizeNomaximum number of runs to return in this page
page_tokenNotoken from a previous response's next_page_token to fetch the next page
workflow_idNothe workflow id whose runs to list (most recent first); required unless chain_id is given

Output Schema

NameRequiredDescription
runsYes
next_page_tokenNo

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive, closed-world, so the bar is lower; the description adds real value with most-recent-first ordering, chain link ordering, the chain termination semantics ('false once the chain has finished'), and the returned fields. It omits pagination behavior beyond implying page_token round-tripping, which keeps it from 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-loaded with the primary mode before the alternative, and every clause carries information (modes, filter, return shape, sibling routing). The parenthetical defining a chain is dense and slightly hard to parse in one pass, but nothing is wasted.

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?

Given an output schema exists and annotations carry the safety profile, the description supplies exactly the missing conceptual layer: what a chain is, how chain_id relates to run_id, ordering guarantees, and where to go for outputs and traces. 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.

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; the description nonetheless adds semantics the schema cannot express, notably that chain_id is the run_id of the chain's first run and that listing flips into link order. It also restates the status filter values, which the schema already documents, so it is additive rather than complete.

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 resource ('List a workflow's past runs') plus two explicit modes (by workflow_id, or by chain_id in link order). It is clearly distinguishable from get_workflow_run and get_workflow_run_traces, which are named as the tools for output and per-step detail.

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?

It says which parameter selects which mode and, crucially, routes the agent elsewhere for output ('use get_workflow_run') and per-step detail ('get_workflow_run_traces'). The 'workflow id required unless chain_id is given' condition is spelled out, so an agent can choose among siblings without opening schemas.

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

list_schedule_runsList schedule runsA
Read-onlyIdempotent
Inspect

List a schedule's fire history, newest-first. Each item is a thin REFERENCE to a workflow run (run_id + the cron slot it fired for) — resolve its status/output/traces with the workflow run tools (get_workflow_run / get_workflow_run_traces). An AUTOMATIC fire is stored as a diagnosis, not an archive: its status, message, failing step and a head of each captured value are kept, but the output is sampled (output_truncated) and large trace values are shortened. Use run_schedule_now to capture a firing in full.

NameRequiredDescriptionDefault
page_sizeNomaximum number of runs to return in this page
page_tokenNotoken from a previous response's next_page_token to fetch the next page
schedule_idYesthe schedule id whose run history to list

Output Schema

NameRequiredDescription
runsYes
next_page_tokenYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), yet the description adds real behavioral context beyond them: automatic fires are stored as diagnoses, outputs are sampled with an output_truncated flag, and large trace values are shortened. This data-fidelity caveat is exactly what an agent needs to avoid mistaking a truncated run for a small one.

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-loaded with the core action and ordering, then layered with reference semantics and caveats. Three dense sentences with no filler, though the diagnosis/sampling sentence is packed enough to require a second read.

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 shape needn't be explained, and the description still covers the one thing the schema cannot convey: that returned entries are references and that outputs may be sampled. Nothing needed to call this correctly is missing.

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% and all three parameters (schedule_id, page_size, page_token) are documented in the schema, so the baseline is 3. The description adds no syntax or paging nuance beyond what the schema already provides.

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 resource ("List a schedule's fire history") plus the ordering ("newest-first"), which is more than the title restates. It also frames the return as thin references rather than full runs, so an agent knows this is not the same as list_runs/get_workflow_run.

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 routes the agent: use get_workflow_run / get_workflow_run_traces to resolve status/output/traces, and use run_schedule_now to capture a firing in full. Both the alternative and the condition selecting it are named.

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

list_schedulesList schedulesA
Read-onlyIdempotent
Inspect

List the schedules belonging to the authenticated tenant. A schedule is "cron for workflows": it runs a workflow on a recurring cron. Returns summaries (no definition body); fetch a body with get_schedule / get_schedule_version.

NameRequiredDescriptionDefault
page_sizeNomaximum number of schedules to return in this page
page_tokenNotoken from a previous response's next_page_token to fetch the next page
slug_prefixNoonly return schedules whose slug starts with this prefix

Output Schema

NameRequiredDescription
schedulesYes
next_page_tokenYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive, so the description's remaining job is scoping — and it delivers by stating results are tenant-scoped and summary-level only (no definition body). It stops short of saying how pages or ordering behave, but the safety/mutation profile is fully covered.

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 short sentences, zero filler: scope first, definition second, return-shape plus alternative last. Every sentence earns its place and nothing is repeated from the schema or annotations.

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 no explanation, and the description still flags the summary-vs-body distinction that matters for an agent's next step. Authentication framing (authenticated tenant) and the escape hatch to detail tools are both present.

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 page_size, page_token, and slug_prefix are already fully documented in the schema. The description adds nothing about prefix matching or paging beyond that, which is acceptable but leaves it at the 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 (List) and resource (schedules) plus the tenant scope, and explicitly distinguishes itself from get_schedule / get_schedule_version by noting it returns summaries without definition bodies. The 'cron for workflows' gloss removes ambiguity about what a schedule is for an agent that has never seen this domain.

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?

Clearly routes the agent: use this for a listing, then call get_schedule or get_schedule_version to obtain a definition body. It does not, however, mention the neighbouring list_schedule_runs or list_schedule_versions siblings, so the agent must infer that runs and versions live elsewhere.

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

list_schedule_versionsList schedule versionsA
Read-onlyIdempotent
Inspect

Get the earliest and latest version numbers of a schedule (by slug or id), to know the range you can fetch with get_schedule_version.

NameRequiredDescriptionDefault
slugNothe schedule slug (provide this or schedule_id)
schedule_idNothe schedule id (provide this or slug)

Output Schema

NameRequiredDescription
latest_versionYes
earliest_versionYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds a genuinely useful trait beyond them: it returns only the earliest and latest version numbers, not the full version list the name 'list_schedule_versions' might imply. Error behavior for a missing slug/id is not covered.

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 sentence that front-loads the return value and closes with the follow-up tool. Every clause earns its place with no redundancy.

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?

Low-complexity read tool with full schema coverage, an output schema that documents the return shape, and annotations covering safety. Nothing an agent needs to invoke it correctly is missing.

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% and both parameters already document the 'provide this or schedule_id' either/or constraint, so the description's '(by slug or id)' is essentially a restatement. Baseline 3 applies since the schema does the work.

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 resource — getting the earliest and latest version numbers of a schedule — and pins the input modes (slug or id). It is clearly distinguishable from get_schedule_version (fetches a single version) and list_schedules (lists schedules, not versions).

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?

Explicitly frames the use case: 'to know the range you can fetch with get_schedule_version', which routes the agent into the correct follow-up call. No explicit when-not-to-use or exclusion against get_schedule, but the intended workflow is unambiguous.

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

list_schemasList schemasA
Read-onlyIdempotent
Inspect

List the schemas belonging to the authenticated tenant. Schemas are JSON Schemas that datafiles validate against; reference one by schema_id when creating a datafile.

NameRequiredDescriptionDefault
page_sizeNomaximum number of schemas to return in this page
page_tokenNotoken from a previous response's next_page_token to fetch the next page
slug_prefixNoonly return schemas whose slug starts with this prefix

Output Schema

NameRequiredDescription
schemasYes
next_page_tokenYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, so the safety profile is covered. The description adds value beyond that by scoping results to the authenticated tenant and explaining what a schema is and how its id is consumed by create_datafile, which is genuine behavioral context an agent would otherwise have to infer.

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 short sentences with no filler; the scope constraint and the domain definition are both front-loaded and every clause carries information the agent needs.

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?

Output schema exists, so return values need no explanation, and pagination parameters are fully documented in the schema. Combined with the tenant scoping and the cross-reference to create_datafile, the description leaves 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% and all three parameters (page_size, page_token, slug_prefix) are documented there. The description adds no parameter-level meaning such as ordering, default page size, or slug semantics, so the baseline of 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 and resource ('List the schemas') plus scope ('belonging to the authenticated tenant'), which is more precise than the bare title. It does not explicitly distinguish itself from get_schema or create_schema, but the list-vs-single split is inferable from the name and the sibling set.

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?

Use case is implied by the sentence about referencing a schema_id when creating a datafile, which hints at discovery-before-create. However, there is no explicit when-to-use/when-not guidance and no named alternative such as get_schema for fetching a known schema by id.

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

list_secretsList secretsA
Read-onlyIdempotent
Inspect

List the secrets belonging to the authenticated tenant (metadata only — never the secret value). A secret is a stored credential (API key, token) that an api template references by slug in its auth block to inject on outbound calls. Use this to discover which secrets exist so you can wire an api template's auth.secret to the right slug. If the secret you need does not exist yet, send the user to https://tessryx.io/dashboard/secrets to create it — secrets cannot be created or set through this assistant.

NameRequiredDescriptionDefault
page_sizeNomaximum number of secrets to return in this page
page_tokenNotoken from a previous response's next_page_token to fetch the next page
slug_prefixNoonly return secrets whose slug starts with this prefix

Output Schema

NameRequiredDescription
secretsYes
next_page_tokenYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description still adds real behavioral context beyond them: only metadata is returned and secret values are never exposed, and creation of secrets is out of scope entirely. It stops short of stating pagination or result-shape behavior, but the output schema carries that.

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 sentences, each doing distinct work: purpose and scope first, then the use case, then the exclusion and off-ramp. No repetition of the name or annotations, and the most decision-relevant facts are front-loaded.

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?

For a read-only list tool with full schema coverage, an output schema and complete annotations, the description supplies everything an agent needs: what is returned, what is deliberately withheld, and where to go when the needed resource is absent. No material gap remains.

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 page_size, page_token and slug_prefix are already documented in the schema. The description adds no format or syntax detail for them (e.g. how slug_prefix matching works, sensible page sizes), so the baseline 3 applies.

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 resource ('List the secrets belonging to the authenticated tenant') plus an explicit scope constraint ('metadata only — never the secret value') that separates it from get_secret. It also defines what a secret is, so an agent new to the domain understands the resource immediately.

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?

Gives a concrete when-to-use ('discover which secrets exist so you can wire an api template's auth.secret to the right slug') and an explicit when-not/alternative ('send the user to https://tessryx.io/dashboard/secrets — secrets cannot be created or set through this assistant'). This removes the most likely misfire, an attempt to create a missing secret via this toolset.

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

list_visitorsList visitorsA
Read-onlyIdempotent
Inspect

List this workspace's visitors: people who accepted an invite to its private pages (the default), or with pending=true the invites not accepted yet. Paged; pass next_page_token back as page_token for more. Visitors are named by email address; pass it to remove_visitor.

NameRequiredDescriptionDefault
pendingNotrue lists invites not yet accepted; false or omitted lists visitors who accepted.
page_sizeNoAt most this many per page (default 50, at most 100).
page_tokenNonext_page_token from the previous page.

Output Schema

NameRequiredDescription
invitesYes
pendingYes
visitorsYes
next_page_tokenYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, closed-world and non-destructive, so the safety profile is covered. The description adds real behavioral context beyond that: the result is paged, the returned next_page_token must be fed back as page_token, and visitors are identified by email — none of which the annotations convey.

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 short sentences, zero filler, with the core definition and the default mode front-loaded before the optional mode and pagination mechanics.

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?

For a three-optional-parameter read tool with an output schema and full annotation coverage, the description covers scope, mode selection, pagination, and the natural next action. Nothing an agent needs in order to call it correctly is missing.

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% and each parameter already has a description, so the schema carries the parameter burden. The description restates the pending semantics and the page_token round-trip rather than adding syntax, bounds, or defaults beyond what the schema provides.

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?

The description gives a specific verb and resource ("List this workspace's visitors") and defines the population precisely as people who accepted an invite to private pages, with pending invites as the alternate mode. It does not explicitly differentiate from the sibling list_members, which is the most likely confusion given both list people in a workspace.

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?

It states the default mode (accepted visitors) and the exact switch for the other mode (pending=true), and it names remove_visitor as the follow-on action after obtaining a visitor's email. It stops short of saying when a caller should choose visitors over members.

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

list_workflowsList workflowsA
Read-onlyIdempotent
Inspect

List the workflows belonging to the authenticated tenant. Supports an optional slug prefix filter and pagination.

NameRequiredDescriptionDefault
page_sizeNomaximum number of workflows to return in this page
page_tokenNotoken from a previous response's next_page_token to fetch the next page
slug_prefixNoonly return workflows whose slug starts with this prefix

Output Schema

NameRequiredDescription
workflowsYes
next_page_tokenYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered elsewhere. The description adds tenant scoping and notes pagination support, but does not explain pagination semantics (e.g., that page_token comes from next_page_token in the response) or result ordering.

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 sentences, no filler, with the core action and scope front-loaded before the optional capabilities. Every clause earns its place.

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?

With an output schema present and all parameters documented, the agent needs little more; the tenant scope and pagination note round out what the annotations and schema don't say. Only minor behavioral detail like pagination flow is missing.

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 all three parameters are documented in the schema itself; the description merely echoes the slug prefix filter and pagination. Baseline 3 applies since it adds no meaning beyond the 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 verb and resource ('List the workflows') plus its scope ('belonging to the authenticated tenant'), which lets an agent separate it from get_workflow or mutating siblings like patch_workflow. It stops short of naming the alternative tools that handle single-workflow retrieval, so it is clear but not sibling-differentiated.

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 tenant scoping implies when this tool applies, and the mention of a slug prefix filter hints at a narrowing use case, but there is no explicit guidance such as 'use get_workflow for a single workflow' or when to prefer filtering over fetching all.

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

patch_datafilePatch datafileA
Destructive
Inspect

Edit an EXISTING datafile's JSON in place without resending the whole document — the right tool for changing one field of a large datafile, appending a blog post to a list, or fixing a word in a long string. Apply ordered operations (set / remove / replace_in / test) addressed by a dot-path from the document root (e.g. 'posts[slug=hello].title', or 'posts[-]' with op 'set' to APPEND). Pass values as raw JSON — the platform owns the escaping. For a SMALL change to a LARGE string use replace_in (find→replace, must match exactly once) so you send a few bytes. For a large NEW value send it with value_encoding=base64 (or gzip+base64) plus a value_sha256, so transcription damage is rejected instead of silently written. This is SAFER than update_datafile, not just cheaper: the patch is applied to the content it just read and the write is gated on that exact content, so a concurrent write is always reported rather than clobbered — no read-modify-write race, even with no arguments from you. The result is validated against the datafile's bound schema before it lands; a patch that would break the schema is rejected and nothing is written. Property order is preserved: untouched parts of the document come back byte-identical, so the change you make is the whole diff. Set republish=true to push the result to the CDN path it was last published at.

NameRequiredDescriptionDefault
slugNothe datafile slug (provide this or datafile_id)
republishNoafter patching, re-publish to the CDN path this datafile was last published at. Errors if it has never been published (use publish_datafile with an explicit public_path first); the patch still applied.
operationsYesordered edits applied to the datafile's stored JSON
datafile_idNothe datafile id (provide this or slug)
expected_content_sha256Nothe content_sha256 from the get_datafile you built these operations from. If the stored content has moved since, the patch is REFUSED — nothing is applied, nothing is written. REQUIRED when any path addresses an array element by numeric index (items[2]), because that is a claim about the document's current shape whose failure is otherwise SILENT: if an element shifted, the write is still internally consistent and edits the wrong one. Optional for self-locating paths — items[slug=my-post], items[-] (append), or a plain key — which mean the same thing whatever the document holds, so appending to a large collection needs no read. Independently of this argument, the write is always gated on the content the patch itself just read, so it can never clobber a concurrent write.

Output Schema

NameRequiredDescription
datafileYes
public_urlNo

TDQS

A4.6/5.0
Behavior5/5

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

The description adds substantial behavior beyond the annotations: it explains optimistic concurrency gating, schema validation before write, byte-identical preservation of untouched content, append semantics, and republish failure behavior. These details materially help an agent understand the write's safety and side effects.

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?

The description is front-loaded with purpose and use cases, and most sentences add relevant information. It is dense and long for a tool description, but the complexity of patching, validation, encoding, and concurrency justifies most of the length.

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?

Given the rich schema, annotations, and output schema, the description is complete enough for an agent to invoke the tool correctly. It covers the operation model, safety model, encoding guidance, schema validation, and republish behavior without needing to explain return values.

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 useful semantic context for operations, dot-paths, append syntax, replace_in exact-match requirements, and base64 encoding for large values. It does not need to repeat every parameter detail, but it meaningfully supplements the schema.

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?

The description states a specific verb and resource: editing an existing datafile's JSON in place without resending the whole document. It explicitly distinguishes the tool from update_datafile and names concrete use cases, so an agent can identify it without opening the schema.

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?

It clearly says when this is the right tool, such as changing one field of a large datafile or appending to a list, and contrasts it with update_datafile as the safer alternative. It lacks an explicit statement of when update_datafile would be preferable, so it falls short of full when/when-not guidance.

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

patch_workflowPatch workflowAInspect

Edit an EXISTING workflow's latest version in place without resending the whole definition. Apply ordered operations (set / remove / replace_in / test) addressed by step name + a dot-path (e.g. step 'generate' path 'llm.system'), passing new code or values as raw JSON — the platform owns the escaping, so you never hand-escape the definition. For a SMALL change to a LARGE value (swap a color, fix a word), use replace_in (find→replace, unique match) so you send a few bytes, not the whole value. For a large NEW value (an embedded HTML page, a long JS block) send it with value_encoding=base64 (or gzip+base64) and a value_sha256 — base64 avoids the escapes/multibyte chars that corrupt in transit, and the sha rejects the op if it was altered anyway, so the write can't silently ship broken. The patched result is statically validated BEFORE it is written: if validation fails, no version is created and the findings are returned (valid=false). On success a NEW version is minted from the latest (an unpublished draft unless publish=true) — so there's no separate preview step: just patch it, then run_workflow / preview the created draft to see it rendered. Use this to change one block; use create_workflow_version for a wholesale rewrite.

NameRequiredDescriptionDefault
slugNothe workflow slug (provide this or workflow_id)
publishNopublish the resulting version immediately (ignored if validation fails)
operationsYesordered edits applied to the LATEST version's definition
workflow_idNothe workflow id (provide this or slug)
expected_content_sha256Nothe content_sha256 from the get_workflow_version you built these operations from. The patch is rejected if the latest version has changed since — nothing is applied and no version is minted. REQUIRED when any path addresses an array element by numeric index (variables[0]), because that is a claim about the definition's current shape whose failure is otherwise SILENT: if an element shifted, the patch edits the wrong one. Optional for self-locating paths — variables[name=css], variables[-] (append), a step addressed by name, or a plain field path — which mean the same thing whatever the definition holds

Output Schema

NameRequiredDescription
validYes
createdYes
versionNo
findingsNo
publishedYes
workflow_idNo

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only cover the safety profile (readOnly false, destructive false, idempotent false, openWorld true); the description adds substantive behavior beyond them. It discloses that static validation runs BEFORE the write, that a failed validation creates no version and returns findings (valid=false), that a new version is minted from the latest as an unpublished draft unless publish=true, and that base64+sha256 guards against corrupted or altered payloads.

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?

It is long, but front-loaded with the core purpose and every paragraph carries actionable content. There is some redundancy — the corruption rationale for base64 is explained twice — which keeps it just short of a 5.

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?

For a mutation tool with an output schema, the description covers what an agent needs: validation semantics, version-minting behavior, the publish flag, the staleness guard, and how to verify the result (run_workflow / preview the draft). Nothing operational is missing.

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 baseline is 3 and the schema already carries the per-parameter detail. The description's mentions of replace_in, value_encoding=base64/gzip+base64 and value_sha256 largely restate what the schema fields already say, though it does add the decision rationale for choosing between them.

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?

The first sentence states a specific verb, resource and scope: editing an EXISTING workflow's latest version in place without resending the whole definition. The closing sentence explicitly names the sibling it is not (create_workflow_version for wholesale rewrites), so an agent can route between them without opening either 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?

It gives explicit when-to-use rules with alternatives: replace_in for a small change to a large value, set with base64 for a large new value, create_workflow_version for a rewrite, and patch-then-preview instead of a separate preview step. The publish=true / draft distinction is also spelled out.

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

preview_dynamic_endpointPreview dynamic endpointA
Destructive
Inspect

Render what a dynamic endpoint serves WITHOUT publishing — runs the endpoint's workflow through the full serve path (input + bound datafile + content-type) and returns the response, so you can preview a DRAFT before publishing (or verify any version). Omit version to preview the latest draft; pass a version to preview that one. For a :param endpoint (e.g. 'post/:slug'), pass sample params (e.g. {"slug":"hello"}) — they run through the definition's input_transform, so you can preview a specific URL and confirm a good value renders and a bad one fails input validation. To preview a specific request, also pass its query string, method, body (+ content_type), headers and cookies: they are read exactly as serving reads a live request (only declared names reach the transform; what serving refuses fails the preview with serving's reason). On a verify endpoint (webhook or Turnstile) nothing is checked: it runs as though the provider accepted the request, and message says so. This executes the workflow (may have side effects). Returns content_type, output (decoded as a string), the run status (status=failed with a message when the render did not succeed), the run_id (drill into the full run/traces with get_workflow_run_traces), and resolved_input (the $input the transform produced, for debugging the mapping).

NameRequiredDescriptionDefault
bodyNothe sample request body, for a method that carries one: a JSON value (sent as application/json), or a string sent as-is, such as a form ("name=Ada&email=ada%40example.com" with content_type application/x-www-form-urlencoded). Parsed as serving parses a live body; the transform reads it as body
slugNothe endpoint slug (provide this or endpoint_id)
queryNoa sample query string, exactly what follows '?' in the URL (e.g. "q=lamps&tag=a&tag=b"). Only the names the endpoint declares in its query list reach the input_transform as query.<name> (a repeated name becomes an array); on a strict_query endpoint an undeclared name fails the preview with serving's 400
methodNothe sample request's HTTP method (GET, POST, PUT, PATCH, DELETE); default GET. Must be one the endpoint lists, else the preview fails as serving would answer 405. The transform reads it as request.method
paramsNosample path parameters for a :param endpoint (e.g. {"slug":"hello"} for a 'post/:slug' endpoint); fed to the definition's input_transform to build $input, so you can preview a specific URL and confirm it passes the workflow's input_schema
cookiesNosample cookies by name. Only the ones the endpoint declares in cookies reach request.cookies; others, and protected names (__Host-, __Secure-, __cf, _cf, cf_), are dropped
headersNosample request headers by name. Only the ones the endpoint declares in headers reach request.headers (and, on a verify webhook, the provider's delivery headers); others are dropped
versionNospecific version to preview; omit (0) for the latest version (the draft)
endpoint_idNothe endpoint id (provide this or slug)
content_typeNothe sample body's Content-Type: application/json (the default) or application/x-www-form-urlencoded
viewer_emailNosimulated viewer's email, bound as auth.email. Only takes effect when the endpoint has a role allowlist (auth.allow.tenant_roles) — that is the only case where a real address reaches a workflow, so a preview without one ignores this, exactly as serving would
viewer_rolesNosimulated viewer's roles in this workspace, bound as auth.roles (e.g. ["ROLE_ADMIN"]) so you can preview role-gated rendering. Like viewer_email, only takes effect on an endpoint with a role allowlist
viewer_user_idNosimulate a signed-in viewer for previewing a gated endpoint that exposes identity: the derived auth.viewer_id is computed from this, so the preview shows the real identifier. Omit it and a visible placeholder stands in. Ignored unless the endpoint gates and exposes identity

Output Schema

NameRequiredDescription
outputYes
run_idNo
statusYes
messageNo
content_typeYes
resolved_inputNo

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare destructiveHint=true, readOnlyHint=false, openWorldHint=true, idempotentHint=false, and the description corroborates with the critical warning 'This executes the workflow (may have side effects)' rather than contradicting it. It adds behavior the annotations cannot express: verify endpoints skip provider checks and say so in `message`, undeclared names are dropped before the transform, strict_query returns serving's 400 and a wrong method returns a 405. It also names the return payload (content_type, output, status, run_id, resolved_input).

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-loaded with the core action and the no-publish constraint, then built as a sequence of conditional cases, so an agent can scan to the branch it needs. It is a single dense paragraph with some run-on stretches (the params/query/body clause is heavy), so it is efficient but not maximally crisp.

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?

For a 13-parameter, side-effecting tool with nested objects and an output schema, the description covers the risky edge cases an agent must know before calling: draft vs version selection, path-param enumeration, simulated request surface, role-gating behavior on viewer_*, and the verify-endpoint shortcut. It even points to the sibling (get_workflow_run_traces) for drilling into run_id, so nothing critical is left open.

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 description coverage is 100%, so the baseline is 3, but the description earns above it by explaining parameter interaction: version=0/omitted means the draft, `params` are fed to input_transform to build $input, and the viewer_* trio is silently ignored unless the endpoint has a role allowlist. It synthesizes the parameters into scenarios rather than restating each field, though some of this overlaps the already rich schema descriptions.

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 resource — render what a dynamic endpoint serves without publishing — and names the mechanism (runs the workflow through the full serve path). The publish-vs-preview contrast immediately distinguishes it from publish_dynamic_endpoint and get_dynamic_endpoint, which only return the stored definition.

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 tells the agent when to use this (preview a draft before publishing, or verify any published version) and gives selection rules for the ambiguous cases: omit version for the latest draft, pass a version for a specific one, pass `params` for a :param endpoint, pass query/method/body/headers/cookies to simulate a specific request. That is when-to-use guidance with conditional routing, not inference.

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

publish_api_templatePublish API templateAInspect

Publish an api template version, making it the version workflows resolve when they reference it @published.

NameRequiredDescriptionDefault
versionYesthe version number to make live
template_idYesthe template id to publish

Output Schema

NameRequiredDescription
slugYes
versionNo
definitionNo
descriptionYes
template_idYes
display_nameYes
latest_versionYes
last_published_versionYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already establish the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true), so the description's job is lighter. It adds genuinely useful behavioral context by stating the runtime effect of publishing — that '@published' resolution in workflows switches to this version. It omits the consequence for the previously published version (replacement) and any permission requirements.

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?

One tightly constructed sentence, front-loaded with the action and resource, with the resolution semantics appended as needed context. No filler, nothing repeated from annotations or schema.

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 two-parameter, mutation-style tool with full schema coverage, an output schema (so return values need no explanation), and complete annotations, the description covers what the tool does and why it matters. The remaining gap is the effect on the previously live version and any preconditions, which an agent would still have to guess.

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%: both template_id and version are documented in the schema, including the meaning of version ('the version number to make live'). The description adds no parameter-level detail beyond that, so 3 is the correct baseline when the schema carries the weight.

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?

The description pairs a specific verb ('Publish') with a specific resource ('an api template version') and then explains what publishing semantically achieves: workflows resolving the reference '@published' pick up this version. This differentiates it clearly from the parallel publish_* siblings (publish_workflow, publish_schedule, etc.) and from update_api_template.

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 meaning of 'publish' is explained, which implies the usage context, but there is no explicit when-to-use/when-not guidance, no mention of a prerequisite (the version must presumably exist via create_api_template_version), and no statement about how this differs from unpublish or update operations. Usage is inferable but not spelled out.

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

publish_appPublish appAInspect

Publish an app version, making it the live manifest (visible per role, its selector authoritative). Rejected if the version's membership selects nothing. Publishing an app promotes only its manifest — never its members, which publish independently on their own lifecycles.

NameRequiredDescriptionDefault
app_idYesthe app id to publish
versionYesthe version number to make the live manifest

Output Schema

NameRequiredDescription
slugYes
app_idYes
descriptionYes
display_nameYes
latest_versionYes
published_manifestNo
last_published_versionYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare the mutation profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true), so the description only needs supporting context. It adds meaningful behavior beyond that: the membership precondition that causes rejection and the important scoping rule that publishing promotes only the manifest, never members that publish on their own lifecycles.

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?

Three tight sentences with the core effect front-loaded, then rejection condition, then scope caveat. No filler, though the final sentence is dense and borders on clarifying a distinction more relevant to a nearby tool.

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?

With an output schema present, return values need no explanation, and annotations cover the safety profile. The description supplies the key precondition and the manifest-vs-members scope, leaving little an agent needs that is missing.

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 both app_id and version are already documented in the schema. The description mentions the version's membership semantics, which adds a little meaning, but provides no format or selection details beyond the schema — 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 and resource ('Publish an app version') and explains the resulting effect ('making it the live manifest, visible per role, its selector authoritative'). It is clearly distinct from unpublish_app and the create_*_version siblings, though no sibling is named explicitly.

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?

Gives one concrete precondition ('Rejected if the version's membership selects nothing'), which implies when the call will fail. However, it offers no guidance on when to publish versus creating a new version or unpublishing, so usage context is only implied.

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

publish_datafilePublish datafileAInspect

Publish a datafile to a CDN path you choose, so a page can fetch() it client-side. Only needed for that client-side fetch — NOT to bind a datafile server-side (an endpoint's @latest datafile ref reads the stored draft directly). Pass expected_content_sha256 (from the create/update/get that produced this content) — publish fails if the content changed since, so you publish the exact version you intend. Returns the public CDN URL.

NameRequiredDescriptionDefault
datafile_idYesthe datafile id to publish
public_pathYesthe CDN path to publish at (e.g. data/products.json)
expected_content_sha256Yesthe content_sha256 returned by the create/update/get of this datafile; publish fails if the stored content has changed since, so publish the exact version you intend

Output Schema

NameRequiredDescription
slugYes
public_urlYes
datafile_idYes

TDQS

A4.3/5.0
Behavior4/5

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

Goes beyond the annotations by disclosing a real failure mode (publish fails if stored content changed since the hash was obtained) and the return payload (public CDN URL). It does not address what happens when re-publishing over an existing public_path, which matters given destructiveHint=false and idempotentHint=false, but the added context is substantive.

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 what the tool does, then the usage exclusion, then the concurrency guard — a sensible order with no filler. Slightly redundant in re-explaining expected_content_sha256 after the schema already does so, which keeps it from a 5.

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-value detail is optional, yet the description still names the URL result. For a mutation with an optimistic-concurrency guard, the key operational facts (precondition, failure behavior, when not to use) are present; only overwrite/republish semantics at an existing path are unaddressed.

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 baseline is 3; the description's explanation of expected_content_sha256 largely restates the schema's own wording ('from the create/update/get that produced this content'). public_path and datafile_id are covered entirely by the schema, so the description adds little parameter-level meaning beyond what is already structured.

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?

Names a specific verb and resource (publish a datafile) plus the concrete outcome: a CDN path fetchable client-side. It also explicitly carves itself out from the sibling create/update/get flow and from server-side @latest datafile refs, so an agent can distinguish it from unpublish_datafile and publish_* siblings at a glance.

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?

States both the when ('Only needed for that client-side fetch') and the when-not ('NOT to bind a datafile server-side') and names the alternative mechanism that makes this tool unnecessary in that case. The precondition for the sha256 argument is also spelled out as a usage rule rather than left to inference.

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

publish_dynamic_endpointPublish dynamic endpointBInspect

Publish a dynamic endpoint version, taking it live at its public URL (edge-cached). The response includes the public URL to share.

NameRequiredDescriptionDefault
versionYesthe version number to make live
endpoint_idYesthe endpoint id to publish

Output Schema

NameRequiredDescription
slugYes
versionNo
definitionNo
public_urlNo
descriptionYes
endpoint_idYes
content_typeYes
display_nameYes
latest_versionYes
last_published_versionYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false and openWorldHint=true; the description adds genuine context by disclosing the side effect (the version becomes live publicly, edge-cached). However, it omits key behavioral facts for a non-idempotent mutation: whether republishing replaces the currently live version, whether caches are invalidated, and whether auth/ownership is required.

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 with the effect front-loaded; nothing extraneous. The note about the returned public URL is borderline redundant with the output schema but also serves as practical framing.

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

Completeness3/5

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

With an output schema and annotations present, most of the burden is already covered. The remaining gap is the state transition: what happens to the previously live version, and whether publish can be re-run safely given idempotentHint=false.

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% with only two simple required parameters, so the schema already carries the semantics. The description adds nothing about endpoint_id or version, which is acceptable at this coverage level but not better than baseline.

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 (publish) and resource (dynamic endpoint version) plus the concrete effect: it goes live at its public URL and is edge-cached. It does not differentiate from the many sibling publish_* tools (publish_app, publish_workflow, publish_schema), 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 Guidelines2/5

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

No guidance on when to use this versus preview_dynamic_endpoint, unpublish_dynamic_endpoint, or create_dynamic_endpoint_version. The agent must infer from sibling names that publishing follows version creation and precedes unpublish.

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

publish_schedulePublish scheduleAInspect

Publish a schedule version, making it the ACTIVE definition — the dispatcher starts firing its workflow on the version's cron. A schedule that fires more often than the workspace's plan allows still publishes and runs at the plan's rate; the result says so when that applies.

NameRequiredDescriptionDefault
versionYesthe version number to make active (start firing on its cron)
schedule_idYesthe schedule id to publish

Output Schema

NameRequiredDescription
slugYes
versionNo
definitionNo
descriptionYes
last_run_atNo
last_run_idNo
next_run_atNo
schedule_idYes
display_nameYes
latest_versionYes
last_published_versionYes

TDQS

A4/5.0
Behavior4/5

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

Beyond the annotations (readOnlyHint=false, openWorldHint=true, idempotentHint=false), the description adds real behavioral context: publishing activates cron-driven firing, plan rate limits cap over-frequent schedules rather than blocking them, and the response signals when throttling applies. It does not say what happens to the previously active version or any permission prerequisites, keeping it 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.

Conciseness5/5

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

Two tight sentences with the core effect front-loaded and the rate-limit caveat second; every clause carries information and nothing is repeated from the title.

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?

Output schema exists, so return values need no explanation, and the description still usefully flags that throttling is reported in the result. It covers activation semantics and the plan-rate caveat; only the fate of the previously active version and any auth requirements are left unstated for a mutating publish operation.

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% and both parameters are documented, so the schema does the heavy lifting. The description reinforces that the version argument determines which cron takes effect, but adds no format or constraint detail beyond the schema.

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 (publish) and resource (schedule version) plus the concrete effect: the version becomes the ACTIVE definition and the dispatcher fires its workflow on the version's cron. This clearly separates it from create_schedule_version, update_schedule, unpublish_schedule and run_schedule_now.

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 effect of publishing is clear, which implies you use it to activate a version, but there is no explicit statement of when to choose this over unpublish_schedule, run_schedule_now, or creating a new version instead. Usage is implied rather than stated.

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

publish_schemaPublish schemaAInspect

Publish a schema version, making it the version a datafile resolves when it binds to this schema without requesting the latest.

NameRequiredDescriptionDefault
versionYesthe version number to make the published version datafiles resolve by default
schema_idYesthe schema id to publish

Output Schema

NameRequiredDescription
slugYes
versionNo
schema_idYes
descriptionYes
json_schemaNo
display_nameYes
latest_versionYes
last_published_versionYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false, destructiveHint=false and openWorldHint=true, so the mutation profile is covered. The description adds the key semantic effect (this changes which version is resolved by default), but says nothing about what happens to the previously published version, whether existing datafile bindings are affected retroactively, or whether the change is reversible.

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?

A single front-loaded sentence with no filler; the verb and resource lead and the consequence follows. The trailing clause is slightly convoluted ('the version a datafile resolves when it binds to this schema without requesting the latest') but it is not wasted space.

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?

With only two required parameters, full schema descriptions, an output schema, and annotations covering the safety profile, the description carries what remains: the meaning of 'publishing.' The only real gap is side effects on existing datafiles and the prior published version, which for a low-complexity tool is a modest omission.

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% and both parameters (schema_id, version) are documented in the schema, including that version is the one datafiles will resolve by default. The description only restates that concept at a high level and adds no formatting or constraint detail beyond the schema. Baseline 3 applies when the schema carries the parameter burden.

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?

The description names a specific verb (publish) and resource (schema version) and states the resulting effect: the version becomes the default that datafiles resolve to when they don't request latest. This distinguishes it from the read side (get_schema) and version creation (create_schema_version). It does not explicitly contrast with the many sibling publish_* tools, but the resource scope is unambiguous.

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?

Usage is implied rather than stated: the phrase about datafiles resolving 'without requesting the latest' tells the agent the scenario this tool serves, but there is no explicit when-to-use/when-not guidance and no reference to alternatives such as create_schema_version or get_schema. The agent must infer the workflow (create a version first, then publish it).

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

publish_workflowPublish workflowAInspect

Publish a workflow version, making it the version served to callers (including dynamic endpoints that reference it @published).

NameRequiredDescriptionDefault
versionYesthe version number to make live
workflow_idYesthe workflow id to publish

Output Schema

NameRequiredDescription
slugYes
versionNo
definitionNo
descriptionYes
workflow_idYes
display_nameYes
latest_versionYes
last_published_versionYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the safety profile is already covered. The description adds real value beyond that by disclosing the propagation effect: previously published versions stop being served, and dynamic endpoints referencing @published change behavior. It stops short of saying what happens to the prior live version explicitly or whether re-publishing the same version is a no-op (relevant given idempotentHint=false).

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 sentence that front-loads the action and then the consequence, with zero filler. Every clause (making it live, dynamic endpoints @published) contributes information.

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 values need no explanation, and annotations carry the safety profile. What the description supplies — the serving semantics and downstream @published effects — covers the main risk of calling this. It could add whether publishing is reversible or how to unpublish, but nothing essential to correct invocation is missing.

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% — both workflow_id and version are documented in the schema with clear semantics ('the workflow id to publish', 'the version number to make live'). The description adds no parameter-level detail beyond that, 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 (publish) and resource (workflow version) and then explains the concrete effect: the version becomes the one served to callers. The parenthetical about @published references in dynamic endpoints is a genuinely clarifying detail that separates this from create_workflow_version. It doesn't explicitly contrast with siblings, but the resource is unambiguous.

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?

Usage is only implied: an agent can infer you call this after creating a version and before callers should see it. There is no explicit when/when-not, no statement that the workflow must already have the version created, and no mention of unpublish or rollback alternatives. Adequate but leaves sequencing to inference.

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

remove_visitorRemove visitorA
Destructive
Inspect

End a visitor's access, or withdraw an invite they have not accepted, by their email address (as list_visitors shows it). A visitor's next page request, within a few seconds, is refused.

NameRequiredDescriptionDefault
emailYesThe visitor's or invited person's email address, as list_visitors shows it.

Output Schema

NameRequiredDescription
removedYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds genuinely new behavior: the effect is not instantaneous, and a visitor's next page request within a few seconds is refused. That timing detail materially affects how an agent should sequence follow-up checks. It doesn't cover required permissions or whether the visitor record itself is retained, so not 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.

Conciseness5/5

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

Two short sentences, both earning their place: the first defines scope and identifier, the second supplies the latency behavior. The most decision-relevant information (what the tool ends) is front-loaded.

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?

For a single-parameter mutation with full annotations and an output schema, the description covers purpose, identifier source, and propagation timing. Nothing an agent needs in order to call it correctly or interpret the immediate aftermath is missing.

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% and the description's email guidance ("as list_visitors shows it") is essentially identical to the schema's own parameter description, so it adds little beyond what structured data already provides. Baseline 3 applies for a single fully documented parameter.

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?

Names a specific verb+resource ("End a visitor's access") and covers both semantic cases it handles: revoking an active visitor and withdrawing an unaccepted invite. It also anchors the identifier source ("as list_visitors shows it"), so the agent can distinguish it from list_visitors and invite_visitor 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 Guidelines4/5

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

The two clauses ("End a visitor's access, or withdraw an invite they have not accepted") effectively define when this tool applies, and referencing list_visitors gives the agent a prerequisite workflow step. There is no explicit when-not-to-use or statement about which sibling to prefer for other visitor actions, so it falls short of a 5.

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

rename_app_slugRename app slugAInspect

Rename an app's slug (its unique per-tenant identifier / folder prefix). Fails if the new slug is already in use. Note: this renames the APP; it does not move member resources, which are matched by their own slugs.

NameRequiredDescriptionDefault
app_idYesthe app id to rename
new_slugYesthe new slug (unique per tenant; hierarchical path segments allowed)

Output Schema

NameRequiredDescription
slugYes
app_idYes
descriptionYes
display_nameYes
latest_versionYes
published_manifestNo
last_published_versionYes

TDQS

A4.2/5.0
Behavior4/5

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

With annotations already declaring non-read-only, non-idempotent, and non-destructive behavior, the description adds useful behavioral context: the uniqueness-conflict failure mode and the important limitation that member resources are not moved. It does not discuss permissions or reversibility beyond what annotations imply.

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 tightly written sentences with no waste. The core action and identifier definition are front-loaded, followed by the failure condition and the scope caveat.

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 mutation tool with an output schema and informative annotations, the description covers the key operational facts an agent needs: what is renamed, what causes failure, and what is not affected. Minor gaps around permissions or tenant-level side effects remain, but they are not critical here.

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 both parameters are already fully documented, including the uniqueness constraint and hierarchical path segments for new_slug. The description reinforces the same concepts but does not add syntax or format details beyond the schema.

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?

The description states a specific verb and resource ('Rename an app's slug') and immediately defines the slug as the app's unique per-tenant identifier and folder prefix. It also distinguishes this operation from broader app updates by clarifying that it does not move member resources.

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?

It provides a clear failure condition ('Fails if the new slug is already in use') and an explicit scope caveat that member resources are not moved. It does not name a sibling alternative such as update_app or rename_schedule_slug, so it stops short of full routing guidance.

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

rename_schedule_slugRename schedule slugAInspect

Rename a schedule's slug (its unique per-tenant identifier). Fails if the new slug is already in use.

NameRequiredDescriptionDefault
new_slugYesthe new slug (unique per tenant; hierarchical path segments allowed)
schedule_idYesthe schedule id to rename

Output Schema

NameRequiredDescription
slugYes
versionNo
definitionNo
descriptionYes
last_run_atNo
last_run_idNo
next_run_atNo
schedule_idYes
display_nameYes
latest_versionYes
last_published_versionYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare the safety profile (not read-only, not destructive, not idempotent), so the bar is lower. The description adds genuinely new behavior: the operation fails on slug collision, and uniqueness is scoped per tenant — neither is visible in annotations. It is silent on permissions and on whether the old slug keeps resolving, which keeps it 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.

Conciseness5/5

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

Two tight sentences with zero filler, and the core operation is front-loaded before the failure condition. Every clause carries information an agent would not otherwise have.

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 two-parameter mutation with full annotation coverage and an output schema, the description covers what it does and the one failure path. Only the permission/prerequisite dimension and the fate of the old slug are left unstated.

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 both parameters are already documented, including the hierarchical path segment allowance. The description only echoes the per-tenant uniqueness constraint already stated in the new_slug schema text, adding no syntax, format, or validation guidance beyond it.

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 (rename) and a precisely bounded resource (a schedule's slug), plus a parenthetical defining what a slug is. It is distinguishable from rename_app_slug by resource, but it never addresses the closest ambiguous sibling, update_schedule, which could plausibly also change a slug.

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?

Usage is only implied by the narrowness of the operation; there is no explicit statement of when to call this versus update_schedule or when a slug change is the wrong fix. The one conditional sentence describes a failure mode, not a selection rule.

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

run_schedule_nowRun schedule nowA
Destructive
Inspect

Fire a schedule ONCE, immediately, WITHOUT publishing — so you can test a draft before it goes live (parallels preview_dynamic_endpoint). Runs the version's workflow (omit version for the latest draft) and returns a reference to the workflow run it triggered; resolve its outcome with get_workflow_run. Unlike an automatic fire, this one is captured in FULL — output and traces intact — so it is also how you reproduce something a due firing only sampled. This executes the workflow (may have side effects).

NameRequiredDescriptionDefault
slugNothe schedule slug (provide this or schedule_id)
versionNospecific version to fire; omit (0) for the latest version (the draft)
schedule_idNothe schedule id (provide this or slug)

Output Schema

NameRequiredDescription
run_idYes
statusNo
messageNo
versionYes
dispatched_atYes
scheduled_forYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false, openWorldHint=true and idempotentHint=false, so safety is covered; the description still adds real behavior beyond them — that the fire is NOT published, that it targets the latest draft by default, that it runs the version's workflow, and that the run is captured in FULL with output and traces intact unlike an automatic fire. It does not cover permissions or rate limits, hence not 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 action and its key constraint (without publishing) in the first clause, then layers on the return-value handoff and the full-capture nuance. It's dense but every sentence carries distinct information; only the parenthetical sibling reference is slightly gratuitous.

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?

For a destructive, open-world mutation tool this covers purpose, side-effect warning, draft-vs-published scope, version selection, and the resolution path to get_workflow_run. With an output schema present, no return-value explanation is owed, so nothing material is missing.

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% and already documents slug vs schedule_id and the version-omit-for-latest behavior. The description restates the version semantics ('omit version for the latest draft') without adding format or precedence detail, so baseline 3 applies.

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 (fire a schedule once, immediately, without publishing) and immediately differentiates from publish_schedule and preview_dynamic_endpoint by name. An agent can tell exactly what distinct operation this is relative to run_workflow or publish_schedule.

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?

Gives explicit when-to-use cases: testing a draft before it goes live, and reproducing a firing that was only sampled when it fired automatically. It names the contrasting operations (publish, automatic fire, preview_dynamic_endpoint) and points to get_workflow_run for the outcome, so the agent knows both when to call it and how to follow up.

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

run_workflowRun workflowA
Destructive
Inspect

Run a workflow now and return the outcome: status, content_type, the workflow's output (decoded as a string; read it per content_type), and a trace_summary of which steps ran. Pass version= to test an unpublished draft (the number returned by create_workflow_version); omit for the published version. For per-block detail when debugging, call get_workflow_run_traces with the returned run_id. A workflow that runs as a chain (continuation) answers with its first run and returns chain: the rest of the job runs in the background as further runs, and its chain_id is this run_id; follow it with list_runs(chain_id) until a run says continues false.

NameRequiredDescriptionDefault
slugNothe workflow slug to run (provide this or workflow_id)
inputNoJSON bound as the workflow's $input for this run
versionNoexplicit version to run; 0 (default) runs the last published version. To test a draft you just created but have not published, pass the version number returned by create_workflow or create_workflow_version
datafileNooptional: a datafile slug to bind as the workflow's host context ($datafile / $data) for this run — mirroring how a dynamic endpoint binds one, so you can test a workflow that reads $datafile without wrapping it in an endpoint. Binds the datafile's current stored content (its JSON must be an object). A trailing @latest/@published is ignored.
workflow_idNothe workflow id to run (provide this or slug)

Output Schema

NameRequiredDescription
chainNopresent only when this run started (or continued) a chain: more runs of this workflow are queued and run in the background
errorNo
outputNo
run_idYes
statusYes
messageNo
content_typeYes
trace_summaryNo
trace_truncatedNo

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true, openWorldHint=true and idempotentHint=false, so the agent knows this executes something with real side effects. The description adds genuinely new behavior beyond that: the chain/continuation model where the response is only the first run and the remainder executes in the background. It stops short of stating permission requirements or execution cost/latency, keeping it at a 4.

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-loaded with purpose and return shape, then constraints, then the chain caveat — good ordering. The final chain sentence is long and dense but each clause (chain field, chain_id equals run_id, list_runs polling) carries distinct, necessary information.

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?

Despite an existing output schema, the description usefully names the response keys and the content_type decoding requirement, and it closes the biggest ambiguity for an execution tool — that a chained workflow returns only the first run. Nothing an agent needs to call this correctly is missing.

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 reinforces the non-obvious version semantics (draft testing via the number from create_workflow_version, omit for published) and the output-typing instruction. It adds a little meaning beyond the schema, though slug/workflow_id/input/datafile are left to the schema.

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?

Opens with a specific verb+resource ("Run a workflow now") and immediately enumerates what is returned (status, content_type, output, trace_summary), which distinguishes it from get_workflow_run and get_workflow_run_traces. An agent can tell exactly what this tool does versus the read-back siblings.

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?

Explicit routing: pass version=<n> only to test an unpublished draft, omit for published; call get_workflow_run_traces for per-block debugging; follow chains with list_runs(chain_id) until continues=false. These are concrete when-to-use and when-to-use-something-else statements, not inference.

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

set_visitor_sitesSet a visitor's sitesA
Destructive
Inspect

Change which of the workspace's sites a visitor may see, by their email (as list_visitors shows it). Pass the full list of sites they should have (each a folder, an app, or a custom domain), or all_sites: true for every members-only page that admits visitors. To add a site, list_visitors first and pass their current sites plus the new one. Takes effect within seconds.

NameRequiredDescriptionDefault
emailYesThe visitor's email address, as list_visitors shows it.
sitesNoEvery site they should see from now on.
all_sitesNotrue for all of the workspace's sites. Give this or sites.

Output Schema

NameRequiredDescription
emailYes
sitesYes
all_sitesYes
accepted_atYes
invited_by_user_idYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false; the description adds the crucial beyond-schema behavior that this is a full-state replacement, not a merge — anything previously granted and omitted is dropped. 'Takes effect within seconds' is a useful propagation note. Minor tension: a full-list replace is arguably idempotent while idempotentHint=false, but the description itself does not assert the opposite.

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 sentences, front-loaded with purpose, then the replacement semantics and the add-a-site recipe, then a propagation note. No restatement of the title and no filler; every sentence carries information an agent would otherwise have to guess.

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?

Outputs are covered by the output schema and nested site shape is fully documented in the input schema, so the description only needs the operational layer — which it largely supplies. The remaining gap is what happens when the email is unknown to the workspace and whether prior grants are validated, which matters for a destructive replace.

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?

With 100% schema coverage the baseline is 3, and the description earns more: it clarifies that 'sites' is the complete desired set (not an increment), that each entry is a folder, app, or domain, and states the 'give this or sites' mutual exclusion with all_sites that the schema itself does not encode.

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 ('Change'), resource ('which sites a visitor may see'), and addressing key ('by their email'), which cleanly separates it from invite_visitor, remove_visitor, and list_visitors. The reader knows it is a per-visitor site-permission mutation, not a workspace-wide settings change.

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?

Gives concrete routing: use list_visitors first, then pass current sites plus the new one to add a site, and use all_sites: true instead of a list. That covers the main alternative and the add-a-site workflow. It says nothing about removing a visitor entirely (remove_visitor) or whether a non-existent email is created, so the when-not side is thin.

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

unpublish_appUnpublish appA
Destructive
Inspect

Hide an app (last_published_version -> 0) while preserving its definition; republish any version later. Does not touch its members.

NameRequiredDescriptionDefault
app_idYesthe app id to hide (last_published_version -> 0; definition preserved)

Output Schema

NameRequiredDescription
slugYes
app_idYes
descriptionYes
display_nameYes
latest_versionYes
published_manifestNo
last_published_versionYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations mark this destructive, and the description usefully corrects the impression by disclosing what survives (definition preserved, members untouched) and that it's reversible. It omits other operational context such as permission requirements or what happens to live traffic on the app's endpoints.

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 compact sentences, front-loaded with the action and its mechanism, then the boundary condition. No filler.

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 and the single required param is fully described; the state change and scope of impact are stated. What's missing is only secondary context like auth/permission needs or downstream effects on published endpoints.

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% and the single parameter is already documented in the schema, including the last_published_version -> 0 effect. The description restates rather than extends that semantics, so baseline 3 applies.

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 (hide/unpublish) and resource (app), plus the exact mechanism: last_published_version -> 0. The clause 'while preserving its definition; republish any version later' implicitly separates it from delete_app and publish_app, so an agent can route correctly without opening schemas.

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?

Makes the use case clear: hide an app reversibly while keeping its definition, with republish available later. It doesn't explicitly name delete_app as the alternative or state when-not-to-use, so it stops short of a full routing guide.

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

unpublish_datafileUnpublish datafileA
Destructive
Inspect

Pull a published datafile off the CDN so its URL stops serving.

NameRequiredDescriptionDefault
datafile_idYesthe datafile id to pull from the CDN

Output Schema

NameRequiredDescription
jsonNo
slugYes
schema_idNo
datafile_idYes
descriptionYes
display_nameYes
content_sha256No
last_published_pathNo

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the risk profile is covered structurally. The description adds real value by clarifying what 'unpublish' concretely means (CDN removal, URL stops serving), but says nothing about error behavior on an already-unpublished file — notable given idempotentHint=false.

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?

One sentence, front-loaded with the action and its outcome, with no filler or redundancy.

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?

For a one-parameter mutation with full annotation coverage and an output schema, the description supplies the only missing piece an agent needs — the observable effect of the call. Nothing essential is absent.

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?

There is a single parameter with 100% schema description coverage, so the schema already explains datafile_id. The description adds no format, source, or sourcing guidance beyond that, making the baseline 3 correct.

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?

A specific verb+resource with a concrete consequence: it pulls a published datafile off the CDN so its URL stops serving. That distinguishes the effect from delete_datafile, though it never names that sibling explicitly.

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?

Usage is implied by the effect (use it when you want a URL to stop serving), but there is no explicit when/when-not guidance, no mention of publish_datafile as the inverse, and no statement about what happens if the datafile is not currently published.

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

unpublish_dynamic_endpointUnpublish dynamic endpointA
Destructive
Inspect

Take a dynamic endpoint offline so its public URL stops serving content.

NameRequiredDescriptionDefault
endpoint_idYesthe endpoint id to take offline

Output Schema

NameRequiredDescription
slugYes
versionNo
definitionNo
public_urlNo
descriptionYes
endpoint_idYes
content_typeYes
display_nameYes
latest_versionYes
last_published_versionYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare that this is destructive, non-readonly, non-idempotent, and open-world. The description adds useful context that the public URL stops serving content, but it does not explain reversibility, permissions, or what remains after unpublishing.

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?

The definition is a single, front-loaded sentence with no wasted words. It states the action and outcome immediately.

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 simple single-parameter mutation with annotations and an output schema, the description is sufficient. The main missing context is whether the endpoint can be republished or what happens to its configuration.

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?

There is only one parameter and schema description coverage is 100%, so the schema fully documents endpoint_id. The description does not add parameter-specific detail, which is acceptable at this 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?

The description states a specific verb and resource (take a dynamic endpoint offline) plus the concrete effect (its public URL stops serving content). It clearly distinguishes the action from delete or update, even without naming siblings.

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 effect implies when to use it, but there is no explicit guidance on when to choose unpublish versus delete, update, or pause. The alternative tools are not mentioned.

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

unpublish_scheduleUnpublish scheduleA
Destructive
Inspect

Deactivate a schedule so it stops firing on its cron. The definition is preserved (last_published_version -> 0); republish any version later to resume.

NameRequiredDescriptionDefault
schedule_idYesthe schedule id to deactivate (stops firing; definition preserved)

Output Schema

NameRequiredDescription
slugYes
versionNo
definitionNo
descriptionYes
last_run_atNo
last_run_idNo
next_run_atNo
schedule_idYes
display_nameYes
latest_versionYes
last_published_versionYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false. The description adds meaningful context beyond those flags: it explains that the definition is preserved, that last_published_version is set to 0, and that republishing resumes it. This directly addresses what gets changed, though it doesn't discuss error behavior when already unpublished.

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 tight sentences with zero waste; the primary effect and the reversibility note are both front-loaded and each earns its place.

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?

With an output schema present and annotations covering safety, the description needn't explain return values or the destructive profile. It covers the key semantic effect and reversibility well, though a note on idempotency/error-if-already-unpublished would complete it.

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% and the single parameter's schema description already says 'stops firing; definition preserved'. The description reinforces but adds no new syntax or format detail beyond the schema, so baseline 3 is appropriate.

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 (deactivate) and resource (schedule) plus the concrete effect ('stops firing on its cron'). This clearly distinguishes it from delete_schedule (definition preserved) and publish_schedule (the reverse operation), so an agent can route correctly.

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?

The description gives clear context for when to use it (to stop firing without destroying the definition) and implicitly points to publish_schedule via 'republish any version later to resume'. It does not explicitly name alternatives like delete_schedule or state exclusions, so it falls just short of a 5.

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

update_api_templateUpdate API templateA
Destructive
Inspect

Update an api template's display_name and description (metadata only — this does NOT change the request definition; author that with create_api_template_version, and the slug cannot be changed). This is a WHOLESALE replace: display_name is required and description is set to exactly what you pass (an empty/omitted description CLEARS it), so to change one field while keeping the other, read the current values with get_api_template first and pass both.

NameRequiredDescriptionDefault
descriptionNoWhat this api template calls. Set wholesale — an empty value clears it.
template_idYesThe api template id to update.
display_nameYesHuman-readable name. Required (cannot be blank).

Output Schema

NameRequiredDescription
slugYes
versionNo
definitionNo
descriptionYes
template_idYes
display_nameYes
latest_versionYes
last_published_versionYes

TDQS

A4.7/5.0
Behavior4/5

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

Adds real behavioral context beyond the annotations: this is a WHOLESALE replace, an omitted description CLEARS the field, and display_name is required. That is exactly the kind of data-loss nuance destructiveHint=true only hints at. Slightly short of 5 because it doesn't address validation failures or what the response confirms.

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?

Front-loaded with the scope statement, then the non-goal, then the replacement hazard, then the safe procedure. Three sentences, no filler, and the most dangerous fact (description is cleared if omitted) is stated before the remedy.

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?

For a 3-parameter mutation with an output schema available, the description covers scope, exclusions, destructive replacement semantics, required fields, and the read-before-write procedure. Nothing an agent needs to avoid data loss is missing.

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 baseline is 3; the description earns above that by explaining the wholesale-set semantics of description and the immutability of slug, which the schema does not state. It does not add format or length constraints for display_name beyond 'cannot be blank' already in the schema.

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 (update) and resource (api template) plus the exact field scope: display_name and description, metadata only. It explicitly distinguishes itself from create_api_template_version, which authors the request definition, so an agent can route without inspecting schemas.

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?

Gives explicit when-not guidance (this does NOT change the request definition — use create_api_template_version) and names an immutability constraint (slug cannot be changed). It also prescribes the correct call pattern: read current values with get_api_template first and pass both fields.

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

update_appUpdate appA
Destructive
Inspect

Update an app's display name and description (metadata only — the membership selector and display metadata live in the versioned definition; change those with create_app_version). This is a WHOLESALE replace: display_name is required and description is set to exactly what you pass (an empty/omitted description CLEARS it), so to change one field while keeping the other, read the current values with get_app first and pass both.

NameRequiredDescriptionDefault
app_idYesthe app id to update
descriptionYes
display_nameYes

Output Schema

NameRequiredDescription
slugYes
app_idYes
descriptionYes
display_nameYes
latest_versionYes
published_manifestNo
last_published_versionYes

TDQS

A4.9/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing the wholesale-replace semantics, that description is set to exactly what is passed, and that an empty/omitted description clears the field — concrete destructive behavior that the destructiveHint alone does not convey. It also names the recovery path (get_app first), which is the key operational context for a non-idempotent-looking overwrite.

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 sentences, front-loaded with purpose and sibling routing, then the destructive-replace mechanics with the safe procedure. The parenthetical is dense but every clause carries operational weight; nothing is filler.

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 no explanation, and the annotations carry the safety profile. What remains for an agent to call this correctly — scope, replace semantics, clearing behavior, and the read-before-write step — is all present.

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 only 33% (only app_id is described), but the description compensates by explaining that display_name is required and that description is set verbatim and clears on empty/omitted input. app_id's meaning is left to the schema's own one-liner, which is adequate but the only small gap.

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 resource (update an app's display name and description) and immediately scopes it to metadata only, explicitly routing versioned-definition changes to create_app_version. An agent can distinguish it from create_app_version, publish_app, and rename_app_slug 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?

Gives an explicit alternative for out-of-scope fields (use create_app_version for membership selector and display metadata) and an explicit prerequisite workflow (read current values with get_app first, then pass both fields). When-to-use and how-to-use-safely are both covered.

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

update_custom_domainUpdate custom domainA
Destructive
Inspect

Update a custom domain's mutable settings: its label (display_name) and its routing (slug_prefix + root_endpoint). This is how a domain becomes the public front door of an app: set slug_prefix to the app's slug prefix so shop.customer.com/ serves <slug_prefix>/, and root_endpoint to the app's landing endpoint so '/' has a page. All provided fields are set WHOLESALE — an empty value CLEARS that setting. The hostname identifies the domain and cannot be changed — and these tools cannot delete a domain, so a hostname cannot be moved from here; removing a claim is done in the Tessryx app.

NameRequiredDescriptionDefault
hostnameYesThe hostname identifying the domain to update.
slug_prefixNoThe endpoint subtree this domain mounts (usually an app's slug prefix). Empty = the whole tenant tree. Set wholesale.
display_nameNoHuman label. Empty clears it.
root_endpointNoWhat the domain root ('/') serves, RELATIVE to slug_prefix. Empty = the root returns 404. Set wholesale.

Output Schema

NameRequiredDescription
statusYes
hostnameYes
dns_recordsNo
slug_prefixNo
verified_atNo
activated_atNo
display_nameNo
root_endpointNo
last_check_messageNo
cert_status_messageNo

TDQS

A4.6/5.0
Behavior5/5

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

Goes well past annotations by disclosing the highest-risk behavior: all provided fields are set wholesale and an empty value CLEARS the setting. It also states the hostname is immutable and that these tools cannot delete or move a domain, which is exactly the sort of consequence an agent needs before calling a destructive tool.

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 purpose and mutable fields, then layers on behavioral caveats. Every sentence contributes, though the front-door example makes the middle dense and a bit longer than strictly necessary.

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 needn't be explained. The description covers mutability, clearing semantics, immutability of the identifier, and the out-of-scope delete — everything an agent needs to invoke this destructive tool safely.

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 relational meaning the schema doesn't: shop.customer.com/<path> serves <slug_prefix>/<path>, and root_endpoint is relative to slug_prefix. That clarifies how the parameters interact, though it doesn't add per-parameter syntax detail beyond the schema.

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?

Names a specific verb (update) and resource (custom domain) and enumerates exactly which settings are mutable (display_name, slug_prefix, root_endpoint). It also states what is not mutable (hostname) and rules out deletion, which separates it from create_custom_domain, get_custom_domain and the delete_* siblings.

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 the concrete use case — making a domain the public front door of an app — with a worked example of how slug_prefix and root_endpoint combine. It also routes deletion elsewhere ('removing a claim is done in the Tessryx app'). It stops short of an explicit 'use this instead of X when Y' against create_custom_domain.

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

update_datafileUpdate datafileA
Destructive
Inspect

Update a datafile. This is a partial update at the FIELD level: only the arguments you provide change. Provide json to replace the WHOLE document (its property order is preserved verbatim); omit it to change only metadata. To change PART of an existing document, prefer patch_datafile — it sends just the edit and cannot lose a concurrent write. Use this tool when you are replacing the whole document anyway; both preserve property order. Sending json here means get_datafile, change the object you got back, then send it all — pass expected_content_sha256 with that round trip so a change you did not see is reported instead of overwritten. Republish to push the change to the CDN.

NameRequiredDescriptionDefault
jsonNoReplacement JSON object for this datafile. Omit to leave the content unchanged. Property order is preserved verbatim.
schema_idNoId of the schema this datafile's JSON is validated against. Omit to leave the current binding unchanged.
datafile_idYesThe datafile id to update.
descriptionNoWhat this datafile holds. Omit to leave unchanged.
display_nameNoHuman-readable name. Omit to leave unchanged.
use_latest_schemaNoValidate against the latest (draft) schema version instead of the published one. Only applied when schema_id is also provided.
expected_content_sha256NoThe content_sha256 from the get/create/update that gave you the content you edited. When set, the update is rejected (FAILED_PRECONDITION) if the stored content changed since — do NOT retry the same json, because it was built from a document that no longer exists: get_datafile again, re-apply your change to the content you just read, and send that with the new content_sha256. Omit for a blind overwrite, which is fine when nothing else writes this datafile (e.g. content you just created).

Output Schema

NameRequiredDescription
jsonNo
slugYes
schema_idNo
datafile_idYes
descriptionYes
display_nameYes
content_sha256No
last_published_pathNo

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare destructiveHint=true and idempotentHint=false, and the description explains the actual consequence: concurrent writes can be lost, with expected_content_sha256 turning that into a FAILED_PRECONDITION instead of silent overwrite. It also discloses the downstream effect that a republish is required to push the change to the CDN — real behavioral context not present in the annotations.

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-loaded with the core semantics and alternatives before the recovery procedure, which is the right order. It loses a little to redundancy — property-order preservation is asserted three times across the description and the schema, and the patch_datafile recommendation appears twice in slightly different forms.

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 and full annotation set already cover returns and the safety profile, so the description's job is the mutation semantics and failure modes — both covered. The concurrency guidance, the patch alternative, and the republish requirement are everything an agent needs to call this correctly.

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 genuine meaning on top: `json` replaces the entire document versus per-field metadata updates, and expected_content_sha256 is framed as part of a get → edit → send round trip with an explicit do-not-retry-the-same-json rule. The remaining parameters are left to the schema, which already documents them well.

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 resource and immediately qualifies the scope: field-level partial update of metadata, whole-document replacement when `json` is supplied. It explicitly distinguishes itself from the sibling patch_datafile, so an agent can route correctly without opening either 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?

Gives explicit routing rules: use patch_datafile to change part of an existing document, use this tool when replacing the whole document anyway. It also states when to omit `json` (metadata-only) and when to omit or supply expected_content_sha256, including the 'blind overwrite is fine when nothing else writes this datafile' case.

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

update_dynamic_endpointUpdate dynamic endpointA
Destructive
Inspect

Update a dynamic endpoint's display_name, description, and content_type (metadata only — this does NOT change the workflow binding or cache setting; author those with create_dynamic_endpoint_version, and the slug cannot be changed). This is a WHOLESALE replace: display_name is required and description + content_type are set to exactly what you pass. IMPORTANT: an empty content_type CLEARS it, reverting the endpoint to serving whatever content-type the workflow returns (e.g. a text/html page would start serving as text/plain). So read the current values with get_dynamic_endpoint first and pass all fields you want to keep.

NameRequiredDescriptionDefault
descriptionNoWhat this endpoint serves. Set wholesale — an empty value clears it.
endpoint_idYesThe endpoint id to update.
content_typeNoThe response Content-Type this endpoint serves (e.g. text/html). Set wholesale — an empty value CLEARS it, reverting to the workflow's own content-type. Pass the current value to preserve serving behavior.
display_nameYesHuman-readable name. Required (cannot be blank).

Output Schema

NameRequiredDescription
slugYes
versionNo
definitionNo
public_urlNo
descriptionYes
endpoint_idYes
content_typeYes
display_nameYes
latest_versionYes
last_published_versionYes

TDQS

A4.6/5.0
Behavior4/5

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

Adds substantial context beyond the annotations: wholesale-replace semantics, the non-obvious fact that an empty content_type CLEARS it and reverts to the workflow's content type (with a concrete text/html → text/plain example), and that display_name is required and non-blank. Annotations already flag destructiveHint and idempotentHint=false, so the description's value is in explaining the blast radius rather than restating safety. It doesn't say whether a version is created or whether changes are recoverable, which keeps it below 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-loaded with the scope and the wholesale-replace warning, and every clause carries operational weight. The first sentence is heavily parenthetical, which slightly crowds the highest-value information, but nothing is redundant filler.

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?

Given a destructive, non-idempotent mutation with an output schema and full annotation coverage, the description supplies exactly the missing pieces: replace semantics, the clearing hazard, the required-field constraint, the recommended read-before-write flow, and where the out-of-scope fields belong.

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 real semantics: which parameters are metadata-only vs. owned by the versioning tool, and that all mutable fields must be passed together or they will be cleared. That says something the schema cannot — the interaction between fields, not just their types.

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+resource and immediately bounds the scope: metadata only, explicitly excluding the workflow binding, cache setting, and slug. It names the sibling that handles the excluded concern (create_dynamic_endpoint_version), so an agent can distinguish it from neighbors without opening schemas.

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?

Gives an explicit prerequisite workflow — read current values with get_dynamic_endpoint first, then pass all fields you want to keep — and routes the excluded concerns to the correct alternative tool. It also states a hard constraint (slug cannot be changed), leaving nothing to inference.

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

update_scheduleUpdate scheduleA
Destructive
Inspect

Update a schedule's display name and description (metadata only — the cron/workflow/input live in the versioned definition; change those with create_schedule_version). This is a WHOLESALE replace: display_name is required and description is set to exactly what you pass (an empty/omitted description CLEARS it), so to change one field while keeping the other, read the current values with get_schedule first and pass both.

NameRequiredDescriptionDefault
descriptionYes
schedule_idYesthe schedule id to update
display_nameYes

Output Schema

NameRequiredDescription
slugYes
versionNo
definitionNo
descriptionYes
last_run_atNo
last_run_idNo
next_run_atNo
schedule_idYes
display_nameYes
latest_versionYes
last_published_versionYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare destructiveHint=true, but the description goes further, explaining exactly what is destroyed: this is a WHOLESALE replace and an empty/omitted description clears the existing value. That is the precise operational consequence an agent needs and annotations cannot express.

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?

Dense but front-loaded: the metadata-only scope comes first, then the replace hazard, then the remedy. The parenthetical and the long final clause cost a little readability but every sentence carries information.

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?

With an output schema present, the description need not describe returns; what remains — scope, destructive semantics, field-clearing behavior, and the recovery workflow — is fully covered for a 3-parameter mutation.

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 only 33% (schedule_id alone is documented), but the description compensates by explaining display_name's requiredness and the set-to-exact-value/clear-on-empty semantics of description. Minor gap: it does not reconcile the schema's 'description is required' with the guidance that omitting it clears the 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 specific verb and resource ('update a schedule's display name and description') and immediately bounds scope as metadata-only, distinguishing it from the versioned-definition siblings like create_schedule_version.

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 routes cron/workflow/input changes to create_schedule_version, and prescribes a read-then-write pattern with get_schedule before calling. Both the when and the alternative are named.

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

update_schemaUpdate schemaA
Destructive
Inspect

Update a schema's display_name and description (metadata only — this does NOT change the JSON Schema body; author that with create_schema_version, and the slug cannot be changed). This is a WHOLESALE replace: display_name is required and description is set to exactly what you pass (an empty/omitted description CLEARS it), so to change one field while keeping the other, read the current values with get_schema first and pass both.

NameRequiredDescriptionDefault
schema_idYesThe schema id to update.
descriptionNoWhat this schema describes. Set wholesale — an empty value clears it.
display_nameYesHuman-readable name. Required (cannot be blank).

Output Schema

NameRequiredDescription
slugYes
versionNo
schema_idYes
descriptionYes
json_schemaNo
display_nameYes
latest_versionYes
last_published_versionYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations flag destructiveHint=true, but the description earns its keep by explaining WHY: it is a wholesale replace, an empty/omitted description clears the field, and display_name is required. That is precisely the behavior an agent could get wrong, and it goes well beyond the annotation hints.

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 sentences, front-loaded with the action and the most dangerous trait (wholesale replace). The nested parentheticals make it dense to parse, but no sentence is filler.

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?

Output schema and full annotations exist, so return values and safety profile are already documented; the description fills the remaining gap — mutation semantics, clearing behavior, and the read-then-write workflow — leaving nothing an agent needs missing.

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% and the schema descriptions already state 'Set wholesale — an empty value clears it' and 'Required (cannot be blank)', so the description largely restates structured data. The only genuinely additive point is the immutable slug, which isn't a parameter at all, so the baseline of 3 holds.

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 the exact verb+resource (updates a schema's display_name and description) and immediately bounds scope by saying it does NOT change the JSON Schema body, naming create_schema_version as the tool that does. An agent can tell it apart from create_schema_version and update_* siblings 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 gives the workflow for the common case: to change one field while keeping the other, call get_schema first and pass both. It also names the alternative tool for body edits and states the slug is immutable, so when-to-use, when-not-to-use and prerequisites are all covered.

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

update_workflowUpdate workflowA
Destructive
Inspect

Update a workflow's display_name and description (metadata only — this does NOT change the workflow's logic; edit that with create_workflow_version / patch_workflow, and the slug cannot be changed). This is a WHOLESALE replace: display_name is required and description is set to exactly what you pass (an empty/omitted description CLEARS it), so to change one field while keeping the other, read the current values with get_workflow first and pass both.

NameRequiredDescriptionDefault
descriptionNoWhat this workflow does. Set wholesale — an empty value clears it.
workflow_idYesThe workflow id to update.
display_nameYesHuman-readable name. Required (cannot be blank).

Output Schema

NameRequiredDescription
slugYes
versionNo
definitionNo
descriptionYes
workflow_idYes
display_nameYes
latest_versionYes
last_published_versionYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already flag destructive=true, but the description earns credit by explaining *why*: description is set wholesale and an empty/omitted value CLEARS it. That is the precise failure mode an agent must avoid, and it is stated plainly with a recovery procedure (read then pass both fields).

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 sentences, front-loaded with the scope and the destructive-replace warning before the procedure. It is dense with nested parentheticals, which slightly hurts scanability, but no sentence is filler.

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?

For a destructive metadata mutation with an output schema and full schema coverage, this covers scope, destructive semantics, sibling routing, and the read-before-write procedure. Nothing an agent needs in order to call it safely is missing.

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

Parameters5/5

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

Schema coverage is already 100%, yet the description still adds meaning the schema cannot: display_name is required, description is replaced wholesale rather than merged, and slug is not a parameter at all. That is genuine semantic value beyond the field-level docs.

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 resource (update a workflow) and narrows the scope to display_name and description only. It explicitly says what it does NOT do (workflow logic, slug) and names the siblings that handle the excluded work (create_workflow_version / patch_workflow), so an agent can distinguish it from patch_workflow without opening schemas.

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?

Gives explicit routing rules: use create_workflow_version or patch_workflow to change logic, and use get_workflow first when changing only one metadata field. It also names the one thing you cannot do (change the slug), which is exactly the kind of exclusion an agent needs.

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

validate_workflowValidate workflowA
Read-onlyIdempotent
Inspect

Statically check a workflow definition WITHOUT running it — use this to catch authoring mistakes before create_workflow / create_workflow_version. Returns a findings list: JSON/schema shape, per-expression syntax, variable scope (a $var referenced where it isn't in scope), and resolution of referenced api_templates / sub_workflows / schemas / secrets. valid is true when there are no error-severity findings; warnings/info are advisory. Author the definition against get_workflow_definition_schema.

NameRequiredDescriptionDefault
definitionYesThe workflow definition, as a JSON object. Fetch the exact JSON Schema it must satisfy with get_workflow_definition_schema and author against it (or copy an existing one with the get_*_version tool). The owning service validates it on submit.

Output Schema

NameRequiredDescription
validYes
findingsYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive), yet the description adds real behavioral context: the four categories of findings produced, the definition of `valid` (no error-severity findings) and the advisory nature of warnings/info, plus the note that the owning service re-validates on submit. This is meaningfully beyond structured fields.

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?

Front-loaded with the purpose and the no-side-effects guarantee, followed by return semantics and the prerequisite tool. Dense but every clause carries information an agent needs; nothing is redundant with the name or 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?

Given a single nested-object parameter, an output schema, and full annotation coverage, the description supplies exactly the missing pieces: validation scope, severity semantics, and the authoring prerequisite. An agent can decide to call it and interpret the result without further information.

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?

Only one parameter exists and the schema documents it at 100% coverage, so the baseline is 3; the description still adds value by cross-referencing get_workflow_definition_schema / get_*_version as the source of the required shape and clarifying that validation here does not replace server-side validation.

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 resource ('Statically check a workflow definition') and emphasizes the key scoping constraint 'WITHOUT running it', which immediately separates it from execute/run_workflow and from the create_workflow* siblings.

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 use it ('to catch authoring mistakes before create_workflow / create_workflow_version') and names the prerequisite authoring aid ('Author the definition against get_workflow_definition_schema'), leaving no inference required about placement in the workflow lifecycle.

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

verify_custom_domainVerify custom domainA
Destructive
Inspect

Check the DNS TXT challenge for a claimed domain and, on success, take the global (hostname -> tenant) binding and start certificate issuance. Call this ONCE after the human confirms they have added the DNS records from create_custom_domain. DNS can take minutes to propagate, so do NOT poll this in a loop — if verified is false, tell the human it may take a few minutes and check back later (the server throttles rapid re-checks). Read get_custom_domain to watch the certificate go from CERT_PENDING to ACTIVE. First-to-verify wins: verifying is what actually claims the hostname.

NameRequiredDescriptionDefault
hostnameYesthe custom domain hostname to verify, e.g. shop.customer.com

Output Schema

NameRequiredDescription
domainYes
verifiedYes

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the agent knows this is a state-claiming write. The description adds genuinely non-obvious behavior: first-to-verify wins, server-side throttling of rapid re-checks, and propagation delay. It never contradicts the annotations, though it says little about failure modes other than 'verified is false'.

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-loaded with the action and consequence, followed by ordering, polling, and follow-up guidance — every sentence carries operational information. Slightly dense as a single run-on block, but no filler.

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 spelled out, yet the description still covers the false-verification path and where to look for certificate state. Complete for a one-parameter, destructive, non-idempotent operation.

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?

Only one parameter and schema coverage is 100%, so the schema already documents hostname with an example. The description adds no format or validation hints beyond that, which is acceptable at this coverage level.

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 resource: checks the DNS TXT challenge for a claimed domain, then binds hostname to tenant and starts certificate issuance. It is clearly distinguishable from create_custom_domain (which issues the records) and get_custom_domain (which only watches status).

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?

Explicit sequencing ('Call this ONCE after the human confirms they have added the DNS records from create_custom_domain'), an explicit anti-pattern with reasoning ('do NOT poll this in a loop'), and a named alternative for the follow-up action (get_custom_domain). Nothing is left to inference.

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

whoamiShow current user and workspaceA
Read-onlyIdempotent
Inspect

Return the authenticated user and tenant for the current MCP session.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
emailYes
rolesYes
scopeYes
user_idYes
tenant_idYes
tenant_slugYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already establish that this is a read-only, idempotent, non-destructive, closed-world operation. The description adds useful session-scoping context, but it does not go much beyond what the annotations provide, and return-value details are left to the output schema.

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?

The description is a single front-loaded sentence with no redundant or filler content. Every part of the sentence contributes to identifying the tool's purpose and scope.

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?

For a simple, zero-parameter, read-only identity tool with rich annotations and an output schema, the description is complete enough for an agent to call it correctly. It identifies the returned subjects and the session scope without needing to document parameters or return fields.

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?

The tool takes no parameters and schema description coverage is 100%, so there are no parameter semantics to explain. This meets the baseline for a zero-parameter tool.

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?

The description states a specific verb, 'Return', and specific resources, 'the authenticated user and tenant', scoped to 'the current MCP session'. No sibling tool competes for this identity/session-information purpose, so the agent can distinguish it immediately.

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 description implies the tool is for retrieving the current session's user and tenant, but it does not explicitly state when to use it or when not to use it. With no direct alternative among the siblings, the usage is inferable, but the guidance is only implied.

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. 2 tool updates
    • Removedlist_members
    • Removedset_member_scope
  2. 5 tool updates
    • Changedinvite_visitor4 fields changed
      • addedInput schema / properties / sites
        Added value: +{
        +  "description": "The sites this person is for, each one folder, app or domain. Omit for all of the workspace's sites.",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "app": {
        +        "description": "An app's slug: the members-only pages its published definition selects.",
        +        "type": "string"
        +      },
        +      "domain": {
        +        "description": "A custom domain the workspace serves, such as 'portal.acme.com': stored as the folder it serves today.",
        +        "type": "string"
        +      },
        +      "folder": {
        +        "description": "A folder: members-only pages whose address is under it, such as 'clients/acme'.",
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / all_sites
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / sites
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "app": {
        +        "type": "string"
        +      },
        +      "folder": {
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "type": [
        +    "null",
        +    "array"
        +  ]
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "email",
        -  "invited_by_user_id",
        -  "created_at"
        -]New value: +[
        +  "email",
        +  "invited_by_user_id",
        +  "created_at",
        +  "all_sites",
        +  "sites"
        +]
    • Addedlist_members
    • Changedlist_visitors6 fields changed
      • addedOutput schema / properties / invites / items / properties / all_sites
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / invites / items / properties / sites
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "app": {
        +        "type": "string"
        +      },
        +      "folder": {
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "type": [
        +    "null",
        +    "array"
        +  ]
        +}
      • changedOutput schema / properties / invites / items / required
        Previous value: -[
        -  "email",
        -  "invited_by_user_id",
        -  "created_at"
        -]New value: +[
        +  "email",
        +  "invited_by_user_id",
        +  "created_at",
        +  "all_sites",
        +  "sites"
        +]
      • addedOutput schema / properties / visitors / items / properties / all_sites
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / visitors / items / properties / sites
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "app": {
        +        "type": "string"
        +      },
        +      "folder": {
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "type": [
        +    "null",
        +    "array"
        +  ]
        +}
      • changedOutput schema / properties / visitors / items / required
        Previous value: -[
        -  "email",
        -  "invited_by_user_id",
        -  "accepted_at"
        -]New value: +[
        +  "email",
        +  "invited_by_user_id",
        +  "accepted_at",
        +  "all_sites",
        +  "sites"
        +]
    • Addedset_member_scope
    • Addedset_visitor_sites
  3. 2 tool updates
    • Changedlist_visitors2 fields changed
      • removedOutput schema / properties / visitors / items / properties / user_id
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / properties / visitors / items / required
        Previous value: -[
        -  "user_id",
        -  "email",
        -  "invited_by_user_id",
        -  "accepted_at"
        -]New value: +[
        +  "email",
        +  "invited_by_user_id",
        +  "accepted_at"
        +]
    • Changedremove_visitor3 fields changed
      • changedInput schema / properties / email / description
        Previous value: -"The address of a pending invite to withdraw."New value: +"The visitor's or invited person's email address, as list_visitors shows it."
      • removedInput schema / properties / user_id
        Removed value: -{
        -  "description": "A visitor's user_id, from list_visitors.",
        -  "type": "string"
        -}
      • addedInput schema / required
        Added value: +[
        +  "email"
        +]
  4. 1 tool update
    • Changedpreview_dynamic_endpoint6 fields changed
      • addedInput schema / properties / body
        Added value: +{
        +  "description": "the sample request body, for a method that carries one: a JSON value (sent as application/json), or a string sent as-is, such as a form (\"name=Ada&email=ada%40example.com\" with content_type application/x-www-form-urlencoded). Parsed as serving parses a live body; the transform reads it as body"
        +}
      • addedInput schema / properties / content_type
        Added value: +{
        +  "description": "the sample body's Content-Type: application/json (the default) or application/x-www-form-urlencoded",
        +  "type": "string"
        +}
      • addedInput schema / properties / cookies
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "sample cookies by name. Only the ones the endpoint declares in cookies reach request.cookies; others, and protected names (__Host-, __Secure-, __cf, _cf, cf_), are dropped",
        +  "type": "object"
        +}
      • addedInput schema / properties / headers
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "sample request headers by name. Only the ones the endpoint declares in headers reach request.headers (and, on a verify webhook, the provider's delivery headers); others are dropped",
        +  "type": "object"
        +}
      • addedInput schema / properties / method
        Added value: +{
        +  "description": "the sample request's HTTP method (GET, POST, PUT, PATCH, DELETE); default GET. Must be one the endpoint lists, else the preview fails as serving would answer 405. The transform reads it as request.method",
        +  "type": "string"
        +}
      • addedInput schema / properties / query
        Added value: +{
        +  "description": "a sample query string, exactly what follows '?' in the URL (e.g. \"q=lamps&tag=a&tag=b\"). Only the names the endpoint declares in its query list reach the input_transform as query.<name> (a repeated name becomes an array); on a strict_query endpoint an undeclared name fails the preview with serving's 400",
        +  "type": "string"
        +}
  5. 1 tool update
    • Changedcreate_dynamic_endpoint1 field changed
      • changedInput schema / properties / slug / description
        Previous value: -"URL-safe slug; becomes the path on the tenant's subdomain in the public URL (https://<tenant>.tessryx.app/<slug>). Segments are lowercase letters/numbers/hyphens/dots, or :param placeholders. Dots let you serve spec-mandated files at their exact paths — 'robots.txt', 'sitemap.xml', 'favicon.ico', '.well-known/security.txt'. :param segments do path-parameter routing, e.g. 'post/:slug' serves every /post/<value> from one endpoint — pair it with the definition's input_transform to turn params into the workflow $input (the workflow's input_schema then validates, so a bad URL returns 404). A segment may not be '.' or '..'."New value: +"URL-safe slug; becomes the path on the tenant's subdomain in the public URL (https://<tenant>.tessryx.app/<slug>). Segments are lowercase letters/numbers/hyphens/dots, or :param placeholders. Dots let you serve spec-mandated files at their exact paths — 'robots.txt', 'sitemap.xml', 'favicon.ico', '.well-known/security.txt'. :param segments do path-parameter routing, e.g. 'post/:slug' serves every /post/<value> from one endpoint — pair it with the definition's input_transform to turn params into the workflow $input (the workflow's input_schema then validates, so a bad URL returns 404). The last segment may instead be a *name catch-all taking the rest of the address: 'docs/*path' serves every /docs/<a>/<b>/... with params.path = 'a/b'; it needs a fixed first segment, and the endpoint needs a cache setting, since every distinct address it serves is a run. A segment may not be '.' or '..'."
  6. 3 tool updates
    • Addedinvite_visitor
    • Addedlist_visitors
    • Addedremove_visitor
  7. 1 tool update
    • Changedget_guide2 fields changed
      • changedInput schema / properties / topic / description
        Previous value: -"The guide topic to fetch (see list_guides). One of: overview, build-a-page, build-a-blog, authoring, workflows, datafiles, api-templates, endpoints, apps, schemas, schedules, custom-domains, dependencies"New value: +"The guide topic to fetch (see list_guides). One of: overview, build-a-page, build-a-blog, authoring, workflows, agents, datafiles, api-templates, endpoints, apps, schemas, schedules, custom-domains, dependencies"
      • changedInput schema / properties / topic / enum
        Previous value: -[
        -  "overview",
        -  "build-a-page",
        -  "build-a-blog",
        -  "authoring",
        -  "workflows",
        -  "datafiles",
        -  "api-templates",
        -  "endpoints",
        -  "apps",
        -  "schemas",
        -  "schedules",
        -  "custom-domains",
        -  "dependencies"
        -]New value: +[
        +  "overview",
        +  "build-a-page",
        +  "build-a-blog",
        +  "authoring",
        +  "workflows",
        +  "agents",
        +  "datafiles",
        +  "api-templates",
        +  "endpoints",
        +  "apps",
        +  "schemas",
        +  "schedules",
        +  "custom-domains",
        +  "dependencies"
        +]
  8. 3 tool updates
    • Changedget_workflow_run1 field changed
      • addedOutput schema / properties / chain
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "present only for a run that is part of a chain: its place in it and whether the chain continues after it",
        +  "properties": {
        +    "chain_id": {
        +      "description": "the chain's id: the run_id of its first run",
        +      "type": "string"
        +    },
        +    "continues": {
        +      "description": "true if another run of the chain was queued after this one; false on the last run, when the chain has finished",
        +      "type": "boolean"
        +    },
        +    "link_index": {
        +      "description": "this run's place in the chain, 0 for the first",
        +      "maximum": 2147483647,
        +      "minimum": -2147483648,
        +      "type": "integer"
        +    },
        +    "origin": {
        +      "description": "what started the chain when it was not a schedule: mcp, schedule_manual",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "chain_id",
        +    "link_index",
        +    "continues"
        +  ],
        +  "type": [
        +    "null",
        +    "object"
        +  ]
        +}
    • Changedlist_runs4 fields changed
      • addedInput schema / properties / chain_id
        Added value: +{
        +  "description": "list one chain's runs instead, in link order: the chain id is the run_id of its first run",
        +  "type": "string"
        +}
      • changedInput schema / properties / workflow_id / description
        Previous value: -"the workflow id whose runs to list"New value: +"the workflow id whose runs to list (most recent first); required unless chain_id is given"
      • removedInput schema / required
        Removed value: -[
        -  "workflow_id"
        -]
      • addedOutput schema / properties / runs / items / properties / chain
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "present only for a run that is part of a chain",
        +  "properties": {
        +    "chain_id": {
        +      "description": "the chain's id: the run_id of its first run",
        +      "type": "string"
        +    },
        +    "continues": {
        +      "description": "true if another run of the chain was queued after this one; false on the last run, when the chain has finished",
        +      "type": "boolean"
        +    },
        +    "link_index": {
        +      "description": "this run's place in the chain, 0 for the first",
        +      "maximum": 2147483647,
        +      "minimum": -2147483648,
        +      "type": "integer"
        +    },
        +    "origin": {
        +      "description": "what started the chain when it was not a schedule: mcp, schedule_manual",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "chain_id",
        +    "link_index",
        +    "continues"
        +  ],
        +  "type": [
        +    "null",
        +    "object"
        +  ]
        +}
    • Changedrun_workflow1 field changed
      • addedOutput schema / properties / chain
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "present only when this run started (or continued) a chain: more runs of this workflow are queued and run in the background",
        +  "properties": {
        +    "chain_id": {
        +      "description": "the chain's id: the run_id of its first run",
        +      "type": "string"
        +    },
        +    "continues": {
        +      "description": "true if another run of the chain was queued after this one; false on the last run, when the chain has finished",
        +      "type": "boolean"
        +    },
        +    "link_index": {
        +      "description": "this run's place in the chain, 0 for the first",
        +      "maximum": 2147483647,
        +      "minimum": -2147483648,
        +      "type": "integer"
        +    },
        +    "origin": {
        +      "description": "what started the chain when it was not a schedule: mcp, schedule_manual",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "chain_id",
        +    "link_index",
        +    "continues"
        +  ],
        +  "type": [
        +    "null",
        +    "object"
        +  ]
        +}
  9. 2 tool updates
    • Changedcreate_datafile2 fields changed
      • changedInput schema / properties / display_name / description
        Previous value: -"Human-readable name."New value: +"Human-readable name. Required (cannot be blank)."
      • changedInput schema / required
        Previous value: -[
        -  "slug",
        -  "schema_id",
        -  "json"
        -]New value: +[
        +  "slug",
        +  "display_name",
        +  "schema_id",
        +  "json"
        +]
    • Changedcreate_schema2 fields changed
      • changedInput schema / properties / display_name / description
        Previous value: -"Human-readable name."New value: +"Human-readable name. Required (cannot be blank)."
      • changedInput schema / required
        Previous value: -[
        -  "slug",
        -  "json_schema"
        -]New value: +[
        +  "slug",
        +  "display_name",
        +  "json_schema"
        +]

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources