Supero
Server Details
Build multi-tenant apps over MCP. Schemas, CRUD, deploys — access control enforced server-side.
- Status
- Healthy
- Uptime
- 94.3% over 62 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-03-26
- URL
- Repository
- supero-platform/supero-mcp
- GitHub Stars
- 0
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 67 tools
The set contains two parallel tool families that overlap heavily: build_connect_data_source vs connector_*, build_discover_source vs connector_discover/connector_discover_status, and build_run_data_source vs connector_run. Verification is split across four tools (build_validate, build_doctor, build_audit, build_verify, build_smoke_test, build_e2e_test) whose boundaries are only distinguishable because the descriptions are unusually detailed. An agent can eventually tell them apart, but the surface invites misselection.
Families follow consistent verb_noun patterns internally (build_*, crud_*, schema_*, sdk_*, rbac_*, connector_*), but the set mixes many different prefixes and a few outliers like project_link_schemas and apikey_get_scope break the verb-first convention. Readable, but not one predictable scheme across all 67 tools.
67 tools is far beyond a comfortable set for one agent, even for a broad app-building platform. Much of the bloat comes from duplicated low-level families (connector_*, schema_*) that shadow the higher-level build_* equivalents, so several tools do not clearly earn their place in the same surface.
Coverage is genuinely broad: project lifecycle (create/get/list/update/replace/mode/teardown), bundle authoring and staged upload, validation/audit/preflight, deploy plus poll/smoke/verify/e2e, data connectors with discovery/bind/sync, schema CRUD and validation, plus domain CRUD, RBAC and SDK generation. Minor gaps exist around user/tenant administration and workflow authoring, but agents can work around them.
Available Tools
67 toolsapikey_get_scopeARead-onlyInspect
Get the scope and permissions of the current API key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered elsewhere. The description adds only that the key is 'current' (i.e. caller-derived, not looked up by id), but says nothing about what the returned scope data looks like or whether permissions are aggregated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. Every word carries information and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description is the only place return-value expectations can be set, and it says only 'scope and permissions' without indicating shape, granularity, or whether it includes role bindings. For a tool whose entire value is its return payload, that leaves a real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the baseline there is nothing for the description to disambiguate. The phrase 'current API key' usefully reinforces that identity comes from the session rather than an input, which is the only semantic question this schema raises.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('scope and permissions of the current API key'), which is concrete and unambiguous. It does not differentiate itself from the similar sibling rbac_get_my_access, so an agent cannot fully rule the alternative out from the text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the phrase 'current API key' – it suggests no arguments are needed and that it operates on the caller's own credential. There is no explicit when-to-use, no when-not-to-use, and no pointer to rbac_get_my_access or rbac_check_permission as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_auditARead-onlyInspect
SECURITY + CORRECTNESS AUDIT of a bundle BEFORE go-live (static; your code is never executed). Finds what build_validate/build_doctor do not: MONEY-01 client-chosen checkout amounts, AUTHZ-01 end-users able to write server-owned fields (paid/issued/status/amount/payment refs) or create tickets/payments, FLOW-01 fulfilment done in the browser or on payment_status alone, INV-01 capacity/stock with no server-side enforcement, PUB-01 draft/hidden rows in PUBLIC_SCHEMAS, LAUNCH-01 terms/privacy/password-reset/meta gaps. Each finding has severity (blocker|critical|high|warning), file:line or policy, evidence, the exact fix pattern and a fingerprint. Fix every blocker and critical, then re-run until clean; build_go_live reports (or, when enforced, refuses on) outstanding blocker/critical findings. Pass files/files_ref, or only project_uuid to audit the latest published version.
| Name | Required | Description | Default |
|---|---|---|---|
| files | No | Map of {relative_path: file_content} to audit before publishing. | |
| files_ref | No | For a LARGE bundle: a file_id from build_stage_bundle (gzip(json {path:content}) uploaded out-of-band). | |
| files_b64gz | No | Alt to files: base64(gzip(JSON {path:content})). | |
| min_severity | No | Lowest severity to list (default 'warning' = everything). | |
| project_uuid | No | Project to audit; without files, its latest (or version_uuid) PUBLISHED bundle is audited. | |
| version_uuid | No | Published version to audit (default: latest). Ignored when files are given. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnlyHint/openWorldHint annotations by declaring the audit is static and never executes user code, describing the finding payload (severity, file:line or policy, evidence, exact fix pattern, fingerprint), and disclosing the gating relationship with build_go_live. No behavior contradicts 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and a distinct-sibling claim, then findings taxonomy, then the fix/re-run workflow — a sound ordering with no filler sentences. It is a single dense paragraph that runs long, which slightly hurts scannability, but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description takes on the burden and delivers: it enumerates the finding shape, the severity vocabulary, and the blocking semantics. Combined with full schema coverage and read-only annotations, an agent has everything needed to call it and act on results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already carries per-parameter meaning, but the description adds the selection logic that the schema doesn't express — files vs. files_ref vs. project_uuid, and the project_uuid-only path auditing the latest published (or version_uuid) bundle. It doesn't add format details for files_b64gz or min_severity beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('SECURITY + CORRECTNESS AUDIT of a bundle') plus scope ('BEFORE go-live') and mode ('static; your code is never executed'). It explicitly separates itself from build_validate and build_doctor by naming what those tools miss (MONEY-01, AUTHZ-01, FLOW-01, INV-01, PUB-01, LAUNCH-01).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing against siblings ('finds what build_validate/build_doctor do not'), the operating sequence ('fix every blocker and critical, then re-run until clean'), and the downstream consequence ('build_go_live reports or, when enforced, refuses on outstanding blocker/critical findings'). It also states the two invocation modes: pass files/files_ref, or only project_uuid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_bind_data_sourceADestructiveInspect
Bind source streams to the app's schemas. mode='live_read' (default: read-only BYODB / warehouse), 'live_readwrite' (BYODB read+write, DOMAIN-ADMIN only), or 'sync' (copy into SuperoDB). Modes by source: postgresql, supabase, mysql take all three; mssql takes sync and live_read; oracle and mongodb take sync only; a REST api takes sync and live_read; warehouses take live_read only. For live modes, discovery must have run and each binding's source must match a discovered stream; the bind VERIFIES the live mapping materialized. A NEW live table must state tenant_binding: ask the data owner which rows belong to which tenant, never assume. Bound live schemas are read/written via ORDINARY app CRUD, nothing goes in the bundle.
| Name | Required | Description | Default |
|---|---|---|---|
| bindings | Yes | One entry per app schema to back with a source stream. | |
| connector_id | Yes | The connector to bind (from build_connect_data_source). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and openWorldHint=true, but the description goes beyond them: it explains that the bind verifies the live mapping materialized, that bound schemas use ordinary app CRUD, that unmapped tenants get refused/403, and that the downgrade gate records an attestation. It never explicitly warns what is destroyed by a rebind, which is the one annotation-relevant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then constraints, then the safety-critical tenant warning. The mode-by-source sentence is dense but every clause carries routing information; only minor redundancy with the schema's enum descriptions prevents a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, open-world bind operation with only two top-level params and no output schema, the description supplies the mode matrix, preconditions, tenant-binding decision procedure, and downgrade gate. Nothing an agent needs to invoke it safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage the baseline is 3, but the description adds the source-type-to-mode compatibility matrix and the requirement that `source` match a discovered stream, which are not fully captured in the schema. The tenant_binding guidance is largely duplicated from the schema, keeping it below a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb and resource ('Bind source streams to the app's schemas') and the rest immediately scopes it by mode and source type. An agent can distinguish this from build_connect_data_source and build_discover_source 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states exactly which modes apply per source (postgresql/supabase/mysql all three, oracle/mongodb sync only, warehouses live only, etc.) and the precondition that discovery must have run for live modes. Explicit when-to-use and when-not-to-use guidance is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_configure_servicesADestructiveInspect
Configure a service's keys for the project so an integration works at deploy (e.g. wire SendGrid for email, a Stripe TEST key for checkout). TEST/SANDBOX keys ONLY. Keys with a clear live marker (Stripe sk_live_… / Razorpay rzp_live_…) are auto-refused, but most providers give NO test-vs-live signal — so for EVERY provider send test/sandbox keys only and use the admin panel for production secrets (a deep link is returned). Never put a real secret through this tool/chat. Reacts to the live permission result; secret values are never echoed.
| Name | Required | Description | Default |
|---|---|---|---|
| config | Yes | Test/sandbox config key→value (e.g. {"sendgrid_api_key":"SG.test…"}). Live-marked keys refused; send test keys only. | |
| service_id | Yes | Catalog id (e.g. 'stripe_checkout', 'email'). | |
| project_uuid | Yes | Project UUID (from build_list_projects or build_create_project). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructive annotation, the description discloses key behavioral traits: live-marked keys are auto-refused, most providers lack a test-vs-live signal, the tool reacts to the live permission result, and secret values are never echoed. These are materially important behaviors for a destructive configuration tool and are not merely restatements of 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and the most important safety constraint. It is somewhat repetitive about test/sandbox keys, but the repetition is purposeful for a high-risk secret-handling tool and does not obscure the main guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent configuration tool with nested object parameters and no output schema, the description covers the essential context: what it configures, which keys are allowed, what happens with live keys, the permission behavior, and the fact that secrets are not echoed. An agent has enough information to invoke it safely and correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents config as test/sandbox key→value with examples, service_id as a catalog id, and project_uuid as coming from build_list_projects or build_create_project. The description reinforces the test-only constraint but does not add parameter-specific syntax or format details beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: configuring a service's keys for a project so an integration works at deploy, with concrete examples like SendGrid and Stripe TEST keys. It is clear on its own, though it does not explicitly differentiate itself from nearby sibling tools such as build_go_live or connector_test_config.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit usage boundaries: use test/sandbox keys ONLY, never send real secrets through this tool/chat, and use the admin panel for production secrets. It also explains that a deep link is returned for production secrets, so the agent knows when to stop and redirect rather than trying to configure live credentials here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_connect_data_sourceAInspect
Create a data connector to an EXTERNAL source the app owner controls (their own database, a REST API, or a warehouse). Returns a connector_id. Does NOT bind schemas yet. Flow: build_connect_data_source → build_discover_source (lists the tables/streams; needs this connector_id) → build_bind_data_source (bind streams to app schemas) → build_run_data_source (mode='sync' bindings only; live reads need no run). For a database you do NOT need to know the tables upfront: omit table_names and let discovery + bind pick them (the connector is a manual-trigger shell until bound, and a run before a sync bind is refused). Pass table_names only when you already know exactly which tables to sync. Credentials are sent to the platform and NEVER echoed back; prefer read-only DB creds / the Key Store for production. Requires a domain- or project-admin API key.
| Name | Required | Description | Default |
|---|---|---|---|
| auth | No | api kind: {type: none|api_key|bearer|basic|oauth2, ...}. | |
| host | No | Server hostname (database kinds, Fabric, ClickHouse, Snowflake, Databricks). BigQuery/Redshift take their connection settings in `config`. | |
| kind | Yes | Source kind. | |
| name | Yes | Connector name (unique within the project). | |
| port | No | Server port; omit for the dialect default (5432 PostgreSQL, 3306 MySQL, 1433 MSSQL/Fabric, 1521 Oracle, 27017 MongoDB). | |
| config | No | Extra source config (e.g. warehouse account). | |
| db_type | No | database/warehouse: postgresql|mysql|mssql|oracle|mongodb|snowflake|bigquery|redshift|databricks|clickhouse|fabric. | |
| base_url | No | api kind: API base URL. | |
| database | No | database/warehouse: database name. | |
| endpoint | No | api kind: endpoint path. | |
| password | No | DB password — sent to the platform, never echoed. | |
| ssl_mode | No | database kind: TLS mode, one of disable|allow|prefer|require|verify-ca|verify-full (or the MySQL spellings disabled|preferred|required|verify_ca|verify_identity); other values are rejected. Default 'require'. Used by PostgreSQL/MySQL/MSSQL/Fabric/MongoDB; Oracle and the HTTP warehouses (Snowflake/Databricks/ClickHouse/BigQuery/Redshift) ignore it. | |
| username | No | database/warehouse: login user (prefer a read-only one). | |
| test_first | No | Probe connectivity before creating (default true). | |
| table_names | No | database/warehouse, OPTIONAL: the source tables to sync, e.g. ["customers", "orders"]. Omit when you don't know them yet — run build_discover_source next and bind the streams it returns. | |
| project_uuid | No | Project the connector belongs to (from build_list_projects); your key must be allowed to build into it. API-key callers pass it to scope the connector to that project. | |
| schema_namespace | No | Namespace for schemas from this source. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare it is a non-read-only, open-world, non-idempotent write with destructiveHint=false, and the description adds context annotations cannot express: it returns a connector_id, performs no schema binding, credentials are sent to the platform and never echoed, read-only creds/Key Store are preferred, and a domain- or project-admin API key is required. It also flags the connector is a manual-trigger shell until bound.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and return value, then the flow, then the table_names nuance and security note — a sensible ordering with no filler sentences. Slight deduction for re-explaining table_names in both the flow and the credential paragraph, which lengthens an already dense description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 17-parameter, nested-object creation tool with no output schema, the description covers the returned identifier, the authorization prerequisite, credential safety, and how the call fits into the multi-step build sequence. Nothing an agent needs to invoke it correctly — required fields, prerequisites, follow-up tool — is left out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 goes further by explaining the operational meaning of `table_names` (omit it and let discovery + bind select tables, or pass it only when the exact sync set is known) and reinforcing credential handling. That said, much of it restates the schema's own parameter guidance rather than adding new syntax or format detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a data connector to an EXTERNAL source') and immediately scopes it to sources the app owner controls, listing the three kinds (database, REST API, warehouse). It also draws the boundary that this tool does not bind schemas, which separates it from build_bind_data_source/build_discover_source.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit ordered pipeline (build_connect_data_source → build_discover_source → build_bind_data_source → build_run_data_source) with the note that live reads need no run. It also states when to pass `table_names` versus omitting it, and names the failure mode ('a run before a sync bind is refused'), so the agent knows both when and when-not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_create_projectAInspect
Create a NEW project (domain-admin keys only; plan-gated). Mints the project's schema_namespace + an API key (returned ONCE). Use for a fresh app.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Project name/slug. | |
| description | No | Optional: what the app is for — persisted on the project so future sessions build to it. | |
| display_name | No | Optional human-readable name shown in the dashboard. | |
| requirements | No | Optional: the confirmed requirements/plan bullets — persisted on the project record (future sessions read them via build_get_project). | |
| schema_namespace | No | Optional; server normalizes/derives if omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond the annotations: domain-admin key requirement, plan gating, and the critical fact that the API key is returned only once (a non-idempotent, capture-immediately side effect consistent with idempotentHint=false). It does not describe failure modes or what happens on name collisions, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short clauses, front-loaded with the action, then constraints, then side effects, then the routing hint. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an irreversible-in-practice creation tool with no output schema, the description covers auth, gating, and the one-time secret return. What's missing is the response shape beyond the API key and error/conflict behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 clarifies that schema_namespace is minted server-side if omitted, but adds no new meaning for name/description/requirements beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Create a NEW project') and the capitalized NEW plus 'Use for a fresh app' separates it from build_replace_project and build_update_project. The side effects (namespace + one-time API key) are named up front.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use for a fresh app' gives a clear positive condition, and 'NEW' implies the boundary with replace/update siblings. It does not explicitly name an alternative tool or state when not to use it, 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.
build_deployADestructiveInspect
Deploy a published version. target='cloud_ephemeral' (managed Cloud Run, ~30m throwaway preview; requires platform enablement; the default when cloud deploy is enabled) or 'local' (hand the user the bundle to run with the project's own key). For a PERMANENT public URL, use build_go_live instead.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Default 'cloud_ephemeral' when cloud deploy is enabled (else 'local'). | |
| app_type | No | Default 'web'. | |
| project_uuid | Yes | Project UUID (from build_list_projects or build_create_project). | |
| version_uuid | No | Default: latest published version. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and non-idempotent, and the description supplies the missing why: cloud_ephemeral is a ~30-minute throwaway preview and needs platform enablement, while local hands the user a bundle. It stops short of saying what a redeploy does to an existing deployment or what is torn down, which is the key remaining unknown for 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, zero filler; the action and both target options are front-loaded and the alternative-tool redirect is placed last as the exception. Every clause carries decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, an agent would benefit from knowing what a deploy returns (URL? bundle path? status handle needing build_deploy_status), which is left implicit. Otherwise the definition is complete for a 4-parameter mutation whose annotations already cover the safety profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 real meaning beyond the enum strings by characterizing what each target actually produces (managed Cloud Run preview vs. handoff bundle) and stating the platform-enablement prerequisite that governs the default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Deploy a published version") and immediately disambiguates the two deployment modes by name. It also names the sibling tool (build_go_live) it is not, so an agent can route correctly without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly explains both targets, including the tradeoff (cloud_ephemeral is a ~30m throwaway preview requiring platform enablement) and the condition that selects the alternative tool for a permanent public URL. 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.
build_deploy_statusARead-onlyInspect
Poll a cloud deploy started by build_deploy or build_go_live. Pass the poll_url it returned. Reports elapsed_s since launch. 'launching' for 5-6.5 minutes is normal (Cloud Run IAM propagation): keep polling every ~30s and probe the url once it appears. Only a persistent unreachable past ~10 minutes is a real failure (see the anti-loop rules).
| Name | Required | Description | Default |
|---|---|---|---|
| poll_url | Yes | The poll_url returned by build_deploy or build_go_live. | |
| permanent | No | Set true when polling a build_go_live (permanent) deploy so the expiry guidance is correct. Default: auto-detected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnly/openWorld=false; the description adds the operationally critical behavior: 'launching' for 5-6.5 minutes is expected due to Cloud Run IAM propagation, a ~30s polling cadence, probing the url once it appears, and a ~10 minute threshold for real failure. This is exactly the timing/semantics context annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and the handoff, then the timing guidance. Nearly every sentence earns its place, though the trailing '(see the anti-loop rules)' is a dangling pointer to external content that weakens the close.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description covers the key return signals (elapsed_s, 'launching' status, unreachable url). It stops short of describing the terminal success/failure states or the response shape beyond elapsed_s, which an agent would want before deciding to stop polling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 poll_url's provenance and the auto-detected default for `permanent`. The description restates the poll_url origin but never mentions the `permanent` flag or the expiry behavior it controls, so it adds little beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('Poll a cloud deploy') plus explicit upstream dependencies (build_deploy or build_go_live) and the poll_url handoff. An agent can distinguish this from build_deploy/build_go_live/build_logs 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States exactly when to call it (after build_deploy or build_go_live, passing the returned poll_url), how often to poll (~30s), and when to stop worrying vs. when it is a genuine failure (persistent unreachable past ~10 minutes). Effectively includes when-not-to-declare-failure guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_discover_sourceAInspect
Discover a connector's schema: trigger discovery, wait, and return the source streams (names, columns, primary keys), AI-inferred Supero schemas, field mappings, and a suggested namespace. Run AFTER build_connect_data_source and BEFORE build_bind_data_source (a live bind's source MUST equal a discovered stream name).
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No | Max seconds to wait IN THIS CALL (default 60, cap 90 — an MCP call must finish under the ~100s edge limit). On timeout, resume with the returned execution_id; the job keeps running server-side. | |
| connector_id | Yes | The connector to discover (from build_connect_data_source). | |
| execution_id | No | RESUME polling an in-flight discovery (from a previous timeout error) instead of starting a new job. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, so the agent already knows this mutates external state and is not repeatable. The description adds real behavioral context the annotations don't: this triggers a job and blocks waiting on it, which is why resumption exists. It stops short of stating that a timeout leaves a job running server-side (that lives 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler. The capability and its return payload come first, the ordering constraint second, and the critical `source`-must-match rule is parenthetical and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly carries the return contract, naming each artifact returned. It omits the timeout/resume behavior, but that is fully covered by the input schema, so the omission is minor rather than a hole.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the timeout/cap/execution_id resume semantics are already fully documented in the schema. The description adds no parameter-level detail beyond the output contract, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource ('Discover a connector's schema') plus an enumeration of the outputs (streams, columns, primary keys, inferred schemas, mappings, namespace). An agent knows exactly what it gets back. It does not distinguish itself from the near-named siblings connector_discover / connector_discover_status, which is the one gap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit sequencing: run AFTER build_connect_data_source and BEFORE build_bind_data_source, with the hard constraint that a live bind's `source` must equal a discovered stream name. That gives the agent both position in the workflow and the downstream dependency that makes the call mandatory.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_doctorARead-onlyInspect
PREFLIGHT a bundle BEFORE publish/deploy — catches the silent deploy-killers build_validate does NOT: missing #supero-preloader removal (app stuck on a spinner forever), heavy startup seed (Cloud Run port-bind timeout → 'container failed to start'), reserved field names like status/state (silently dropped), namespace collisions (ambiguous reads), and services needing elevated import permission. Run it after build_validate and before build_publish.
| Name | Required | Description | Default |
|---|---|---|---|
| files | No | Map of {relative_path: file_content}. | |
| files_ref | No | For a LARGE bundle that exceeds the model output-token cap: a file_id from build_stage_bundle (upload the gzip(json {path:content}) blob out-of-band, then pass its file_id here). Preferred over files/files_b64gz when the bundle will not fit inline. | |
| files_b64gz | No | Alt to files: base64(gzip(JSON {path:content})). | |
| project_uuid | No | Target project (enables namespace + collision checks). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered; the description adds real value by enumerating the concrete failure classes detected and their downstream symptoms (spinner hang, Cloud Run port-bind timeout, silently dropped reserved fields). It does not disclose the result shape (pass/fail vs. severity-tagged findings) or whether it blocks publish, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with the action verb first and the ordering constraint last; the failure-mode enumeration is long but each clause carries diagnostic value an agent can act on. Slightly dense as a single run-on, but no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only analysis tool with full schema coverage and no output schema, the description covers purpose, ordering, and the specific defects detected. The remaining gap is what the caller gets back (findings list, severity, blocking behavior), which is the one thing an agent would still have to discover by invoking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 documented, including the files/files_ref/files_b64gz alternatives and project_uuid's role in namespace checks. The description adds no parameter-level guidance 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (PREFLIGHT) and resource (a bundle), plus explicit temporal scope (before publish/deploy). It also names the sibling it complements and differentiates itself, so an agent can distinguish it from build_validate and build_publish 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit sequencing: 'Run it after build_validate and before build_publish', and states its distinguishing condition ('catches the silent deploy-killers build_validate does NOT'). The when-to-use and the alternative are both spelled out rather than inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_e2e_testADestructiveInspect
Run the FULL behavioural test suite against a PUBLISHED bundle in the project's OWN already-deployed app (no throwaway project is created) — auth/RBAC/multi-tenant, CRUD round-trips, workflows + event emission, services, aggregates, real-browser UI. WRITE-SAFE: on a DEV project the write suites create + delete only their OWN test records (your real data stays read-only); a LIVE project is auto-restricted to read-only suites so production data is never mutated. This is the deep complement to build_smoke_test ('loads + reads one row'); it proves the app actually WORKS. COSTS A FULL RUN (~2-4 min of real compute) — a PRE-DELIVERY gate, NOT a per-edit check; run it after build_validate + build_doctor pass, on a deployed + seeded project. ASYNC: returns a run_id; poll build_e2e_test_status. Findings are layer-attributed so you know which are yours to fix (app/config) vs. report (platform/sdk). Requires platform enablement.
| Name | Required | Description | Default |
|---|---|---|---|
| suites | No | Subset to run (default ['all']). Skipping a core suite caps the verdict. | |
| live_email | No | Actually send a test email (default false → audit-only). | |
| project_uuid | Yes | The project the published bundle belongs to. | |
| version_uuid | No | Published version to test. Default: latest. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint=true, openWorldHint=true, readOnlyHint=false, idempotentHint=false), it discloses exactly what is at risk: on DEV projects only the suite's own records are created/deleted, and LIVE projects are auto-restricted to read-only suites. It also states compute cost (~2-4 min), the async run_id contract, layer-attributed findings, and the platform-enablement prerequisite.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the core action and cost caveat, and the emphasis caps are used sparingly and meaningfully. It is dense and long, but nearly every clause carries decision-relevant information rather than restating the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an async, expensive, potentially destructive run with no output schema, the description supplies prerequisites, safety behavior, expected duration, the poll sibling for results, and how to triage findings. Nothing an agent needs to invoke it responsibly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 the schema, including the suite enum and the live_email default. The description adds contextual meaning (deployed + seeded project, published version) but no parameter-specific syntax or edge cases, so the documented baseline applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Run the FULL behavioural test suite against a PUBLISHED bundle') and enumerates the covered layers (auth/RBAC, CRUD, workflows, services, aggregates, UI). It explicitly distinguishes itself from the sibling build_smoke_test ('loads + reads one row') and from a per-edit check, so an agent can select 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit when: after build_validate + build_doctor pass, on a deployed + seeded project, as a PRE-DELIVERY gate rather than a per-edit check. It also names the lighter alternative (build_smoke_test) and the condition that selects it, plus the downstream poll tool for the async run.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_e2e_test_statusARead-onlyInspect
Poll an e2e run started by build_e2e_test. While running, returns status only. When complete, returns a compact report: verdict (honest — never 'healthy' if a core suite couldn't run), per-suite pass/fail/warn/skip, findings with layer + fix hint, what was/wasn't covered, and next_steps that say which findings to fix vs. report. On failure it carries a cause.
| Name | Required | Description | Default |
|---|---|---|---|
| run_id | Yes | The run_id from build_e2e_test. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint, so the description must carry the rest, and it does: it discloses the staged response behavior (status-only while running, full report when complete) and an unusual honesty constraint on the verdict. It omits polling cadence/backoff and whether calls are cheap or rate-limited, which is the remaining behavioral gap for a poll tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short clauses, front-loaded with the action and the phase split, then the report contents. Every clause carries information an agent needs (running vs. complete, verdict semantics, findings shape, failure cause) with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must explain return values, and it enumerates them thoroughly: verdict, per-suite pass/fail/warn/skip, findings with layer and fix hint, coverage, next_steps, and failure cause. For a one-parameter read-only poll tool, nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single required parameter with 100% schema description coverage that already says 'The run_id from build_e2e_test.' The description adds no format, lifetime, or validity detail beyond that, so the schema does the work and the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Poll an e2e run') and explicitly ties it to the originating tool ('started by build_e2e_test'), which cleanly separates it from the sibling that starts runs. An agent can distinguish it from build_smoke_test, build_verify, and build_e2e_test 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is clear: call this to poll a run whose run_id came from build_e2e_test, and the description distinguishes the running phase from the complete phase. It stops short of explicit when-not guidance (e.g., stop polling once complete, or use build_smoke_test for a lighter check), so it is clear context rather than full routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_get_bundleARead-onlyInspect
Fetch the CURRENT (or a given) PUBLISHED bundle: the file list + a signed download_url, or ONE file's content inline via file=. For ANY change request on an existing app, START from this bundle and modify it — re-authoring from scratch silently drops the hand-authored ui/app.js and every prior fix.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | Optional app-root-relative path (e.g. 'ui/app.js') to return that single file's content inline (~120KB cap, truncated with a note). | |
| project_uuid | Yes | Project UUID (from build_list_projects or build_create_project). | |
| version_uuid | No | Default: latest published version. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the description's job is to add context — it does, by warning that skipping the bundle silently drops hand-authored ui/app.js and prior fixes, and by noting the download_url is signed. It stops short of describing freshness, caching, or how a bundle differs from a staged one.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero padding, with the return modes front-loaded and the high-stakes warning placed last so it lands. Capitalized emphasis is used sparingly and only on the terms that change behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by naming what comes back (file list, signed URL, or inline file content). For a read-only three-parameter fetch this is nearly complete; minor gaps are whether the signed URL expires and whether the file list is exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: file, project_uuid, and version_uuid all carry descriptions including the default-to-latest behavior and the ~120KB truncation cap. The description only restates 'via file=' and 'CURRENT (or a given)', adding little beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Fetch the CURRENT (or a given) PUBLISHED bundle') and enumerates the two return modes: file list plus signed download_url, or one file inline via file=. The 'PUBLISHED' qualifier and the version parameter implicitly separate it from build_stage_bundle and build_get_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use rule ('For ANY change request on an existing app, START from this bundle') and names the alternative to avoid ('re-authoring from scratch') along with the concrete cost of that mistake. That is the when/when-not/alternative structure in two sentences.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_get_examplesARead-onlyInspect
Fetch a COMPLETE, production-quality reference app (schemas.py + config.py + setup.py + ui/app.js) to copy patterns from — the single biggest lever for app quality. archetype='index' (default) lists the available archetypes with per-file byte sizes; pick the one closest to your app ('commerce-marketplace' | 'service-booking' | 'ops-dashboard' | 'multitenant-portal' | 'saas-billing') and fetch it BEFORE authoring your UI. These are real 'stunning' apps; mirror their structure, how they art-direct the landing page, and their schemas — they hand-write most components (the SDK components catalog is optional, not what these mirror). Optional file= to fetch just one file ('schemas.py' | 'config.py' | 'setup.py' | 'ui/app.js'). Responses are PAGED (~32KB/section): when the header says more:true, fetch the next section with offset=<next_offset> — never re-fetch from 0.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | Optional: return only this one file instead of the whole bundle. | |
| offset | No | Byte offset to start from (for paging; default 0). | |
| archetype | No | Which reference app (default 'index' to list them). | |
| max_bytes | No | Max bytes to return per section (default ~32000). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint; the description adds materially important behavior not in the annotations — responses are paged at roughly 32KB per section, a header flag more:true signals truncation, and the agent must continue with offset=<next_offset> rather than restarting. That paging disclosure is exactly the kind of operational context that prevents a subtle failure mode.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and the critical 'fetch BEFORE authoring your UI' sequencing, with paging last. Some promotional framing ('the single biggest lever for app quality', 'real stunning apps') is not strictly load-bearing, and the parenthetical about SDK components is dense, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only fetch tool with no output schema, the description compensates fully: it names every returned file, describes the index-listing response, and explains the paged response envelope (more flag, next_offset). An agent has everything needed to call it correctly and resume paging without guidance from elsewhere.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the enum and field meanings are already covered, but the description still adds value: it explains that archetype='index' is a listing mode rather than a real app, names the valid archetype choices, and describes offset as a 'next section' pointer tied to the more flag. max_bytes is left unexplained in the prose, though the schema covers it adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Fetch a COMPLETE, production-quality reference app') and enumerates exactly what is returned (schemas.py + config.py + setup.py + ui/app.js). It also distinguishes itself from adjacent concepts by noting the SDK components catalog is 'optional, not what these mirror', separating it from the sdk_* and build_get_skills siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit workflow: start with archetype='index' to list options, pick the closest archetype by name, and fetch 'BEFORE authoring your UI'. It also names the alternative path (file= for a single file) and warns against re-fetching from offset 0, which is a when-not-to-do-it instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_get_projectARead-onlyInspect
Get one project's details: schema_namespace (use this EXACT value as the namespace literal on every schema dict), last published version, AND the captured project_intent — the brief (project_description/summary), the discovered data model (entities/central_entity/relationships/status_workflows), and the landing intent (public_landing_view). BUILD TO THIS — it's the authoritative app spec the user already gave; don't re-ask or ignore it.
| Name | Required | Description | Default |
|---|---|---|---|
| project_uuid | Yes | Project UUID (from build_list_projects or build_create_project). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is clear. The description adds valuable non-obvious behavior: the returned schema_namespace must be reused verbatim as the namespace literal on schema dicts, and project_intent is authoritative and must not be re-derived. Error cases (e.g., project not found) are not mentioned, but that is a minor gap against annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then the return contents, then the build directive. The long parenthetical enumerating project_intent subfields is dense but earns its place by telling the agent what to build against. There is mild redundancy between 'authoritative app spec' and 'don't re-ask or ignore it,' but no wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries the full burden of explaining return values — and it does so thoroughly, breaking project_intent into brief, data model, and landing intent with named subfields. For a read-only single-entity fetch, this is complete enough for an agent to call and use the result correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single project_uuid parameter is documented in the schema, including where to source it (build_list_projects or build_create_project). The description adds no additional meaning about the parameter itself, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (get one project's details) and enumerates exactly what comes back: schema_namespace, last published version, and the full project_intent breakdown. This contrasts implicitly with build_list_projects and build_update_project, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear downstream directive — treat project_intent as the authoritative app spec and do not re-ask the user — which tells the agent why and how to use the result. It does not explicitly say when to call this versus build_list_projects or build_create_project, but the 'one project' framing and the schema pointer (UUID from list/create) cover most of that routing implicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_get_service_contractARead-onlyInspect
Fetch the AUTHORITATIVE contract for a transactional/stateful platform service (cart, order, payment, booking, appointment, membership, approval, document_signature, recurring_plan, inventory, task, ticket, loyalty_points, rental, comment, attachment, feedback, notification, product, service, customer, workflows). Returns the service's state machine (initial_state + transitions), its operations (op ids + input fields + resulting state), the base schemas + mandatory fields you must supply, AND the platform's DEFAULT UI SCHEMAS for that service — the bulletproof reference for building a correct, sophisticated transactional UI. ALWAYS call this for any service your app extends BEFORE authoring its UI — do not guess op names, states, or mandatory fields from prose. service_id='index' (default) lists all services.
| Name | Required | Description | Default |
|---|---|---|---|
| parts | No | What to return (default 'both'): 'contract' = state machine/ops/schemas; 'ui_schemas' = default UI only. | |
| service_id | No | The service id (e.g. 'cart', 'booking', 'payment'); 'index' (default) lists all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds genuine context: it discloses that results are authoritative versus prose, that service_id='index' enumerates all services, and that the 'parts' switch controls whether contract, UI schemas, or both come back. Error behavior and response shape are not mentioned, but with no output schema and strong annotations a 4 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb and resource, then the key behavioral guidance (authoritative, call before UI authoring). The 22-name parenthetical service list is somewhat heavy and reads as scope-setting rather than noise, so it earns its place, but the paragraph is dense and could be split.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must carry the return-value burden, and it does: it names exactly what comes back (initial_state + transitions, op ids, input fields, resulting state, base schemas, mandatory fields, default UI schemas). The remaining gap is failure modes and the shape of the index response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters, including the 'parts' enum values, are already documented in the schema. The description only restates the 'index' default and the deep-link purpose of the tool, adding no syntax or format details beyond structured fields. Baseline 3 under high coverage applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Fetch') and a precisely scoped resource ('the AUTHORITATIVE contract for a transactional/stateful platform service'), then enumerates the returned payload: state machine, operations, base schemas, and default UI schemas. No sibling tool (schema_get, build_list_capabilities, build_get_examples) returns this combination, so the agent can differentiate 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit imperative with sequencing: 'ALWAYS call this for any service your app extends BEFORE authoring its UI', plus an explicit prohibition against inferring op names, states, or mandatory fields from prose. The 'index' default is documented so the agent knows how to discover valid service IDs first. Only weakness is that no alternate tool is named, but the when/when-not guidance is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_get_skillsARead-onlyInspect
Fetch a Supero build reference. doc='skills' (default, the spec you MUST follow) | 'components' (the real pre-built SDK component/global catalog — read so you don't reinvent UI) | 'rubric' (the rich-app quality checklist — what 'stunning' means) | 'landing' (compact landing-page derivation + quality bar — MANDATORY read for public-facing apps) | 'integrations' (the EXACT services.* wrapper→service_id→args map for email/sms/stripe/ai/etc.) | 'web' / 'transactional' / 'workflows' / 'mobile' / 'services' (deep companion docs) | 'e2e_testing'. Returns the doc + a content version + the SDK floor to pin. Read 'skills' FIRST, then 'components' + a matching build_get_examples before you author UI. Docs are PAGED (~32KB/section): when the header says more:true, fetch the next section with offset=<next_offset> — never re-fetch from 0.
| Name | Required | Description | Default |
|---|---|---|---|
| doc | No | Which doc (default 'skills'). | |
| offset | No | Byte offset to start from (for paging large docs; default 0). | |
| max_bytes | No | Max bytes to return per section (default ~32000). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint=true, openWorldHint=false), but the description adds substantial behavior: it discloses the return payload (doc + content version + SDK floor to pin) and the paging protocol (~32KB sections, more:true in the header, offset=<next_offset>, never re-fetch from 0). That is exactly the operational context an agent needs to call this repeatedly without wasting calls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence front-loads the purpose, and the pipe-delimited enum walkthrough is dense but scannable. It is close to the upper bound of acceptable length for one description, and a few parenthetical asides (e.g., 'what stunning means') could be trimmed without losing signal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by naming the return fields and paging mechanics. For a doc-fetching tool with three parameters and a large enum, 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline would be 3, but the description goes further by explaining the intent of each doc value in prose rather than just listing enums. It falls short of 5 because the 'connectors' enum value present in the schema is not described, leaving one option semantically opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Fetch') and resource ('Supero build reference') and enumerates the exact doc variants with what each contains. It also distinguishes itself from the sibling build_get_examples by prescribing the order in which each is read.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit sequencing is given: read 'skills' FIRST, then 'components' plus a matching build_get_examples before authoring UI, and 'landing' is marked MANDATORY for public-facing apps. It names the alternative (build_get_examples) and the condition that selects it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_go_liveADestructiveInspect
PERMANENT deploy: promote a published version to a PERMANENT public URL at .supero.live (managed Cloud Run) — unlike build_deploy(target='cloud_ephemeral'), which is a ~30-min throwaway. If version_uuid/file_id are omitted, the latest published version for the project is used. Returns public_url + poll_url; poll with build_deploy_status until live, then build_smoke_test the public_url. build_teardown removes it. Requires a domain- or project-admin API key + platform cloud-deploy enablement.
| Name | Required | Description | Default |
|---|---|---|---|
| file_id | No | Default: the resolved version's web artifact file_id. | |
| project_uuid | Yes | Project UUID (from build_list_projects or build_create_project). | |
| version_uuid | No | Default: latest published version. | |
| acknowledge_findings | No | Explicitly accept outstanding build_audit CRITICAL findings so go-live may proceed when the audit gate is enforced: [{fingerprint, reason}] (reason >= 15 characters; recorded with the version in the response). BLOCKER findings cannot be acknowledged — fix them. Fix findings instead whenever possible. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annos already flag destructiveHint=true and non-idempotent, and the description adds real context beyond them: required domain/project-admin key + platform cloud-deploy enablement, the permanence of the URL vs a temporary one, the return shape (public_url + poll_url), and that teardown is the removal mechanism.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the critical distinction (PERMANENT vs ephemeral), then defaults, then return/polling chain, then teardown, then prerequisites. Dense but every sentence carries distinct, actionable information — no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description discloses the return fields (public_url, poll_url) and the exact follow-up calls to confirm liveness and smoke-test. For a destructive 4-param deploy tool this is complete enough to invoke correctly on the first try.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 still adds value by explaining that omitting version_uuid/file_id resolves to the latest published version and by framing acknowledge_findings around the audit gate (BLOCKER findings cannot be accepted). That extra gate semantics goes beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific verb (promote/deploy) and resource (published version → permanent public URL at <service>.supero.live) and draws the contrast with build_deploy(target='cloud_ephemeral') explicitly. An agent can distinguish this from every sibling deploy tool 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use vs the ephemeral sibling (~30-min throwaway), states the default resolution behavior when version_uuid/file_id are omitted, and gives the required follow-up chain (build_deploy_status → build_smoke_test). Also names build_teardown as the removal path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_import_servicesADestructiveInspect
IMPORT platform services into a project (e.g. 'workflows', 'email', 'stripe_checkout', 'cart', 'order', 'payment') so the app can call them and its event-bound workflows can run. Uses the platform's service import with YOUR connection's credential. Reports each service's exact outcome: imported, already imported, or FAILED with the platform's reason (schema_drift, schemas_failed, error_code, HTTP status) — a failed import is never reported as success, and you must not ship an app whose required service failed to import. After importing, set keys with build_configure_services. MCP-IMPORT-SERVICES-V1.
| Name | Required | Description | Default |
|---|---|---|---|
| service_ids | Yes | Catalog service ids to import, e.g. ['workflows','email','stripe_checkout'] (exact ids from build_list_capabilities). | |
| project_uuid | Yes | Project UUID (from build_list_projects or build_create_project). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructive/non-idempotent annotations, the description discloses critical behavior: it uses the caller's connection credential, reports per-service outcomes, rejects false success on failed imports, and warns not to ship an app whose required service failed. It also names the failure diagnostics returned by the platform.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the action and purpose, then adds the important failure semantics and next step in a compact paragraph. Every sentence contributes operational guidance for a destructive import tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter destructive tool with no output schema, the description covers purpose, credential source, failure reporting, required-service safety, and the follow-up configuration step. Nothing essential for correct invocation and post-import handling appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 both project_uuid and service_ids with examples and source tools. The description reinforces the service ID examples and prerequisite source but does not add parameter-level meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: importing platform services into a project, with concrete examples such as 'workflows', 'email', and 'stripe_checkout'. It also explains the outcome so the app can call those services and run event-bound workflows, making the purpose distinct from setup/configuration siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly positions the tool in a workflow by saying to use build_configure_services afterward to set keys. It also implies the prerequisite that service IDs come from build_list_capabilities via the schema, but it does not give explicit when-not-to-use guidance or compare all relevant alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_list_bound_schemasARead-onlyInspect
Classify this project's schemas: which are connector-backed vs app-authored, and each one's access mode (sync | live-ro | live-rw | warehouse). Use it so you DON'T render create/edit UI for read-only live sources (live-ro/warehouse) or regenerate/overwrite connector-discovered schemas.
| Name | Required | Description | Default |
|---|---|---|---|
| project_uuid | No | Defaults to the key's project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, and the description reinforces this with the strong downstream warning against overwriting connector-discovered schemas, which is real behavioral context the annotations don't carry. It does not spell out the returned structure beyond the access-mode tokens, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the classification purpose before the rationale. The second sentence is dense but every clause carries meaning (the two destructive mistakes it prevents), so there is no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only classification tool with no output schema, the description supplies both the dimensions being classified and the enum of access modes, which is the essential return information. A brief note on whether it lists all schemas or only bound ones would close the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only one optional parameter at 100% schema description coverage, the schema already explains that project_uuid defaults to the key's project. The description's phrase 'this project's schemas' is consistent with that default but adds no new semantics; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Classify') plus the exact resource ('this project's schemas') and enumerates the two classification dimensions returned: connector-backed vs app-authored, and access mode with its four values. That is enough to distinguish it from the schema_* 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the decision this tool enables ('Use it so you DON'T render create/edit UI for read-only live sources... or regenerate/overwrite connector-discovered schemas'), which is concrete when-to-use context. What is missing is an explicit contrast with the closest alternatives (schema_list_project, build_list_data_sources), so the agent must infer which list tool to call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_list_capabilitiesARead-onlyInspect
List the platform's available services/integrations from the LIVE catalog (email, sms, slack, ai, stripe_checkout, google_oauth, push_notification, …) — so the intake's 'which connections/integrations?' question is accurate and you never guess a service id. Returns each service's exact catalog service_id (use it verbatim in config.py services — e.g. 'stripe_checkout', NOT 'stripe'), category, whether it needs a key, and YOUR connection's service permissions (can_import / can_configure). Descriptive — what EXISTS, never what to use. Pass service_id for one service's config fields.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Optional filter ('integration' or 'service'). | |
| service_id | No | Optional: one service's detail incl. config fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and openWorldHint=false; the description adds that the catalog is LIVE (freshness) and that results include per-connection permissions (can_import / can_configure), which the agent could not infer from annotations. It says nothing about auth requirements or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Verb and scope are front-loaded, and each sentence carries information (examples, id-verbatim warning, descriptive-only note). The heavy parentheticals and em-dash asides make it denser than necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the work of describing return fields (service_id, category, key requirement, connection permissions), which is what an agent needs. Only minor gaps remain around call cost or result size.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 that passing service_id returns that one service's config fields, but that largely restates the schema text; the category filter is not elaborated at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb + resource: 'List the platform's available services/integrations from the LIVE catalog', with enumerated examples. It is clearly distinguishable from siblings like build_recommend_integrations (which advises what to use) and build_get_service_contract (which returns contract detail).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the triggering context — answering the intake's 'which connections/integrations?' question — and the exclusion 'Descriptive — what EXISTS, never what to use', which implicitly routes recommendation questions elsewhere. It never names the alternative sibling explicitly, 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.
build_list_data_sourcesARead-onlyInspect
List the external DATA SOURCE types an app can connect to — its own Postgres/MySQL/MSSQL/Oracle/MongoDB, any REST API, or a Snowflake/BigQuery/Redshift/Databricks/ClickHouse/Fabric warehouse — plus the curated public-API catalog. Read this to offer a 'connect your own data' option. Flow: build_connect_data_source → build_discover_source → build_bind_data_source. See build_get_skills(doc='connectors').
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds real value on top by enumerating the returned categories and the downstream tool chain, though it says nothing about result ordering, IDs, or shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb and the content enumeration, then the workflow, then a doc pointer. Dense with em-dash lists, but every clause carries information an agent needs; nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating what the catalog contains and where the result is consumed next. A doc pointer to build_get_skills(doc='connectors') covers deeper detail, leaving the definition sufficient for a read-only listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('external DATA SOURCE types') and then enumerates exactly what is covered: self-hosted Postgres/MySQL/MSSQL/Oracle/MongoDB, REST APIs, warehouses, and a public-API catalog. An agent can distinguish it from build_list_bound_schemas or connector_plugins purely from this text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear trigger — 'Read this to offer a connect your own data option' — and places the tool in a workflow (build_connect_data_source → build_discover_source → build_bind_data_source). It does not name a sibling to avoid or state when not to call it, 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.
build_list_projectsARead-onlyInspect
List projects you can build into (uuid, name, schema_namespace, live_url).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default 50). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds the return field set (uuid, name, schema_namespace, live_url), which is real value given there is no output schema, but it says nothing about ordering, pagination, or what 'can build into' actually filters on.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action and scope, with the field list in a compact parenthetical. No filler, nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only listing with one optional parameter and no output schema, the description covers the action and the shape of the result. Minor gap: no mention of whether results are ordered or capped beyond the limit default.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (limit) and schema description coverage is 100%, so the schema already documents the default of 50. The description adds nothing about limit semantics, which is the correct baseline for a fully documented single-parameter schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List projects') with a scoping qualifier ('you can build into') and enumerates the returned fields, which distinguishes it from build_list_bound_schemas and build_list_data_sources. It stops short of naming a sibling alternative, but the scope is specific enough to route an agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'you can build into' phrasing implies this is a discovery step before project-scoped operations, but there is no explicit when-to-use or when-not guidance. With many siblings (build_get_project, build_list_bound_schemas, build_list_capabilities) the description never states why to pick this list over those.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_logsARead-onlyInspect
Fetch recent Cloud Run logs for a project's deployed app — THE tool for diagnosing a failed/stalled cloud deploy or a crashing app (startup-probe timeouts, tracebacks, 'container failed to start on PORT'). Read-only; rate-limited per domain.
| Name | Required | Description | Default |
|---|---|---|---|
| lines | No | Max log lines to return (default 200). | |
| since | No | How many minutes back to fetch (default 60). | |
| project_uuid | Yes | Project UUID (from build_list_projects or build_create_project). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so 'Read-only' is redundant. 'Rate-limited per domain' is genuinely new behavioral information beyond the annotations, but gives no magnitude, backoff guidance, or throttling error behavior, and nothing is said about auth or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence: resource and scope first, then the differentiating diagnostic purpose, then the read-only/rate-limit caveat. No filler, nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description should hint at returns; it implies raw log text but does not describe format or ordering. For a 3-parameter read tool with annotations covering safety and a fully documented schema, this is nearly complete, with only the return shape left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (lines default 200, since default 60, project_uuid source noted), so the schema carries the parameter burden. The description adds no meaning about the parameters — no guidance on picking line counts or time windows for a deploy failure — so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ('Fetch recent Cloud Run logs for a project's deployed app') with an explicit scope statement that separates it from deployment/status siblings: 'THE tool for diagnosing a failed/stalled cloud deploy or a crashing app.' Names concrete failure symptoms (startup-probe timeouts, tracebacks, PORT errors), so an agent can match a problem to this tool 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear use context with concrete diagnostic symptoms, which is more than most definitions offer. It does not name alternatives (e.g., build_deploy_status, build_doctor) or state when not to use it, but the symptom list functions as a strong positive selector.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_planARead-onlyInspect
PLAN FIRST — turn a one-line app idea into an explicit BUILD CHECKLIST before you author anything, so a thin prompt doesn't silently skip what expert builders add (this is exactly why first-draft apps miss detail pages, tenant pickers, seed data). Deterministic, no LLM: it detects the app's VERTICAL and returns the authentic page structure + terminology for that domain, which entities need a full DETAIL PAGE, the multi-tenant login pattern (picker + tenant=''), seed guidance, and which build_get_examples to copy. Call it right after build_get_skills and BEFORE authoring.
| Name | Required | Description | Default |
|---|---|---|---|
| entities | No | Optional: the main entity/noun names (e.g. ['college','course','student']). Sharpens the per-entity detail-page + seed guidance. | |
| description | Yes | The app idea in a sentence or two (e.g. 'portal for Karnataka polytechnic colleges with admin + student portals'). | |
| public_facing | No | Optional: true if end-users/the public browse it (vs an internal-only tool). Inferred if omitted. | |
| is_multi_tenant | No | Optional: true if each customer/org (college/clinic/branch) is a separate tenant. Inferred from the description if omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already covers non-mutating behavior, and the description adds transparency by stating the tool is deterministic and returns a checklist rather than performing actions. No contradictions exist, though more detail about failure modes or empty inputs would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is informative but somewhat verbose, with repetitive emphasis on planning first and the rationale behind it. It could be tightened while retaining the key sequencing and output details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even without an output schema, the description enumerates the main return elements (build checklist, page structure, terminology, detail-page determination, multi-tenant login pattern, seed guidance, examples to copy). This gives the agent a solid expectation of what will be provided, though explicit output formatting is not described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema descriptions cover all four parameters at 100%, so the tool description does not need to add much. It does add context around how entities, public_facing, and is_multi_tenant affect the returned guidance, but those nuances are already present in the input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: turning an app idea into an explicit build checklist. It names the specific outputs (page structure, terminology, detail-page guidance, multi-tenant login pattern, seed guidance, examples to copy) and distinguishes it from related build tools by specifying it should be called after build_get_skills and before authoring.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit invocation sequence: 'Call it right after build_get_skills and BEFORE authoring.' It also clarifies the tool is deterministic and not LLM-based, which helps agents choose it appropriately among similar build_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_publishAInspect
Package + upload your authored bundle and record a version under the project. Returns version_uuid + file_id + download_url. Runs build_validate first; force=true overrides soft errors only. Provide files as {relative_path: content}.
| Name | Required | Description | Default |
|---|---|---|---|
| files | No | Map of {relative_path: file_content}. | |
| force | No | Publish despite SOFT validation errors (default false). Validation still runs; a wrong/absent schema namespace, a JavaScript syntax error or schemas the platform refuses always block. | |
| app_type | No | Default 'web'. | |
| validate | No | Validate before publish (default true). | |
| files_ref | No | For a LARGE bundle that exceeds the model output-token cap: a file_id from build_stage_bundle (upload the gzip(json {path:content}) blob out-of-band, then pass its file_id here). Preferred over files/files_b64gz when the bundle will not fit inline. | |
| files_b64gz | No | Alt to files: base64(gzip(JSON {path:content})). Use if a CDN/WAF blocks raw code in the body. | |
| project_uuid | Yes | Project UUID (from build_list_projects or build_create_project). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, non-destructive, non-idempotent. The description adds genuinely new behavior: an implicit validation stage, the precise scope of force (soft errors only, with hard failures enumerated), and the return payload. It does not say whether repeated publishes create duplicate versions or overwrite, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences with the action and return value front-loaded, then behavioral caveats. The telegraphic '+' and semicolon style is efficient, though a couple of clauses (files_ref) duplicate the schema and could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fills the gap by naming the return fields; it also covers validation behavior, override limits, and the three ways to supply files. An agent has enough to invoke this correctly without opening the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so every parameter including force, files_ref, files_b64gz and app_type is already documented in the schema. The description largely restates that (files format, force scope, files_ref preference), adding little semantic detail the schema lacks. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a compound but specific action: package + upload an authored bundle and record a version under a project, plus what it returns (version_uuid, file_id, download_url). It also distinguishes itself from siblings by naming build_validate (auto-run) and build_stage_bundle (via files_ref), so an agent can place it relative to those tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operating context: validation runs first automatically, force only overrides soft errors, and large bundles should use build_stage_bundle + files_ref. What's missing is explicit routing against siblings like build_deploy or a statement of when publishing is premature.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_recommend_integrationsARead-onlyInspect
RECOMMEND which concrete provider integrations this app needs, and WHY — the deterministic Step-2 intelligence the web wizard uses, now over MCP. Pass the app description + the platform service_ids it will use (e.g. ['cart','order']); returns GROUPED, TIERED suggestions (required/recommended/optional) with the default option flagged — e.g. cart/checkout → a payment gateway (REQUIRED; stripe_checkout default, paypal/razorpay offered), customer-facing apps → transactional email, appointments+reminders → sms. Options are drawn ONLY from the LIVE installed manifests, so it can't suggest a provider you don't have. PRESCRIPTIVE complement to build_list_capabilities (which is descriptive): call this so you don't OMIT a needed integration; use build_list_capabilities for a service's exact id + config fields.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | Optional project region (ISO alpha-2, e.g. 'IN'). Decides the default payment gateway. | |
| description | No | The app description / intent (drives email/sms/oauth/ai/payment triggers). | |
| service_ids | No | Platform service ids the app will use (e.g. ['cart','order','appointment']). Drives most recommendations. | |
| project_uuid | No | Optional project UUID; its region is used when `region` is not given. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=true, so the description carries the real disclosure load — and it does: options are drawn ONLY from LIVE installed manifests (a hard constraint that shapes trust in results), the output is GROUPED/TIERED with a flagged default, and behavior is deterministic. It doesn't spell out what happens when no description or service_ids are supplied, which is the one remaining 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and the sibling differentiation; no filler sentences. It is dense with ALL-CAPS emphasis and stacked parentheticals, which costs a little readability, but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still conveys the return shape (tiers, grouping, default flag) and the provenance of the options. The notable omission is behavior when the all-optional inputs are empty, which an agent might reasonably hit given zero required parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description's parameter notes largely restate the schema text ('region... decides the default payment gateway', 'service_ids... drives most recommendations'). The worked examples (cart/order → payment gateway, appointments → sms) add illustrative value but not new semantics per parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('RECOMMEND which concrete provider integrations this app needs') and immediately frames it as a deterministic Step-2 recommender. It explicitly contrasts itself with build_list_capabilities (prescriptive vs descriptive), so an agent can pick the right sibling 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a direct when-to-use rule ('call this so you don't OMIT a needed integration') and names the alternative for a different need ('use build_list_capabilities for a service's exact id + config fields'). It also tells the caller which inputs to pass to get useful output.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_replace_projectADestructiveIdempotentInspect
DESTRUCTIVE (DOMAIN-admin keys only): completely replace a DEV-mode project's app — wipes its data (retains credentials, API keys, namespace, tenant). Refused if mode='live'. Requires confirm_project_name to match. If you pass files, they are VALIDATED before any wipe (a bad bundle is a no-op) and published after; otherwise wipe-only, then call build_publish.
| Name | Required | Description | Default |
|---|---|---|---|
| files | No | Optional new bundle {path: content} to publish after the wipe. | |
| force | No | Wipe and publish despite SOFT validation errors (default false). Never overrides a wrong/absent schema namespace, a JavaScript syntax error or schemas the platform refuses: those are refused before anything is wiped. | |
| app_type | No | Default 'web'. | |
| files_ref | No | For a LARGE bundle that exceeds the model output-token cap: a file_id from build_stage_bundle (upload the gzip(json {path:content}) blob out-of-band, then pass its file_id here). Preferred over files/files_b64gz when the bundle will not fit inline. | |
| files_b64gz | No | Alt to files: base64(gzip(JSON {path:content})). Use if a CDN/WAF blocks raw code in the body. | |
| project_uuid | Yes | Project UUID (from build_list_projects or build_create_project). | |
| confirm_project_name | Yes | Must equal the project's name — a safety confirmation. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past destructiveHint=true by naming exactly what is destroyed vs retained, that a bad bundle is a validated no-op, that force never overrides hard validation failures, and that confirmation must match the project name. This is unusually rich mutation context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the DESTRUCTIVE warning, then the wipe scope, then the preconditions, then the bundle behavior. Every clause carries information; nothing is padding despite the density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter destructive tool with no output schema, the description supplies the preconditions, side effects, failure semantics and follow-up step an agent needs. No material gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so per-parameter meaning is already documented. The description still adds ordering semantics not in the schema: files are validated before any wipe, and force only bypasses SOFT errors. It does not re-describe files_ref/files_b64gz beyond what the schema says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — completely replace a DEV-mode project's app — plus explicit scope (wipes data, retains credentials/API keys/namespace/tenant). It is unmistakable against siblings like build_update_project (partial) and build_publish (deploy-only).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-not conditions ('Refused if mode="live"', DOMAIN-admin keys only) and an alternative path: pass files to publish, or wipe-only and then call build_publish. The decision tree is fully spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_run_data_sourceADestructiveInspect
Trigger a SYNC RUN on a data connector and return the run id. MCP-created connectors are trigger:manual, so a mode='sync' binding copies NO rows until a run executes — call this after build_bind_data_source (and again whenever the source data changes). Live-read/warehouse bindings don't need runs (they read the source directly).
| Name | Required | Description | Default |
|---|---|---|---|
| connector_id | Yes | The connector to run (from build_connect_data_source). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false and openWorldHint=true, and the description adds the mechanism behind that: a mode='sync' binding copies no rows until a run executes, which explains why the operation mutates state and why it is not idempotent in effect. It stops short of saying what a re-run does to already-copied rows (overwrite? append?), which matters for 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Leads with the action and the return value, then layers the prerequisites and exclusions. Three sentences, each doing work; slightly denser than necessary with the parenthetical re-run reminder but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description correctly states the return (run id), along with the prerequisite tool and the binding modes that make a run unnecessary. For a destructive one-parameter trigger the remaining gap is the fate of existing target rows on repeat runs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter already names its origin ("from build_connect_data_source"). The description references the connector only implicitly via the prerequisite build_bind_data_source step; baseline 3 is appropriate when the schema carries the parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Trigger a SYNC RUN on a data connector and return the run id") and scopes it to manual/mode='sync' bindings, so the agent knows exactly what effect to expect. It never mentions the sibling connector_run tool, which is the obvious near-duplicate an agent would need to disambiguate against.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit sequencing guidance ("call this after build_bind_data_source"), a re-invocation rule ("again whenever the source data changes"), and an exclusion ("Live-read/warehouse bindings don't need runs"). When-to-use, when-to-repeat, and when-not-to-use are all present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_set_project_modeADestructiveIdempotentInspect
Set a project's build mode. 'dev' (default) allows COMPLETE REPLACE (wipe data, keep credentials); 'live' protects it. Switch to dev before replacing, to live when it's in production.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | 'dev' permits build_replace_project (which still needs a domain-admin key and confirm_project_name); 'live' makes it refuse, protecting production data. | |
| project_uuid | Yes | Project UUID (from build_list_projects or build_create_project). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds real value by specifying what 'dev' actually permits (wipe data, keep credentials) versus what 'live' protects. It stops short of stating the return value or whether the switch itself is reversible, so slightly below top marks.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the verb and action, then mode semantics, then the switch-timing rule. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter tool with full schema coverage and rich annotations, the description covers purpose, mode behavior, and switching workflow. Only the absence of any return-value note (there is no output schema) keeps it off a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the enum already documents 'dev'/'live' semantics in detail, so the description's mode explanation largely restates it. It adds only the 'default' fact, so the baseline 3 is correct here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Set a project's build mode') and immediately distinguishes the two modes, naming the sibling tool build_replace_project that the 'dev' mode governs. An agent can tell it apart from build_replace_project or build_update_project 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit both-direction guidance: 'Switch to dev before replacing, to live when it's in production.' The alternative (build_replace_project) is named and the condition that makes this tool a prerequisite is stated, 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.
build_smoke_testAIdempotentInspect
VERIFY a DEPLOYED app actually works (not just 'running'). HTTP-checks the live URL: root loads with a title, app.js is your bundle (not a stub) and dismisses the boot splash, config.js namespace matches the project; optionally logs in and reads an entity to confirm data + no namespace ambiguity. Pass url= (from build_deploy_status) or poll_url=. THE post-deploy gate — run it after every deploy.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | The deployed app URL (from build_deploy_status). | |
| No | Optional — a user to log in and verify data reads. | ||
| entity | No | Optional bare schema slug (e.g. 'participant') to read for the authed data check. | |
| tenant | No | Optional tenant for the login. Default '' so the server resolves the user's OWN tenant (required for a multi-tenant app whose test user lives in a named tenant). | |
| password | No | Optional — password for that user. | |
| poll_url | No | Alt to url: the build_deploy poll_url; the URL is resolved from it. | |
| project_uuid | Yes | The deployed project (for namespace + live_url). | |
| expected_app_js_sha1 | No | Optional — the first 12 lowercase hex chars of `sha1sum ui/app.js` (sha1 of your local bundle FILE). If given, smoke_test reports whether the DEPLOYED app.js matches, so you can confirm the deploy actually rolled (vs a stuck roll / stale cache serving the old bundle). Case-insensitive; a malformed value is reported as a warning, never a false mismatch. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare idempotent/non-destructive, so the description must carry the behavioral load, and it does: enumerates what is HTTP-checked, explains the optional authed data-read path, and clarifies that a malformed expected_app_js_sha1 yields a warning 'never a false mismatch.' That directly informs how to interpret results beyond what the annotations state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the verb and scope, then packs the checks and the routing hint into compact clauses. It is dense and parenthesis-heavy, but every sentence carries information; a slightly lighter structure would read more easily.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-param tool with no output schema, it covers purpose, trigger, input alternates, and the semantics of the tricky sha1 check. It does not describe the shape of the pass/fail report, but the enumeration of checks generally conveys what a result means, so the gap is minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3, but the description adds genuine semantic value: it explains the url-versus-poll_url alternative and the optional login/entity-read flow that maps to email/password/entity/tenant. It stops short of restating each param, which is appropriate given the rich schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (VERIFY) and resource (a deployed app), and distinguishes the purpose from mere liveness ('not just running') and from other build tools. The parenthetical checks (root loads, app.js is your bundle, config namespace) make the scope concrete enough that an agent can tell it apart from build_validate or build_deploy_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'THE post-deploy gate — run it after every deploy' gives an explicit trigger, and it routes the agent to build_deploy_status for the url or poll_url source. The when-to-use condition is unambiguous and the alternative input path is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_stage_bundleARead-onlyInspect
PUB-1a: get the out-of-band UPLOAD endpoint for a LARGE app bundle that won't fit inline (the model's max OUTPUT tokens cap files/files_b64gz, so big apps otherwise have to be truncated/minified). Upload a gzip(json {path:content}) blob to the returned URL with your OWN key, then pass the returned file_id as files_ref to build_validate / build_publish / build_doctor. Bundle size then no longer depends on any token cap.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and openWorldHint=false, and the description is consistent: the tool only hands back an endpoint while the agent performs the upload with 'your OWN key'. It adds real context annotations cannot convey (why the endpoint exists, token-cap workaround, downstream file_id usage) but omits things like URL expiry or size limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the ID label, purpose, and the size constraint in the opening clause, then the procedure and handoff. Slightly heavy in the parenthetical ('truncated/minified') and the closing 'Bundle size then no longer depends on any token cap' restates the opening rationale.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description covers the return shape loosely ('the returned URL', 'the returned file_id'), enough to act on. A small gap remains: it's not stated whether file_id comes from this call's response or from the upload itself, nor anything about endpoint lifetime.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the schema baseline is 4. The description goes beyond that by explaining how the returned artifact maps onto another tool's `files_ref` parameter, which is genuinely useful semantic glue.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('get the out-of-band UPLOAD endpoint for a LARGE app bundle') and immediately distinguishes it from inline bundling via `files`/`files_b64gz`. An agent can tell this apart from build_get_bundle and from passing files inline 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the explicit trigger (bundle won't fit inline because of max OUTPUT token caps), the exact procedure (upload gzip(json {path:content}) with your own key), and the downstream handoff (pass file_id as `files_ref` to build_validate / build_publish / build_doctor). Alternatives and when-not are effectively covered by the contrast with inline files.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_teardownADestructiveIdempotentInspect
Tear down a project's live deployment — BOTH the permanent (build_go_live) app and the ephemeral preview — DELETEing the managed Cloud Run services and freeing their URLs. Idempotent: a project with nothing deployed returns stopped=true. ONLY manages Supero-hosted apps — a project deployed to your own AWS/GCP is refused, not silently reported stopped. Check stopped: false means the teardown was INCOMPLETE and the app may still be serving (and billing) — re-run it, do not report success. Requires a domain- or project-admin API key.
| Name | Required | Description | Default |
|---|---|---|---|
| project_uuid | Yes | Project UUID (from build_list_projects or build_create_project). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructive and idempotent, but the description adds real beyond-schema context: it DELETEs managed Cloud Run services, frees their URLs, returns stopped=true when nothing is deployed, refuses non-Supero-hosted apps, and requires a domain- or project-admin API key. It also explains the consequence of stopped=false (app may still be serving and billing).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and scope, and every sentence carries distinct information (idempotency, refusal case, stopped-field guidance, auth). The dense em-dash chaining and caps emphasis make it slightly harder to scan than ideal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although there is no output schema, the description explains the key return field (stopped) and how to interpret it, plus permission requirements and edge cases. 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single project_uuid parameter, which already documents its origin (build_list_projects or build_create_project). The description adds no further parameter semantics beyond the schema, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (tear down) and resource (a project's live deployment), and explicitly scopes it to BOTH the permanent (build_go_live) app and the ephemeral preview, naming a sibling. An agent can distinguish it from build_go_live or build_deploy 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the condition for use (removing deployments), the alternative it is NOT (build_go_live), and a refusal case (projects deployed to your own AWS/GCP are refused, not silently reported stopped). It also tells the agent to re-run rather than report success when stopped=false.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_update_projectBDestructiveIdempotentInspect
Update a project's metadata (display_name, description, show_public, live_url).
| Name | Required | Description | Default |
|---|---|---|---|
| patch | Yes | Fields to update. | |
| project_uuid | Yes | Project UUID (from build_list_projects or build_create_project). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered; the description adds the concrete list of mutable fields. However, it never explains what the 'destructive' hint means here - whether omitted fields are preserved or cleared - which is the exact behavior an agent needs 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb, resource, and affected fields, and no wasted words. The field list is placed where it is most useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The listed fields address the main weakness of the nested patch schema, but for a destructive mutation with a confusingly similar replace sibling and no output schema, the description should also cover patch-vs-replace semantics and what is preserved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the 'patch' parameter is a free-form object documented only as 'Fields to update.' The description supplies the allowed keys (display_name, description, show_public, live_url), which is real added value beyond the schema rather than a restatement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource plus the exact metadata fields affected, so an agent knows this is a metadata patch rather than a deploy or config change. It never distinguishes itself from close siblings like build_replace_project or build_set_project_mode, which is the remaining gap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all. With build_replace_project and build_set_project_mode in the sibling set, the description should say when a partial metadata patch beats a full replace, and no such routing information is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_validateARead-onlyInspect
Validate a locally-authored bundle against the live platform BEFORE publishing. AST-only (your code is never executed). Checks manifest, syntax, import-safety, config exports, schema validity, and namespace==project schema_namespace.
| Name | Required | Description | Default |
|---|---|---|---|
| files | No | Map of {relative_path: file_content} for the bundle. | |
| files_ref | No | For a LARGE bundle that exceeds the model output-token cap: a file_id from build_stage_bundle (upload the gzip(json {path:content}) blob out-of-band, then pass its file_id here). Preferred over files/files_b64gz when the bundle will not fit inline. | |
| files_b64gz | No | Alt to files: base64(gzip(JSON {path:content})). Use if a CDN/WAF blocks raw code in the body. | |
| project_uuid | No | Target project (for namespace/schema checks). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false; the description adds meaningful context beyond that: AST-only analysis with no code execution, and the specific validation classes performed. It does not describe the result shape (issues list, error codes) or what happens on partial failure, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense and front-loaded: the pre-publish purpose and AST-only safety note come first, followed by the checklist. No sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should ideally say what a validation result contains (pass/fail, list of findings). It covers inputs and checks well, but leaves the return contract implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 does not add meaning about the files/files_ref/files_b64gz alternatives or project_uuid beyond what the schema already spells out.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (validate) and resource (locally-authored bundle) plus scope (against the live platform, pre-publish) and enumerates exactly what is checked. This is clearly distinguishable from build_publish, build_smoke_test, and schema_validate by its AST-only, pre-publish framing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'BEFORE publishing' constraint gives clear timing context for when to call it. It does not name alternatives or exclusions (e.g., when to prefer build_smoke_test or build_doctor instead), so it stops 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.
build_verifyADestructiveInspect
ACCEPTANCE TEST of your app's running PREVIEW (after build_deploy, before build_go_live). Where build_audit reads the code, build_verify USES the deployed preview like a buyer would, with throwaway test accounts (verify-@example.com, deleted afterwards): health (serves, app.js = the published version, boots, API reachable); accounts (sign-up, login right after sign-up, login, forgot-password reachable); the role permission matrix (per end-user role x schema: the declared policy holds, server-owned fields such as status/totals/payment state cannot be written by the user, fulfilment records cannot be minted, another user's records cannot be read); commerce (the server prices checkout even when the client price/amount is tampered; a success-URL visit without payment changes nothing; Stripe TEST mode only, otherwise refused); event-bound workflows reach COMPLETED with the verified recipient (no real email is ever sent); capacity is enforced; draft/hidden rows stay out of public reads; launch basics (terms/privacy, meta, viewport, gzip, headers). Returns a score and pass/fail/skip per check with evidence and the exact fix. Only the caller's own project PREVIEW, never the live app or other projects. ~1-3 min, rate-limited; dry_run=true lists the planned checks. Flow: build_audit -> build_publish -> build_deploy -> build_verify -> fix -> build_go_live (which reports the latest build_verify result).
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Always 'preview' (default). The live app is never tested. | |
| dry_run | No | true: list the planned checks for the published bundle without touching the preview. | |
| budget_s | No | Total time budget in seconds (30-180, default 180). Partial results are returned when it runs out. | |
| project_uuid | Yes | Your project (its running preview is tested). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and openWorldHint=true, but the description adds substantial context beyond them: throwaway accounts are created and deleted, Stripe runs in TEST mode only (otherwise refused), no real email is sent, and the run is rate-limited at ~1-3 min. These are exactly the side-effect details that determine whether an agent should invoke a destructive, open-world tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with scope, then exclusions and timing, then the flow, which is good ordering with no filler sentences. The long semicolon-separated checklist of tested areas is dense and slightly hard to scan as a single paragraph, keeping it off a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by describing the return: a score plus pass/fail/skip per check with evidence and the exact fix. Combined with timing, dry-run behavior, and the post-run consumer (build_go_live reports the latest result), an agent has everything needed to call and interpret it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all four parameters; the description reinforces the key constraint that target is always 'preview' and restates what dry_run does. It doesn't add detail for budget_s beyond the schema, so it sits just above the baseline rather than redefining parameter behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (acceptance-test the running PREVIEW) and explicitly contrasts itself with build_audit ('reads the code' vs 'USES the deployed preview like a buyer would'). It also positions itself in the pipeline against build_deploy and build_go_live, so an agent can separate it from build_smoke_test/build_validate 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit ordering ('after build_deploy, before build_go_live'), an explicit exclusion ('Only the caller's own project PREVIEW, never the live app or other projects'), and a full flow: build_audit -> build_publish -> build_deploy -> build_verify -> fix -> build_go_live. Alternatives and preconditions are named rather than inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_whoamiARead-onlyInspect
Resolve your API key's scope: role (domain_admin/project_admin), domain, whether you can create projects, and your plan. Call this to decide the flow.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already say readOnlyHint=true and openWorldHint=false, so safety is covered; the description adds context by enumerating the returned facts (role values, domain, project creation ability, plan) which help an agent branch on the result. It doesn't cover failure modes (e.g., invalid or expired key), which keeps 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with what is returned and followed by a decision cue. There's no filler and every clause adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description's enumeration of the return payload is what makes the tool callable in practice; it does that well. It falls just short of complete because it doesn't explain error behavior when the key is invalid or unscoped.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, baseline 4. There is nothing to disambiguate, and the description correctly implies no input is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It uses a specific verb ('Resolve') with a specific resource ('your API key's scope') and enumerates exactly what is returned: role, domain, project-creation capability, and plan. It's clear what the tool does, though it doesn't distinguish itself from similar siblings like apikey_get_scope or rbac_get_my_access.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Call this to decide the flow' is a useful implied usage cue ('call this first/early'), but there are no explicit exclusions or named alternatives. An agent must infer whether this differs from apikey_get_scope or rbac_get_my_access on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connector_cancelCDestructiveIdempotentInspect
Cancel a running connector execution.
| Name | Required | Description | Default |
|---|---|---|---|
| connector_id | Yes | UUID of the connector. | |
| execution_id | Yes | UUID of the execution to cancel. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is known. The description adds almost nothing beyond that — it does not say whether cancellation is graceful or immediate, what happens to partial output, or what error occurs for non-running executions. 'Running' is the only marginal added signal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. It is efficient, though so terse that the brevity shades into under-specification rather than disciplined conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a destructive mutation with no output schema, and the description never says what the agent gets back, whether cancellation is reversible, or how failures are surfaced. Given the destructive annotation, an agent needs more than one clause to call this confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both UUIDs documented in the schema, so the baseline is 3. The description adds no further meaning about connector_id vs execution_id or their relationship.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: 'Cancel' a 'running connector execution.' An agent can distinguish this from connector_run or connector_status without opening the schema. It stops short of naming those siblings or clarifying the boundary with connector_disable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of alternatives. The word 'running' implies a state precondition, but whether an already-completed execution should trigger a different tool is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connector_disableBIdempotentInspect
Disable a connector.
| Name | Required | Description | Default |
|---|---|---|---|
| connector_id | Yes | UUID of the connector. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide several crucial behavioral hints (idempotent, not destructive), which mitigates the need for the description to explain core behavioral safety. The description itself is minimally behavioral, simply stating the intent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence that perfectly summarizes the tool's function, adding no superfluous detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool requires context beyond just 'disabling' to ensure the agent selects the correct method. Since it lacks sibling differentiation, zero usage guidance, and is a destructive-adjacent action (even if non-destructive per annotations), it is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage and only one parameter, the description doesn't need to add significant value beyond naming the parameter. It relies on the schema to specify that 'connector_id' is the UUID of the connector.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the basic action ('Disable a connector'), but is too general. It doesn't distinguish how it interacts with the connector resource specifically (e.g., logically disabling it, turning off services) compared to other connector management tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides zero guidance on when or how to use this tool. There is no mention of the context where disconnection is necessary, or if any alternative tools exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connector_discoverCInspect
Trigger schema/metadata discovery for a connector.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No | Optional discovery parameters. | |
| connector_id | Yes | UUID of the connector. |
TDQS
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 safety profile is covered. The description adds nothing beyond that: it does not say the operation is asynchronous, whether re-running duplicates or replaces existing discovered schemas, what the nested 'params' object can contain, or that results must be retrieved via connector_discover_results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler. It is efficient, though its extreme terseness means it earns low marks on completeness rather than on structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-idempotent, open-world mutation trigger with an untyped nested params object and no output schema, the description should explain the async lifecycle (poll connector_discover_status, read connector_discover_results) and the effect on existing schemas. None of that is present, leaving the agent to guess the call-then-poll contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: connector_id is documented as a UUID and params as optional discovery parameters. The description adds no meaning beyond the schema, so the baseline of 3 applies; the opaque nested 'params' object remains unspecified in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Trigger') and a specific resource ('schema/metadata discovery for a connector'), so an agent can tell it apart from connector_test or connector_run. It does not explicitly distinguish it from the closely named connector_discover_status and connector_discover_results siblings, which a single clause could have fixed.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus connector_discover_status, connector_discover_results, or connector_test, nor any prerequisite about the connector needing to be enabled/configured first. The 'Trigger' verb hints at initiation but the required follow-up polling workflow is left entirely implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connector_discover_resultsCRead-onlyInspect
Get discovery results.
| Name | Required | Description | Default |
|---|---|---|---|
| connector_id | Yes | UUID of the connector. | |
| execution_id | Yes | UUID of the discovery execution. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds nothing beyond that: no statement of what is returned, whether results are paginated, or whether an in-progress execution yields partial results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no wasted words, but it is under-specified rather than concise. There is nothing to front-load beyond the verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must carry the burden of explaining what 'results' look like, and it does not. For a read tool that returns discovery output, the agent is left guessing about the response shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both UUID parameters are already well documented in the schema. The description adds no additional meaning about the relationship between connector_id and execution_id; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It names a verb and resource ('Get discovery results'), which is better than a tautology. However, 'discovery results' is never defined, and it doesn't distinguish this tool from closely related siblings like connector_discover or connector_discover_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to call this instead of connector_discover or connector_discover_status, nor any prerequisite noted (e.g. that an execution must have run first). The agent must infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connector_discover_statusCRead-onlyInspect
Get discovery execution status.
| Name | Required | Description | Default |
|---|---|---|---|
| connector_id | Yes | UUID of the connector. | |
| execution_id | Yes | UUID of the discovery execution. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, but the description adds almost no behavioral context. It does not explain polling behavior, terminal states, or what the execution status represents.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is front-loaded and contains no waste. However, it is arguably too terse for a tool whose usage depends on asynchronous discovery execution semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with only two required parameters, but there is no output schema and the description does not explain what status values are returned or how they should be interpreted. An agent must infer the polling lifecycle and result meaning.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are fully documented in the schema. The description adds no additional meaning beyond what the schema already provides, which meets the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 the status of a discovery execution. This is clearly distinct from starting a discovery (connector_discover) or retrieving results (connector_discover_results), though it does not explicitly differentiate itself from those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 connector_discover, connector_discover_results, or connector_status. The intended polling-after-discovery use case is implied but never stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connector_enableBIdempotentInspect
Enable a connector for scheduling.
| Name | Required | Description | Default |
|---|---|---|---|
| connector_id | Yes | UUID of the connector. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, idempotent, non-destructive mutation, so safety is covered. The description adds one piece of extra context — that enabling affects scheduling — but says nothing about required permissions, connector state prerequisites, or whether re-enabling an enabled connector is a no-op.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short front-loaded sentence with no filler. It is efficient, though the terseness leaves the behavioral gaps unfilled.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter toggle with full annotations and schema coverage, the definition is minimally adequate. It lacks the state prerequisite information an agent would need to avoid calling enable on an unconfigured connector.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single required connector_id already documented as a UUID. The description adds no format, example, or sourcing guidance 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Enable a connector") plus a scoping qualifier ("for scheduling"), which is enough to distinguish it from connector_disable and connector_status. It stops short of describing what enabling actually changes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to enable versus disable, whether the connector must be configured or tested first (connector_test, connector_test_config exist as siblings), or what preconditions cause failure. The only hint is the phrase "for scheduling."
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connector_pluginsARead-onlyInspect
List available connector plugins.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered without description help. The word 'available' hints at scoping (only usable plugins), but the description says nothing about pagination, filtering, or what 'available' excludes — a small but real gap given no 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the resource named up front and zero filler. Nothing is buried or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only list tool this is close to adequate, but with no output schema the description should hint at what each plugin entry contains (identifier, name, enabled state) so the agent knows what it can do with the result. Without that, the agent must discover the return shape empirically.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so there is no parameter semantics to explain and the baseline of 4 applies. The description correctly avoids inventing filtering options that the empty schema does not support.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('List available connector plugins'), which makes the operation immediately identifiable. It does not differentiate itself from the similarly named connector_discover or connector_status siblings, leaving the agent to infer the distinction from names alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent would reasonably call this to enumerate plugins before invoking connector_enable or connector_run. There is no explicit statement of when to use this versus connector_discover or connector_status, and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connector_runCDestructiveInspect
Trigger a manual connector sync execution.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No | Optional execution parameters. | |
| connector_id | Yes | UUID of the connector. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, but the description adds nothing beyond 'manual' — no warning that triggering a sync can mutate/overwrite data, no mention of non-idempotency implications or what happens if a run is already in progress. For a destructive mutation, that is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no waste. It is appropriately brief, though thin enough that brevity comes at the cost of completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, non-idempotent, open-world mutation with a nested free-form 'params' object and no output schema, the description says nothing about effects, return values, or the shape of params. It is under-specified for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with connector_id documented as a UUID and params as an optional object, so the schema does the heavy lifting. The description adds no meaning about what execution parameters are accepted, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Trigger') and resource ('connector sync execution'), and 'manual' distinguishes it from scheduled runs. It doesn't explicitly contrast with close siblings like connector_test or connector_discover, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to run this versus connector_test, connector_discover, or connector_enable, and no prerequisites (configured connector, permissions) are mentioned. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connector_statusBRead-onlyInspect
Get connector status and recent executions.
| Name | Required | Description | Default |
|---|---|---|---|
| connector_id | Yes | UUID of the connector. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds that the response includes recent executions, which is useful return-content context not present in any output schema, but it says nothing about how far back 'recent' reaches, whether results are paginated, or what a failed connector status looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with no filler, and the resource being fetched is front-loaded. It is efficient but perhaps too terse for a tool whose output the agent must interpret.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only status tool with full schema coverage and clear annotations, the description covers the essentials: what is fetched and that execution history is included. No output schema exists, but the description names the return payload categories adequately for an agent to decide whether to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 ('UUID of the connector'), so the schema already carries the semantic load. The description adds nothing about the identifier beyond what the schema states, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (Get) and resource (connector status and recent executions), telling an agent exactly what information comes back. It does not, however, distinguish this from closely related siblings such as connector_test, connector_discover_status, or connector_run, which an agent may reasonably confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this rather than connector_test, connector_discover_status, or connector_run, nor any prerequisites or exclusions. The agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connector_testCRead-onlyInspect
Test an existing connector's connectivity.
| Name | Required | Description | Default |
|---|---|---|---|
| connector_id | Yes | UUID of the connector. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile and external-network nature are covered by structured data. The description adds nothing beyond that: it doesn't say whether the test is synchronous or async, how long it takes, whether it consumes quota, or what a failure looks like. There is no contradiction, but no value added either.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence with the verb and scope front-loaded; nothing is wasted. It is not padded, though it is terse to the point of omitting anything useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only tool with full schema coverage, the definition is minimally adequate. Since there is no output schema, the description could have stated what a test returns (pass/fail, error detail, latency), which is the main remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter connector_id is documented as a UUID, so the description needn't repeat it. Baseline 3 applies since the description adds no additional meaning about the identifier (e.g. where to obtain it).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Test') and resource ('an existing connector's connectivity'), so an agent can tell it performs a connectivity check rather than a mutation. However, it does not distinguish itself from close siblings such as connector_test_config or connector_status, leaving the agent to infer the difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this instead of connector_test_config, connector_status, or connector_run. The only implicit condition is 'existing', which just restates that connector_id is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connector_test_configCIdempotentInspect
Test a connector configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| config | Yes | Connector config to test. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations say readOnlyHint=false and openWorldHint=true, meaning this 'test' is not a pure read and reaches outside the system — a non-obvious trait the description never mentions. It also omits whether the test performs real network calls, whether it can fail slowly/time out, what credentials the embedded config needs, or whether anything is persisted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with zero padding and the verb front-loaded — efficient, though its brevity here is closer to under-specification than to discipline.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Placeholder.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Top-level schema coverage is 100%, but the sole parameter is an unconstrained nested object described only as 'Connector config to test', with no documented child fields. Since the entire input is this opaque blob, the description needed to say what shape of config it accepts; it adds nothing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Test a connector configuration'), which is clear on its own. However, it does nothing to distinguish itself from the sibling tool 'connector_test', which reads as a near-synonym — an agent cannot tell from the text which one validates config shape versus runs a live connection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No indication of when to reach for this over 'connector_test', 'connector_enable', or 'connector_run', nor any precondition such as the connector needing to exist first. The single sentence offers no context the agent could act on.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crud_createAInspect
Create a new object in the current domain. Use schema_list to see available types and their fields.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | Object fields as key-value pairs | |
| name | Yes | Object name (required for most types) | |
| tenant | No | Optional tenant name to create the object under (multi-tenant apps: seed a specific named tenant's data). Omit for single-tenant apps — the session/API-key tenant is used. | |
| object_type | Yes | The object type to create (e.g. 'customer', 'appointment', 'project') | |
| parent_type | No | Parent type if applicable (e.g. 'project' for tenant, 'domain' for project) | |
| parent_fq_name | No | Parent FQ name path (e.g. ['cine-corp', 'car-service']) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false and openWorldHint=false, so the safety profile is covered structurally. The description adds only that creation is scoped to the current domain and that types come from the schema. It says nothing about collision/duplicate-name behavior, validation errors, or that non-idempotent repeats may create duplicates — meaningful gaps for a create operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the action front-loaded and the prerequisite second. Nothing redundant, nothing padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With six parameters, a nested data object and no output schema, the definition is thin: it never says what a successful create returns (an FQ name? the created object?) or how parent linkage works for nested types. The schema_list pointer partially compensates for type discovery, but an agent must still infer the response shape and error semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so tenant scoping, parent_type/parent_fq_name nesting and data key-value pairs are already fully documented in the schema. The description's pointer to schema_list for field definitions adds a little value for the nested 'data' object, but no syntax or format detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a new object in the current domain'), which cleanly separates it from crud_get, crud_update, crud_delete and crud_search. The word 'object' is generic without the object_type parameter, but the second sentence clarifies that objects are schema-typed, so an agent can identify the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent to schema_list as a prerequisite for discovering valid types and fields, which is the key gating step before calling this tool. It gives no guidance on when to prefer crud_update over re-creating, or on validation failures, so it stops short of full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crud_deleteCDestructiveIdempotentInspect
Delete an object from the current domain.
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | Object UUID to delete | |
| tenant | No | Optional tenant name context for this delete (multi-tenant apps). Omit for single-tenant apps — the session/API-key tenant is used. Deletes address the record by UUID. | |
| object_type | Yes | The object type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds essentially nothing beyond that — no cascade implications, no irreversibility warning, no auth/tenant scoping behavior beyond the vague 'current domain'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence, front-loaded with the verb and with zero filler. It is terse to the point of being under-informative, but that is a completeness issue, not verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive multi-parameter mutation with no output schema, the description should state what happens on success, whether deletion cascades, and how the tenant parameter interacts with the session tenant. It says none of this, leaving the agent to infer behavior from annotations and schema alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so uuid, tenant, and object_type are already documented in the schema, including the multi-tenant fallback and UUID addressing. The description contributes no additional parameter meaning, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb 'Delete' plus resource 'an object' is identifiable, but 'object' is generic and 'current domain' is never defined in the schema or description, so the agent cannot tell what kinds of objects are deletable. It differentiates from crud_create/get/update only by verb, not by any scoping detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 crud_update or schema_delete, nor any prerequisites such as required permissions or confirmation steps. The only implied usage cue is the tool name itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crud_getARead-onlyInspect
Get a specific object by UUID from the current domain.
| Name | Required | Description | Default |
|---|---|---|---|
| uuid | Yes | Object UUID | |
| object_type | Yes | The object type (e.g. 'customer', 'project', 'tenant') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description contributes the useful "current domain" scoping constraint, but says nothing about behavior when the UUID does not exist, cross-domain access, or the shape of the result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the verb, key, and scope all appear immediately. Nothing extraneous and nothing padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read there is no output schema, so the description is the only place to learn what comes back and how misses are signalled — neither is covered. Adequate to call correctly, but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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, including examples like 'customer', 'project', 'tenant' for object_type. The description only echoes the UUID key, adding no format, case-sensitivity, or valid-type guidance beyond the schema — baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Get") and resource ("object") with an identifying key (UUID) and a scope qualifier ("current domain"). An agent can distinguish it from crud_search (which presumably queries without a UUID), though the description never names that sibling or its own domain-bound behavior explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: "by UUID" hints that this is for direct lookups when the identifier is already known, leaving crud_search as the fallback for unknown IDs. No explicit when-to-use/when-not-to-use or sibling routing is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crud_searchARead-onlyInspect
Search/list objects of any type in the current domain. Use schema_list first to discover available object types. System types: project, tenant, user_account, api_key, connector, audit_log, schema_registry, client_sdk, connector_execution, connector_plugin. Domain types vary per domain (e.g. customer, invoice, appointment, vehicle).
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Optional sort: a field name ('amount', or '-amount' for descending), {"field": "amount", "order": "desc"}, or a list of those. | |
| limit | No | Max results (default: 100, max 1000) | |
| filter | No | Optional boolean filter tree for and/or/not logic, e.g. {"op": "or", "conditions": [{"status": "open"}, {"amount": {"gt": 500}}]}. Use `filters` for simple AND-ed conditions. | |
| offset | No | Skip N results for pagination | |
| tenant | No | Optional tenant name to scope the search to (multi-tenant apps: verify a specific named tenant's data). Omit for single-tenant apps — the session/API-key tenant is used. | |
| filters | No | Filter criteria keyed by field. A plain value is equality (e.g. {"status": "active"}); an object of operators compares (e.g. {"amount": {"gte": 10, "lt": 100}}). Operators: eq, ne, gt, gte, lt, lte, in, not_in, between, contains, starts_with, ends_with, regex, exists. | |
| object_type | Yes | The object type to search (e.g. 'customer', 'project', 'tenant', 'connector') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety and scope are covered structurally. The description adds that domain types vary per domain and that the domain context scopes results, which is useful. It says nothing about result shape, pagination behavior, or default limits beyond what the schema already documents.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action, then the prerequisite, then the type reference. Every sentence earns its place; the type list is dense but genuinely useful lookup content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search with a fully documented schema, the description covers purpose, prerequisite, and valid types adequately. There is no output schema, so a brief note on return shape (list vs paged envelope, total counts) would be the only missing piece. Otherwise sufficient to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including sort, filter/filters distinction, limit, offset, and tenant semantics, so the schema carries the full parameter burden. The description only contributes the object_type value space. Baseline 3 applies since it adds little beyond structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource: "Search/list objects of any type in the current domain," and it names the domain-scoping. It enumerates concrete system and domain object types, so an agent knows exactly what universe it operates in. It stops short of explicitly contrasting with crud_get for single-object retrieval, so sibling differentiation is only implied by the verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit prerequisite workflow: "Use schema_list first to discover available object types," which is actionable guidance an agent can follow. The type enumeration doubles as a validity reference. It does not state when to prefer crud_get or when a search is inappropriate, so exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crud_updateCDestructiveIdempotentInspect
Update an existing object in the current domain.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Fields to update | |
| uuid | Yes | Object UUID to update | |
| tenant | No | Optional tenant name context for this update (multi-tenant apps). Omit for single-tenant apps — the session/API-key tenant is used. Updates address the record by UUID. | |
| object_type | Yes | The object type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so safety and repeat-call behavior are covered by structured data. The description adds nothing beyond that: it never says whether this is a partial (patch) or full replace update, what happens to fields omitted from 'data', what gets destroyed, or what permission is needed for a destructive mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, so nothing is wasted. But it is sized too thin for a destructive four-parameter mutation tool — the brevity reflects under-specification rather than tight, front-loaded communication.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a destructive mutation with no output schema and a nested 'data' payload. The description does not explain partial-vs-full update semantics, merge behavior, tenant handling, or the success/error surface — all things an agent needs before calling a write tool that annotations flag as destructive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters, including the nested 'data' object and the multi-tenant 'tenant' note. The description adds no extra semantics 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Update an existing object'. The word 'existing' implicitly contrasts with crud_create and crud_delete among the siblings. However, 'object' and 'current domain' remain generic — the description never names the object types (records, schemas, etc.) or clarifies the domain scope implied by the surrounding CRUD/schema toolset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this instead of crud_create, crud_delete, crud_search, or the more specific schema_update. There are no prerequisites, no exclusions, and no conditions under which this generic update is the right choice over a domain-specific sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_link_schemasCInspect
Link schemas to a project. Accepts schema UUIDs or names.
| Name | Required | Description | Default |
|---|---|---|---|
| project_uuid | Yes | UUID of the project to link schemas to. | |
| schema_names | No | List of schema names to link (resolved to UUIDs). Use 'namespace:name' when a name exists in several namespaces. | |
| schema_uuids | No | List of schema registry UUIDs to link. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the operation non-read-only, non-idempotent and non-destructive, but the description adds nothing beyond that: it does not say what happens if a schema is already linked, whether links are additive or replace existing ones, or what permissions are required for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two very short sentences, front-loaded with the action. The second sentence largely duplicates what the schema fields already state, so it is minor redundancy rather than wasted bulk.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter mutation with no output schema, the description should cover duplicate-link behavior and the result of the call. It leaves both unspecified, so an agent cannot predict the outcome of invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 well documented, including the 'namespace:name' resolution rule. The description's 'Accepts schema UUIDs or names' restates that both input paths exist but adds no syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Link schemas to a project'), which is unambiguous on its own. It does not, however, distinguish itself from nearby siblings such as build_list_bound_schemas or schema_list_project, so the agent must infer which is appropriate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is given, and no alternative tool is named. The second sentence describes accepted inputs rather than the conditions under which this tool should be chosen.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rbac_check_permissionBRead-onlyInspect
Check if the current user has a specific permission.
| Name | Required | Description | Default |
|---|---|---|---|
| permission | Yes | Permission to check (e.g. 'schema:manage', 'data:write'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The only added context is 'current user', which implies no user identifier is needed, but the description says nothing about the return value (presumably a boolean allow/deny), error behavior for unknown permission strings, or auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the core action and scope appear immediately. Nothing redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only tool with full schema coverage and annotations, the essentials are present. But with no output schema, the agent is left guessing whether the result is a boolean, an object, or an error for unknown permissions — one clause would have closed that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter example ('schema:manage', 'data:write') already conveys the expected format in the schema. The description adds no syntax, casing, or wildcard guidance beyond what the schema provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (check) and resource (a permission) scoped to the current user, which an agent can distinguish from generic CRUD tools. However, it never distinguishes itself from the sibling rbac_get_my_access, which presumably also reports permissions, so sibling differentiation is missing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the phrase 'a specific permission' suggests a single targeted check as opposed to a full access listing, but the description never says when to prefer this over rbac_get_my_access or apikey_get_scope. No prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rbac_get_my_accessARead-onlyInspect
Get current user's role, permissions, and scope.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds only the content scope (role, permissions, scope) and says nothing about return shape, whether the result is cached, or how it behaves when the caller has no role assigned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. Every word carries information about the resource and the returned fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-param read-only tool this is close to sufficient, but with no output schema the description is the only place an agent could learn the return structure, and it only names three concepts without shape or nesting. It also leaves the choice between this and rbac_check_permission to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the baseline is 4; nothing in the schema needs compensating for. The description correctly implies no input is required and that the subject is always the caller.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('get') plus resource ('current user's role, permissions, and scope'), so an agent knows exactly what it retrieves. However, it never distinguishes itself from the sibling rbac_check_permission or build_whoami, which likely cover overlapping visibility-into-identity ground.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'current user' plus zero parameters signals a self-inspection call used when an agent needs to discover its own identity/scope. There is no explicit when-to-use, no exclusion of rbac_check_permission, and no statement of prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schema_deleteCDestructiveIdempotentInspect
Delete a schema from the domain. Use with caution.
| Name | Required | Description | Default |
|---|---|---|---|
| schema_uuid | Yes | UUID of the schema to delete. | |
| force_delete | No | Force delete even with dependencies (default: false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is known. The description's only added context is 'Use with caution,' which merely restates destructiveHint; it does not explain what data is lost, whether dependent resources cascade or block deletion, or whether deletion is permanent. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the action front-loaded, so nothing is buried. However, the second sentence ('Use with caution') is low-value filler that consumes space without earning it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with no output schema, the description omits the important operational details an agent needs: what happens to dependent schemas, whether deletion is irreversible, and how failures without force_delete manifest. The schema covers parameters, but the behavioral context around a destructive operation is thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both schema_uuid and force_delete are already documented, including the default value for force_delete. The description adds no meaning 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete a schema from the domain'), which is unambiguous and clearly distinct from read-oriented siblings like schema_get and schema_list. It does not explicitly differentiate itself from schema_update or schema_save, but the destructive verb makes the intent clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use with caution' is a generic warning rather than guidance on when to choose this tool over schema_update or when not to delete. Nothing tells the agent how force_delete changes the decision or what preconditions (e.g., dependencies) should trigger caution, leaving usage entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schema_getARead-onlyInspect
Get full details of a specific schema by UUID. Returns the complete schema definition including all attributes and metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| schema_uuid | Yes | UUID of the schema to retrieve. | |
| include_content | No | Include full schema content (default: true). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds that the full definition, attributes and metadata come back, which is useful given there is no output schema, but it doesn't address the include_content toggle (default true) or error behavior for bad UUIDs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the key identifier front-loaded. The second sentence largely restates "full details" as "complete schema definition including all attributes and metadata," so there is a little redundancy but no bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with full schema coverage and annotations, the description covers the essential return shape in the absence of an output schema. Missing only edge-case behavior such as not-found handling or the effect of include_content=false.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both schema_uuid and include_content are already documented in the schema. The description adds no meaning beyond that and actually implies a always-complete response, which sits slightly at odds with the include_content option.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Get full details of a specific schema") and the lookup key (UUID), which is enough for an agent to distinguish it from list-style siblings like schema_list. It never names a sibling outright, so differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: fetch by UUID when you already have one. There is no explicit when-to-use versus alternatives (schema_list, schema_list_project), and no note about what to do if the UUID is unknown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schema_listBRead-onlyInspect
List all existing schemas in the current domain.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety and scope characteristics are covered structurally. The description adds only the domain-scoping qualifier; it says nothing about result size, ordering, or whether empty domains return an empty list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though the word "existing" is slightly redundant and the domain scoping could be made more explicit.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-arg list tool with no output schema, the description is adequate but thin: it never indicates what a returned schema entry contains or how to go from a listed schema to a fetch (schema_get). Against a crowded schema_* sibling family, that leaves a real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 4 applies. No parameter claims are made that could mislead.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List all existing schemas") plus a scope qualifier ("in the current domain"). It does not distinguish itself from the sibling schema_list_project, so an agent cannot tell from the text alone which listing tool to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus schema_list_project, schema_get, or the build_list_bound_schemas sibling. The only hint is the phrase "current domain," which is never contrasted with project-scoped listing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schema_list_projectCRead-onlyInspect
List schemas linked to the current project.
| Name | Required | Description | Default |
|---|---|---|---|
| project_uuid | No | Project to list schemas for. Optional; defaults to the key's project when resolvable (pass the project_uuid from build_whoami/build_list_projects under an API key). | |
| include_content | No | Include full schema content (default: true). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds nothing beyond them: it doesn't mention that include_content defaults to true (a potentially large payload), nor anything about result shape or ordering — no output schema exists to fill that gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though the terseness borders on under-specification given the sibling ambiguity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is low complexity with a fully documented schema and safety annotations, so the description is minimally sufficient. However, it leaves two real gaps: the distinction from 'schema_list' and the default-include_content behavior that materially affects response size.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (project_uuid and include_content) are already fully documented in the schema, and the description adds no additional parameter meaning. Baseline 3 applies when the schema does all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List schemas') with the scoping qualifier 'linked to the current project', so the operation is unambiguous. It does not differentiate itself from the very similar sibling 'schema_list' or from 'build_list_bound_schemas', leaving the agent to infer which listing tool applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is given, and no alternative is named despite three schema-listing siblings. The only implied context is the project scoping, which the agent must derive on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schema_saveADestructiveIdempotentInspect
Save/upload schemas into a project. Schemas are validated before saving and linked to the project. Returns the saved schemas with their UUIDs; skipped schemas carry the platform's reason.
IMPORTANT: Pass FLAT schema objects directly — do NOT wrap in schema_content. The tool handles schema_type detection and wrapping automatically.
Required fields: name, namespace, parent_type, attributes. Set namespace to your app's namespace (e.g. 'shop'); the schema is stored as namespace:name. Mark required attributes with "mandatory": true.
Supported attribute types: 'string' for text, 'float' for decimal numbers (NOT 'number'), 'integer' for whole numbers, 'boolean' for true/false.
project_uuid defaults to your key's project; a project-scoped key can only save into its own project. A schema skipped for compatibility warnings is applied with force_upload=true.
Example: { "schemas": [{ "name": "product", "namespace": "shop", "description": "Product catalog entry", "parent_type": "tenant", "attributes": [ {"name": "title", "type": "string", "mandatory": true}, {"name": "price", "type": "float"}, {"name": "stock", "type": "integer"} ] }] }
| Name | Required | Description | Default |
|---|---|---|---|
| schemas | Yes | Array of schema definitions to save. | |
| force_upload | No | Apply changes that only have compatibility WARNINGS (default: false). Breaking changes are still refused. | |
| project_uuid | No | Project to save into (defaults to your key's project; required for a domain-admin key). | |
| skip_existing | No | Skip schemas that already exist (default: true). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and idempotentHint=true; the description adds genuine context beyond that — pre-save validation, what the return value contains (UUIDs and skip reasons), key scoping limits, and the force_upload escape hatch for warnings only. This is the kind of disclosure the annotation bar rewards.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose first, then the critical 'do NOT wrap' warning, then field rules, then a worked example. Slightly long and the attribute-type list reads as a block, but every segment carries actionable content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description supplies the return shape itself (saved schemas with UUIDs, skipped ones with reasons). Combined with the required-fields and example coverage, an agent has everything needed to construct a valid call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline would be 3, but the description goes materially further: it demands FLAT objects (no schema_content wrapper), lists the required fields, explains namespace semantics ('stored as namespace:name'), documents mandatory flags, and enumerates valid attribute types including the 'float' vs 'number' trap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Save/upload schemas into a project') plus the side effects of validation and project linkage. It does not explicitly distinguish itself from schema_update or schema_validate, which are the closest siblings, so the 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real operational context: schemas are validated first, skipped ones come back with reasons, project_uuid defaults to the key's project, and force_upload is the remedy for compatibility warnings. It stops short of saying when to use this versus schema_update for an already-existing schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schema_updateCDestructiveIdempotentInspect
Update an existing schema definition.
| Name | Required | Description | Default |
|---|---|---|---|
| new_version | No | Optional new version string. | |
| schema_uuid | Yes | UUID of the schema to update. | |
| schema_content | Yes | New schema content (full schema definition). | |
| check_compatibility | No | Check compatibility with existing data (default: true). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this operation as destructive, idempotent, and not read-only, so the safety profile is largely covered. The description adds no behavioral context beyond the name—it does not explain that schema_content replaces the full definition, what happens to existing data or versions, or how compatibility checking behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with zero wasted words, and the core action is front-loaded. Its brevity is appropriate structurally, though it leaves important behavioral context unstated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation with a nested object parameter and no output schema, the description is too sparse. It omits key context such as whether the update is a full replacement or a partial patch, how compatibility checks affect behavior, and what the operation returns or affects when it fails.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all four parameters, including the required schema_uuid and schema_content and the optional new_version and check_compatibility. The description adds no parameter-level semantics beyond what the schema provides, which is the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Update') and resource ('an existing schema definition'), making the basic operation clear. However, it does not differentiate this tool from closely related siblings such as schema_save or schema_validate, so an agent must infer when this is the right choice.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like schema_save or schema_validate, and it does not mention prerequisites, exclusions, or expected contexts. Usage must be inferred from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schema_validateARead-onlyInspect
Validate schemas before saving. Checks for conflicts with existing schemas, circular dependencies, reserved names, and parent_type correctness. Always validate before saving!
| Name | Required | Description | Default |
|---|---|---|---|
| schemas | Yes | Array of schema definitions to validate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered; the description adds genuine value by enumerating what is checked (conflicts, circular dependencies, reserved names, parent_type correctness). It does not disclose what a failing validation returns or whether it raises an error, which is the remaining 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the purpose front-loaded and the checks enumerated tightly. The exclamatory second sentence slightly restates the 'before saving' clause of the first, a minor redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only single-parameter validation tool with no output schema, the description covers what is checked and when to call it. The one omission an agent would want is the result format on failure (issue list vs. thrown error), which the absent output schema leaves unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is a single required array parameter already documented as 'Array of schema definitions to validate.' The description adds nothing about the shape of individual schema objects or required keys within them, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (validate) and resource (schemas), plus the timing constraint (before saving) and the exact categories of checks performed. An agent can distinguish this from schema_save or schema_update 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The closing directive 'Always validate before saving!' makes the intended workflow and prerequisites clear, implicitly positioning this as a pre-flight step to schema_save. It stops short of naming schema_save as the alternative or stating when validation can be skipped, but the context is unmistakable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdk_downloadCRead-onlyInspect
Get download URL for an SDK.
| Name | Required | Description | Default |
|---|---|---|---|
| artifact | No | Artifact type (default: 'wheel'). | |
| sdk_uuid | Yes | UUID of the SDK. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds nothing beyond that: it does not say whether the URL is time-limited/presigned, whether a failure occurs if the SDK hasn't been generated, or how the artifact choice affects the response.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler, appropriate for a simple read tool. It is lean to the point of omitting useful context, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read with full schema coverage and annotations, the essential mechanics are covered. However, missing prerequisites (SDK must exist/be generated) and URL lifetime/link behavior leave the agent guessing about failure modes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including the artifact enum with its 'wheel' default and the sdk_uuid description, so the schema does the heavy lifting. The description contributes no additional parameter meaning, which matches the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'Get download URL for an SDK' — which is clearly distinct from siblings like sdk_generate, sdk_list and sdk_status. It does not, however, explicitly say how it differs from those siblings or what artifact types it can return.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 tool versus alternatives, and no stated prerequisites. An agent must infer that the SDK must already exist or have been generated before a download URL is obtainable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdk_generateCDestructiveInspect
Generate client SDKs for the domain's schemas.
| Name | Required | Description | Default |
|---|---|---|---|
| languages | No | Languages to generate (default: ['python', 'javascript']). | |
| include_docs | No | Include docs (default: true). | |
| force_rebuild | No | Force rebuild (default: false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, destructiveHint=true, idempotentHint=false, and openWorldHint=false, but the description adds no behavioral context beyond the basic purpose. It does not explain what may be overwritten or destroyed, whether existing generated SDKs are replaced, where output is written, or what permissions are needed, which is especially important given destructiveHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. However, it is arguably too terse for a destructive SDK generation tool, so it earns credit for concision but not top marks.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description does not explain return values, generated artifact locations, or the effect of the destructive flag. Combined with no usage guidance and a destructive annotation, the description is not complete enough for an agent to invoke this tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter is documented with its default, so the schema already carries the parameter semantics. The description does not add any meaning about languages, documentation inclusion, or force rebuilding beyond what the schema provides, making baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: generate client SDKs for the domain's schemas. It is clearly distinct from sibling tools like sdk_download, sdk_list, and sdk_status in purpose, though it does not explicitly name alternatives or clarify what "domain's schemas" means in context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives no guidance on when to use this tool versus sdk_download, sdk_list, or sdk_status, nor does it mention prerequisites, expected input state, or when generation should be preferred over downloading an existing SDK. The agent must infer usage entirely from the tool name and one sentence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdk_listBRead-onlyInspect
List available SDKs for the current domain.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results (default: 50). | |
| language | No | Filter by language. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds that results are scoped to the current domain, which is useful context, but it does not disclose pagination behavior, default truncation at 50, or what the returned SDK entries contain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with zero waste. The scope constraint ('current domain') is front-loaded and directly useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 a fully documented schema and readOnly annotations, the description is minimally adequate. It omits any indication of return shape, pagination defaults, or how this discovery tool relates to sdk_status and sdk_generate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both limit and language are already documented in the schema. The description adds no extra parameter semantics; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description has a clear verb and resource ('List available SDKs') and scopes results to 'the current domain.' It is distinguishable in practice from mutation siblings like sdk_generate and sdk_download, though it does not explicitly name those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives no when-to-use guidance, no exclusions, and no routing toward related tools such as sdk_status, sdk_generate, or sdk_download. The agent must infer that this is the read-only discovery step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sdk_statusBRead-onlyInspect
Check SDK generation request status.
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | Yes | Request ID from sdk_generate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds nothing beyond that — it doesn't say whether this is a point-in-time check or a poll, what states a request can be in, or whether results persist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with zero waste. It is terse to the point of under-specification, but nothing in it is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should convey what a status check returns — status values, progress, or error states. It says none of this, leaving the agent unable to interpret the response of a status-only tool whose entire purpose is the return value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is fully documented there ('Request ID from sdk_generate'), so the description needn't compensate. It adds no extra meaning about the ID format or lifetime, which is the baseline expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Check SDK generation request status'), which is clearly distinct from siblings sdk_generate, sdk_download, and sdk_list. It doesn't explicitly name those siblings or draw the contrast, but the action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the schema says the request_id comes 'from sdk_generate', which suggests this is a follow-up call after generation. The description itself gives no when-to-use guidance, no mention of polling or when the request is complete.
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.
2 tool updates
- Added
build_e2e_test - Added
build_e2e_test_status
1 tool update
- Changed
build_bind_data_source3 fields changed- added
Input schema / properties / bindings / items / properties / confirm_tenant_binding_downgradeAdded value: +{ + "description": "Set true, separately from tenant_binding, only when the data owner has agreed to move this table from mode 'column' to 'fixed', which removes its row filter. Required for that move when the gate enforces.", + "type": "boolean" +} - changed
Input schema / properties / bindings / items / properties / mode / descriptionPrevious value: -"live_read (default, read-only), live_readwrite (domain-admin key only), or sync (copy into SuperoDB)."New value: +"live_read (default, read-only), live_readwrite (domain-admin key only; postgresql, supabase and mysql only), or sync (copy into SuperoDB). oracle and mongodb are sync only." - changed
Input schema / properties / bindings / items / properties / tenant_binding / descriptionPrevious value: -"How live rows map to Supero tenants. OMIT for the default {mode:'fixed', tenant:'default-tenant'} (all rows visible to the default tenant/admin — required, else live reads 403 tenant_binding_missing). For per-tenant isolation pass {mode:'column', tenant_field:'<col>', tenant_value_map:{<supero_tenant>:<source_value>}}."New value: +"How live rows map to Supero tenants. State this for every new live table: ask the data owner which of these applies, never assume. (1) Rows of several tenants, separated by a column: {mode:'column', tenant_field:'<source column>', tenant_value_map:{'<supero tenant>':'<value in that column>'}, on_unmapped_tenant:'deny'}; each caller reads only its mapped rows, and a tenant not in the map is refused, default-tenant included. (2) The whole source belongs to one named tenant: {mode:'fixed', tenant:'<that tenant>'}; only that tenant's callers can read. (3) Admin or internal data only: {mode:'fixed', tenant:'default-tenant'}; default-tenant callers read every row with no filter, and every named-tenant caller gets 403 tenant_mismatch. Last resort, only if a fixed bind is refused because a column looks like a tenant discriminator and the owner has told you that column does not separate tenants: add single_tenant_source_confirmed:true. It turns off row filtering for that source and needs the owner's answer; your API key and the time are recorded as the attestation."
1 tool update
- Changed
build_recommend_integrations2 fields changed- added
Input schema / properties / project_uuidAdded value: +{ + "description": "Optional project UUID; its region is used when `region` is not given.", + "type": "string" +} - added
Input schema / properties / regionAdded value: +{ + "description": "Optional project region (ISO alpha-2, e.g. 'IN'). Decides the default payment gateway.", + "type": "string" +}
1 tool update
- Added
build_import_services
3 tool updates
- Added
build_audit - Changed
build_go_live1 field changed- added
Input schema / properties / acknowledge_findingsAdded value: +{ + "description": "Explicitly accept outstanding build_audit CRITICAL findings so go-live may proceed when the audit gate is enforced: [{fingerprint, reason}] (reason >= 15 characters; recorded with the version in the response). BLOCKER findings cannot be acknowledged — fix them. Fix findings instead whenever possible.", + "items": { + "properties": { + "fingerprint": { + "description": "The finding's fingerprint from build_audit.", + "type": "string" + }, + "reason": { + "description": "Why it is acceptable to go live with it.", + "type": "string" + } + }, + "required": [ + "fingerprint", + "reason" + ], + "type": "object" + }, + "type": "array" +}
- Added
build_verify
1 tool update
- Changed
build_connect_data_source1 field changed- added
Input schema / properties / table_namesAdded value: +{ + "description": "database/warehouse, OPTIONAL: the source tables to sync, e.g. [\"customers\", \"orders\"]. Omit when you don't know them yet — run build_discover_source next and bind the streams it returns.", + "items": { + "type": "string" + }, + "type": "array" +}
2 tool updates
- Removed
build_e2e_test - Removed
build_e2e_test_status
6 tool updates
- Changed
build_connect_data_source1 field changed- added
Input schema / properties / project_uuidAdded value: +{ + "description": "Project the connector belongs to (from build_list_projects); your key must be allowed to build into it. API-key callers pass it to scope the connector to that project.", + "type": "string" +}
- Changed
build_doctor1 field changed- changed
Input schema / requiredPrevious value: -[ - "files" -]New value: +[]
- Changed
build_publish1 field changed- changed
Input schema / requiredPrevious value: -[ - "project_uuid", - "files" -]New value: +[ + "project_uuid" +]
- Changed
build_validate1 field changed- changed
Input schema / requiredPrevious value: -[ - "files" -]New value: +[]
- Changed
crud_search5 fields changed- removed
Input schema / properties / detailRemoved value: -{ - "description": "Include full object data (default: true)", - "type": "boolean" -} - added
Input schema / properties / filterAdded value: +{ + "description": "Optional boolean filter tree for and/or/not logic, e.g. {\"op\": \"or\", \"conditions\": [{\"status\": \"open\"}, {\"amount\": {\"gt\": 500}}]}. Use `filters` for simple AND-ed conditions.", + "type": "object" +} - changed
Input schema / properties / filters / descriptionPrevious value: -"Filter criteria as key-value pairs (e.g. {\"status\": \"active\"})"New value: +"Filter criteria keyed by field. A plain value is equality (e.g. {\"status\": \"active\"}); an object of operators compares (e.g. {\"amount\": {\"gte\": 10, \"lt\": 100}}). Operators: eq, ne, gt, gte, lt, lte, in, not_in, between, contains, starts_with, ends_with, regex, exists." - changed
Input schema / properties / limit / descriptionPrevious value: -"Max results (default: 100)"New value: +"Max results (default: 100, max 1000)" - added
Input schema / properties / sortAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "object" + }, + { + "items": { + "type": "object" + }, + "type": "array" + } + ], + "description": "Optional sort: a field name ('amount', or '-amount' for descending), {\"field\": \"amount\", \"order\": \"desc\"}, or a list of those." +}
- Changed
project_link_schemas1 field changed- changed
Input schema / properties / schema_names / descriptionPrevious value: -"List of schema names to link (resolved to UUIDs)."New value: +"List of schema names to link (resolved to UUIDs). Use 'namespace:name' when a name exists in several namespaces."
2 tool updates
- Changed
build_publish1 field changed- changed
Input schema / properties / force / descriptionPrevious value: -"Publish even if validation has errors (default false)."New value: +"Publish despite SOFT validation errors (default false). Validation still runs; a wrong/absent schema namespace, a JavaScript syntax error or schemas the platform refuses always block."
- Changed
build_replace_project1 field changed- added
Input schema / properties / forceAdded value: +{ + "description": "Wipe and publish despite SOFT validation errors (default false). Never overrides a wrong/absent schema namespace, a JavaScript syntax error or schemas the platform refuses: those are refused before anything is wiped.", + "type": "boolean" +}
1 tool update
- Changed
schema_save2 fields changed- added
Input schema / properties / force_uploadAdded value: +{ + "description": "Apply changes that only have compatibility WARNINGS (default: false). Breaking changes are still refused.", + "type": "boolean" +} - changed
Input schema / properties / project_uuid / descriptionPrevious value: -"Optional project UUID to auto-link saved schemas to."New value: +"Project to save into (defaults to your key's project; required for a domain-admin key)."
16 tool updates
- Changed
build_bind_data_source3 fields changed- added
Input schema / properties / bindings / descriptionAdded value: +"One entry per app schema to back with a source stream." - added
Input schema / properties / bindings / items / properties / mode / descriptionAdded value: +"live_read (default, read-only), live_readwrite (domain-admin key only), or sync (copy into SuperoDB)." - added
Input schema / properties / connector_id / descriptionAdded value: +"The connector to bind (from build_connect_data_source)."
- Changed
build_configure_services1 field changed- added
Input schema / properties / project_uuid / descriptionAdded value: +"Project UUID (from build_list_projects or build_create_project)."
- Changed
build_connect_data_source5 fields changed- added
Input schema / properties / database / descriptionAdded value: +"database/warehouse: database name." - added
Input schema / properties / host / descriptionAdded value: +"Server hostname (database kinds, Fabric, ClickHouse, Snowflake, Databricks). BigQuery/Redshift take their connection settings in `config`." - added
Input schema / properties / port / descriptionAdded value: +"Server port; omit for the dialect default (5432 PostgreSQL, 3306 MySQL, 1433 MSSQL/Fabric, 1521 Oracle, 27017 MongoDB)." - added
Input schema / properties / ssl_mode / descriptionAdded value: +"database kind: TLS mode, one of disable|allow|prefer|require|verify-ca|verify-full (or the MySQL spellings disabled|preferred|required|verify_ca|verify_identity); other values are rejected. Default 'require'. Used by PostgreSQL/MySQL/MSSQL/Fabric/MongoDB; Oracle and the HTTP warehouses (Snowflake/Databricks/ClickHouse/BigQuery/Redshift) ignore it." - added
Input schema / properties / username / descriptionAdded value: +"database/warehouse: login user (prefer a read-only one)."
- Changed
build_create_project1 field changed- added
Input schema / properties / display_name / descriptionAdded value: +"Optional human-readable name shown in the dashboard."
- Changed
build_deploy1 field changed- added
Input schema / properties / project_uuid / descriptionAdded value: +"Project UUID (from build_list_projects or build_create_project)."
- Changed
build_deploy_status1 field changed- added
Input schema / properties / poll_url / descriptionAdded value: +"The poll_url returned by build_deploy or build_go_live."
- Changed
build_discover_source1 field changed- added
Input schema / properties / connector_id / descriptionAdded value: +"The connector to discover (from build_connect_data_source)."
- Changed
build_get_bundle1 field changed- added
Input schema / properties / project_uuid / descriptionAdded value: +"Project UUID (from build_list_projects or build_create_project)."
- Changed
build_get_project1 field changed- changed
Input schema / properties / project_uuid / descriptionPrevious value: -"Project UUID (from build_list_projects)."New value: +"Project UUID (from build_list_projects or build_create_project)."
- Changed
build_go_live1 field changed- added
Input schema / properties / project_uuid / descriptionAdded value: +"Project UUID (from build_list_projects or build_create_project)."
- Changed
build_logs1 field changed- added
Input schema / properties / project_uuid / descriptionAdded value: +"Project UUID (from build_list_projects or build_create_project)."
- Changed
build_publish1 field changed- added
Input schema / properties / project_uuid / descriptionAdded value: +"Project UUID (from build_list_projects or build_create_project)."
- Changed
build_replace_project2 fields changed- added
Input schema / properties / app_type / descriptionAdded value: +"Default 'web'." - added
Input schema / properties / project_uuid / descriptionAdded value: +"Project UUID (from build_list_projects or build_create_project)."
- Changed
build_set_project_mode2 fields changed- added
Input schema / properties / mode / descriptionAdded value: +"'dev' permits build_replace_project (which still needs a domain-admin key and confirm_project_name); 'live' makes it refuse, protecting production data." - added
Input schema / properties / project_uuid / descriptionAdded value: +"Project UUID (from build_list_projects or build_create_project)."
- Changed
build_teardown1 field changed- added
Input schema / properties / project_uuid / descriptionAdded value: +"Project UUID (from build_list_projects or build_create_project)."
- Changed
build_update_project1 field changed- added
Input schema / properties / project_uuid / descriptionAdded value: +"Project UUID (from build_list_projects or build_create_project)."
64 tool updates
- First observed
apikey_get_scope - First observed
build_bind_data_source - First observed
build_configure_services - First observed
build_connect_data_source - First observed
build_create_project - First observed
build_deploy - First observed
build_deploy_status - First observed
build_discover_source - First observed
build_doctor - First observed
build_e2e_test - First observed
build_e2e_test_status - First observed
build_get_bundle - First observed
build_get_examples - First observed
build_get_project - First observed
build_get_service_contract - First observed
build_get_skills - First observed
build_go_live - First observed
build_list_bound_schemas - First observed
build_list_capabilities - First observed
build_list_data_sources - First observed
build_list_projects - First observed
build_logs - First observed
build_plan - First observed
build_publish - First observed
build_recommend_integrations - First observed
build_replace_project - First observed
build_run_data_source - First observed
build_set_project_mode - First observed
build_smoke_test - First observed
build_stage_bundle - First observed
build_teardown - First observed
build_update_project - First observed
build_validate - First observed
build_whoami - First observed
connector_cancel - First observed
connector_disable - First observed
connector_discover - First observed
connector_discover_results - First observed
connector_discover_status - First observed
connector_enable - First observed
connector_plugins - First observed
connector_run - First observed
connector_status - First observed
connector_test - First observed
connector_test_config - First observed
crud_create - First observed
crud_delete - First observed
crud_get - First observed
crud_search - First observed
crud_update - First observed
project_link_schemas - First observed
rbac_check_permission - First observed
rbac_get_my_access - First observed
schema_delete - First observed
schema_get - First observed
schema_list - First observed
schema_list_project - First observed
schema_save - First observed
schema_update - First observed
schema_validate - First observed
sdk_download - First observed
sdk_generate - First observed
sdk_list - First observed
sdk_status
Related MCP Connectors
Hosted MCP server for AI-driven data ops. Create apps, manage schemas, and CRUD structured data.
Build, deploy, and host full-stack web apps from any MCP client. DB, auth, storage, cron included.
Build and publish full-stack apps from your coding agent: models, rules, pages, auth, per-app MCP.
Create, edit, preview, and deploy full-stack web apps to a live URL from any MCP client.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA production-grade MCP server over Postgres, providing secure data operations with tenant isolation, exact-once mutations, loop-aware rate limiting, and a tamper-evident audit trail.1-

Calameofficial
AlicenseNot gradedqualityAmaintenanceVisual no-code generator that turns any database into multiple scoped MCP servers — one per access group, with PII masking and fail-closed query scoping built in.9 npm5Apache 2.0- AlicenseAqualityBmaintenanceEnables building a full backend directly from MCP clients using natural language, including projects, boards, typed columns, data, and REST endpoints with API keys. It also supports deploying frontends and provides a ready-made admin interface for end clients.48837 npmMIT
- AlicenseNot gradedqualityBmaintenanceDeploy and monetize agent-built apps from one MCP. Ship a full-stack app (login, database, usage billing) with one command, then charge the signed-in end user per API call via X-Settle-Payer (end-user-pays: cost times markup, app owner earns the markup).Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.