Tyton
Server Details
Audit and set up Meta Pixel and the Meta Conversions API with your AI agent. The audit works on any public site with no account. Tyton's hosted server sends your events to Meta, and nothing goes live until you approve it. Start for free: 1 site and 10,000 events a month, no card needed.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 27 tools
The set contains a cluster of read-only status tools (get_setup_progress, setup_status, read_conversion_installation, tracking_status, check_live_setup) whose boundaries require careful reading of dense descriptions to distinguish. Descriptions are detailed and each claims a distinct scope (config vs. progress vs. callback signals vs. event receipt), but an agent could easily misselect among them. The plan and installation tools are more clearly separated.
Names are consistently snake_case and mostly verb_noun (approve_conversion_plan, read_audit, save_capi_token), which is easy to parse. Minor deviations exist where the noun leads (setup_server, setup_status, setup_tracking) and a bare verb (connect), but the convention stays readable throughout.
27 tools is heavy and sits above the comfortable 3-15 range. The domain is genuinely multi-stage (audit, plan, install, verify, signup), but several status/inspection tools could likely be consolidated, and the surface feels bloated for what an agent needs at once.
The surface covers a full lifecycle: audit creation/recording/reading, plan proposal/approval, installation staging, signup/connect, verification, status reads, docs, token saving and project deletion. Only minor gaps remain (e.g. an explicit plan-rejection or installation-revocation tool), which agents can work around.
Available Tools
27 toolsapprove_and_start_conversion_planApprove plan and request startADestructiveIdempotentInspect
Records approval of an unchanged conversion plan proposal plus one start request, identified by revision, digest and request_id, after the customer explicitly accepted that scope in chat. The start runs only after the matching installation has fresh verified callbacks. Requires confirmed: true and customer_confirmation with scope approve_and_start_after_checks. A repeated request_id is treated as a retry of the same request. Requires a paired server key and the approval and execution features. Sends nothing now, bypasses no checks, and does not resume a paused, revoked, changed or restaged installation.
| Name | Required | Description | Default |
|---|---|---|---|
| digest | Yes | ||
| revision | Yes | ||
| confirmed | Yes | ||
| request_id | Yes | ||
| customer_confirmation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses retry semantics ('a repeated request_id is treated as a retry of the same request'), the per-installation gate ('the start runs only after the matching installation has fresh verified callbacks'), the auth/feature prerequisites (paired server key, approval and execution features), and explicit non-behaviors ('sends nothing now, bypasses no checks'). Annotations give the safety profile; the description gives the operational contract.
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, then prerequisites, then exclusions; six dense sentences with little repetition. A few clauses are packed (the scope/key/feature sentence) but nothing is wasted for a destructive, multi-constraint 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?
With no output schema and 0% parameter coverage, the description covers preconditions, gating, idempotency and exclusions well enough to call the tool safely. It leaves the digest/revision semantics and any post-call state expectation 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?
Schema description coverage is 0%, so the description must carry the load, and it does name all five inputs and pin required values for confirmed and customer_confirmation.scope, plus the identification triple and request_id retry meaning. It does not explain what revision or digest actually represent (e.g. the 64-hex plan hash), leaving some semantic gaps.
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 precise compound verb+resource: it records approval of an unchanged conversion plan proposal AND records one start request, identified by revision/digest/request_id. That distinguishes it in substance from approve_conversion_plan (approval only) and stage_conversion_installation, but no sibling is named explicitly, which is the 5-level criterion.
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 preconditions for use ('after the customer explicitly accepted that scope in chat', requires confirmed:true and customer_confirmation with scope approve_and_start_after_checks) and negative conditions ('does not resume a paused, revoked, changed or restaged installation'). It stops short of naming the alternative tool to call when you want approval without a start request.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
approve_conversion_planApprove conversion planADestructiveIdempotentInspect
Records approval of an unchanged conversion plan proposal, identified by its revision and digest, after the customer explicitly accepted it in chat. Requires confirmed: true and customer_confirmation with scope approve_plan. The connected key can approve only its own project; Tyton records connected-agent provenance, not verified human identity. Stale or changed revisions are rejected. Approval only: does not activate tracking or authorize live Meta events. The customer can also approve in the signed-in report.
| Name | Required | Description | Default |
|---|---|---|---|
| digest | Yes | ||
| revision | Yes | ||
| confirmed | Yes | ||
| customer_confirmation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say destructive/idempotent/not-read-only; the description adds substantive behavior: stale or changed revisions are rejected, the key can approve only its own project, provenance is connected-agent rather than verified human, and approval does not activate tracking or authorize live Meta events. This is context an agent cannot get from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action before constraints and exclusions; every sentence carries weight. It is dense across five sentences but none are filler or restatement of 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 a mutation tool with no output schema and a fully required nested-parameter set, the description covers preconditions, rejection behavior, authorization scope, and what the action does not do. 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 0% with a nested object, so the description must carry the load. It explains confirmed: true, the required customer_confirmation scope of approve_plan, and that revision/digest identify an unchanged proposal with stale revisions rejected — a real gain. It stops short of saying the digest is a 64-hex hash of the proposal content, leaving some detail to the schema pattern.
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 precise verb+resource ('Records approval of an unchanged conversion plan proposal') and immediately scopes it against the sibling approve_and_start_conversion_plan with 'Approval only: does not activate tracking or authorize live Meta events.' An agent can select this 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?
Gives explicit preconditions (customer must have explicitly accepted in chat, requires confirmed: true and customer_confirmation with scope approve_plan) and names the alternative path ('The customer can also approve in the signed-in report'). When and when-not are both covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_siteAudit a public pageADestructiveIdempotentInspect
Inspects one public page's HTML and saves a partial audit report, without signup. Takes the audit session fields and the page URL, plus optional sanitized HTML supplied by the agent, which is stored as unverified evidence. One session can hold several related components. Returns evidence, limitations and discovery actions, not a full tracking-health verdict.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | the site to audit | |
| html | No | Authorized, sanitized page HTML, including local previews. The entire JSON-RPC request is limited to 256 KiB after JSON escaping, so a larger page needs a focused capture. Page markup only, without private source or personal data. | |
| fresh | No | bypass the short public-page cache when verifying a change | |
| audit_id | No | audit run ID returned by Tyton; each audit run has its own ID | |
| revision | No | latest run revision; 0 for the first write of a new audit session, then the revision returned by the previous write | |
| audit_key | No | private audit write capability returned by Tyton; a secret that authorizes changes to this audit only | |
| request_id | No | UUID identifying one mutation; a repeated request_id with identical content is treated as a retry |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| kind | Yes | |
| source | Yes | |
| status | Yes | |
| context | No | |
| session | No | |
| decision | No | |
| findings | Yes | |
| inventory | No | |
| reportUrl | No | |
| capturedAt | Yes | |
| components | No | |
| limitations | Yes | |
| nextActions | Yes | |
| reportSaved | Yes | |
| observations | No | |
| schemaVersion | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring readOnlyHint=false, destructiveHint=true, idempotentHint=true, the description adds real context beyond them: the write is a 'partial audit report', agent-supplied HTML is stored as 'unverified evidence', one session can hold several components, and the return set is explicitly bounded ('evidence, limitations and discovery actions, not a full tracking-health verdict'). It does not explain what destructiveness/revision overwrite means, which is a gap 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?
Effectively four sentences, front-loaded with the core action and scope, with no filler. It is dense but every clause carries information; only the session/return-value sentence could be tightened.
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?
An output schema exists, so omitting return-field detail is fine, and the safety profile is carried by annotations. The description covers scope, evidence trust level, and session grouping, but given the large audit-lifecycle sibling family it leaves the agent guessing about sequencing (begin_audit → audit_site → submit_findings).
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 schema itself documents all seven parameters thoroughly (audit_key as a secret capability, revision semantics, request_id retry behavior). The description only loosely gestures at them ('the audit session fields and the page URL, plus optional sanitized HTML'), adding little beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Inspects one public page's HTML and saves a partial audit report') and scopes it clearly ('one session can hold several related components', 'not a full tracking-health verdict'). An agent can distinguish it from read-only siblings like read_audit or tracking_status. The relationship to lifecycle siblings begin_audit / record_audit_context / submit_findings is not spelled out, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'without signup' and 'verifying a change' (via the fresh parameter) give contextual hints, but there is no explicit when-to-use, when-not-to-use, or named alternative among the many audit siblings. The agent must infer that this is the single-page inspection entry point versus begin_audit or read_audit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
begin_auditBegin free auditARead-onlyIdempotentInspect
Starts a new free audit session for a URL. Returns a private capability (audit_id and audit_key), revision 0 and an initial request_id for the first evidence save, so a lost save response can be retried safely. Saves nothing. The capability covers only this audit record, not access to the website.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| kind | Yes | |
| source | Yes | |
| status | Yes | |
| context | No | |
| session | No | |
| decision | No | |
| findings | Yes | |
| inventory | No | |
| reportUrl | No | |
| capturedAt | Yes | |
| components | No | |
| limitations | Yes | |
| nextActions | Yes | |
| reportSaved | Yes | |
| observations | No | |
| schemaVersion | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered; the description adds real value beyond that by disclosing the returned private capability (audit_id + audit_key), revision 0, the retry-safe request_id, and the security scoping ('covers only this audit record, not access to the website').
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 in the first clause, then layers return values, the no-persistence guarantee, and the capability's scope. Four tight clauses with essentially no filler, though the sentence packs several distinct facts that could be slightly easier 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?
An output schema exists, so return-shape detail is optional, yet the description usefully explains what the capability is and its limits. For a one-parameter, non-destructive bootstrap tool, an agent has everything needed to call it correctly; only explicit sequencing guidance toward the sibling save tool 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?
Only one parameter (url) and schema description coverage is 0%, so the description carries the burden: it names the URL as the target of the audit, matching the schema's uri format. It adds no format, validation, or normalization detail beyond that, which is adequate but minimal for a single obvious input.
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 ('Starts a new free audit session for a URL') and immediately clarifies what it is not: 'Saves nothing,' distinguishing it from read_audit/audit_site and the record_* siblings. An agent can tell this is the session-bootstrap step rather than an evidence-writing or reporting step.
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 implies the ordering (begin an audit, then save evidence with the returned request_id), but it never names an alternative tool or states an explicit when-not condition. Usage is inferable from the surrounding narrative rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_live_setupCheck live event receiptsARead-onlyIdempotentInspect
Checks whether specific PageView or conversion event IDs from an activated live installation reached Tyton's dashboard storage in the last 24 hours. Takes the installation ID and up to 20 unique event and source pairs. Read-only: sends no events and grants no approval. Verification callbacks are not live events. Reports receipt of the requested events only, not business outcomes, all site traffic, target or generation attribution, or Meta delivery. Requires a connected site.
| Name | Required | Description | Default |
|---|---|---|---|
| events | Yes | ||
| installation_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds genuine extra context: the 24-hour lookback window, that it 'sends no events and grants no approval', the connected-site precondition, and an explicit scope boundary (not business outcomes, traffic, attribution, or Meta delivery).
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 check, then parameters, then read-only status and scope limits. Dense but each clause carries weight; the run of negative exclusions is slightly heavy but defensible for a verification 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?
A read-only verification tool with no output schema, and the description adequately covers scope, time window, what is excluded, and the precondition. It stops short of describing the actual response shape (per-event receipt result), which would be the final missing piece.
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?
Reports 0% schema coverage, but the nested event schema actually carries field descriptions, patterns, an enum, and maxItems. The description adds the 'up to 20 unique' constraint and clarifies the installation/event-pair shape, which is useful but largely overlaps with the schema; a 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 and resource: verifying whether PageView/conversion event IDs from an activated live installation reached Tyton's dashboard storage within the last 24 hours. This is easy to distinguish from siblings like verify_install, tracking_status, or get_setup_progress.
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 context for use (post-activation receipt verification, event/source pairs) and an explicit exclusion ('Verification callbacks are not live events') plus a precondition ('Requires a connected site'). It stops short of naming alternative sibling tools for adjacent questions, so not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connectConnect with pairing codeADestructiveInspect
Connects a Tyton site to this connection using a single-use pairing code from the site's card on usetyton.com (valid for 15 minutes). Returns the site's server key and browser key, shown only once, with configuration examples for common MCP hosts.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | the pairing code, e.g. 7K2M-QX4T (dashes optional) | |
| client | No | which host is calling; used to label the new key |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and idempotentHint=false; the description adds genuinely new behavior the annotations cannot express: the code is single-use, expires in 15 minutes, and the returned keys are shown only once. It does not spell out that the consumed code becomes invalid or what permissions the new keys grant, but it goes well beyond the annotation surface.
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 dense sentences, front-loaded with the action and input source, then the return contract. No filler and nothing repeated from the title.
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 (server key and browser key, shown once, plus host configuration examples) while also covering input provenance and expiry. An agent has everything needed to call it and handle the result.
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 the code format (7K2M-QX4T, dashes optional) and the client enum already documented in the schema, so the baseline is 3. The description adds only that the code is single-use with a 15-minute validity window, which is marginal extra meaning over 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 (Connects) and resource (a Tyton site to this connection) plus the mechanism (single-use pairing code). It is clear what the tool does, though it never names which sibling to use instead (e.g. setup_server, check_live_setup), so an agent must infer its place in the setup flow.
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 concrete prerequisite and source for the input: the code comes from the site's card on usetyton.com and is valid for 15 minutes. Usage context is therefore clear, but there is no explicit when-not guidance or comparison to the many sibling setup/connection tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_connected_projectDelete connected siteADestructiveInspect
Permanently deletes the Tyton project connected to this connection, including its keys, setup and stored event history. Requires confirmed: true and expected_url equal to the connected project's current URL; nothing is deleted if they differ. The account subscription and billing, the website itself and the Meta dataset and its data are unchanged. The Tyton snippet or SDK stays on the website until removed, and a browser Pixel already loaded there can keep sending to Meta until it is removed and the page reloads. A Meta request already in progress cannot be recalled. Requires a connected site.
| Name | Required | Description | Default |
|---|---|---|---|
| confirmed | Yes | ||
| expected_url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations' destructiveHint/idempotent flags by specifying what is destroyed, what is explicitly left intact (subscription, billing, website, Meta dataset), and residual effects (snippet/SDK persists, a loaded Pixel keeps sending until reload, in-flight Meta requests cannot be recalled). This is exactly the blast-radius detail an agent needs before a destructive call.
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 action and scope before the guards and side effects, and nearly every sentence carries distinct information. It is dense, and the closing 'Requires a connected site' mildly restates the earlier connected-project framing.
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 the action, the safety guards, the blast radius, and the residual side effects. An agent has everything needed to decide and 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 0%, so the description must carry parameter meaning, and it does: it explains that confirmed must be true and that expected_url must equal the connected project's current URL, with a no-op fallback on mismatch. It does not specify URL format or length bounds, but the guard semantics are conveyed.
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 ('Permanently deletes') plus the exact resource ('the Tyton project connected to this connection') and enumerates the scope of what is destroyed (keys, setup, event history). No sibling tool performs deletion, so the destructive 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?
Gives clear preconditions ('Requires confirmed: true and expected_url equal to the connected project's current URL; nothing is deleted if they differ') and a state requirement ('Requires a connected site'). It does not name alternatives or when-not-to-use beyond the URL guard, 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.
get_sdk_installationGet SDK install instructionsARead-onlyIdempotentInspect
Returns the private Tyton server SDK download, its SHA-256 checksum and the local-file install steps for the connected project. The download authenticates with the connection's server key; no npm publisher account or access to Tyton's repository is needed. Read-only: does not install, approve, start tracking or send events. Requires a connected site.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered; the description nonetheless adds real context: the download authenticates with the connection's server key, no npm publisher account or repository access is needed, and the call does not install, approve, start tracking or send events. That is meaningful added value beyond the structured fields, though return/format details stay thin.
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, each doing distinct work: what is returned, how authentication works, and the negative guarantees plus precondition. The most decision-relevant content (what it returns) is front-loaded 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 carries the return-value burden and does so by enumerating the payload (download, SHA-256 checksum, install steps). The precondition and the read-only guarantees round out what an agent needs before invoking a zero-argument 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, and the registry notes 0 params with 100% schema coverage, so the baseline is 4. There is no parameter surface for the description to clarify or omit.
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 ('Returns the private Tyton server SDK download, its SHA-256 checksum and the local-file install steps') and scopes it to the connected project. It is clearly distinguishable from install-executing siblings like setup_tracking, verify_install or approve_conversion_plan.
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 a clear precondition ('Requires a connected site') and implicitly frames when to use it by ruling out install/approve/track behavior, so the agent knows this is the 'get instructions' path rather than the 'perform install' path. It does not name a specific alternative tool to prefer in a given situation, 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.
get_setup_progressRead setup progressARead-onlyIdempotentInspect
Reads the connected site's setup state in one compact response: plan approval, installation generation, missing callback sources, intentional pauses and the single next step. Read-only: makes no approval or activation and sends no test events. Callback evidence is not business success or Meta receipt. Verification-only setup works without Meta credentials. Requires a connected site.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description usefully expands them: it clarifies read-only means no approval, no activation, and no test events sent, notes the callback-evidence caveat ('not business success or Meta receipt'), and gives a credential prerequisite. That is meaningful added context beyond the structured hints, though it omits any latency/rate or return-shape notes.
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 what it reads, then stacks the read-only and caveat clauses. It is dense and every clause carries information, though the telegraphic fragments ('Read-only: makes no approval or activation...') read a bit choppy rather than smoothly structured.
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 helpfully enumerates the returned facets, so an agent knows what to expect. Combined with the read-only confirmation and prerequisite, it is complete enough for a zero-param read tool, though it does not explain the format of the 'single next step' or how the state is keyed.
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). No parameter-level detail is needed or expected 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 ('Reads') and resource ('connected site's setup state') and enumerates the exact facets returned (plan approval, installation generation, missing callback sources, pauses, next step). It is clear on its own, but it never names or contrasts the many overlapping siblings (check_live_setup, setup_status, tracking_status, verify_install), so an agent cannot definitively disambiguate from the description 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?
The description implies this is the read-only progress surface and states a prerequisite ('Requires a connected site') and a scope note ('Verification-only setup works without Meta credentials'). However it gives no explicit when-to-use/when-not guidance against the numerous sibling status tools, leaving the selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_signup_statusCheck signup statusARead-onlyIdempotentInspect
Checks a signup and Connect request using its request_id and private poll_token. Returns waiting, unavailable or expired, or, after the site owner approves, this connection's server URL, private server key, public browser key and project. The suggested polling interval is 5 seconds. A connection is not tracking approval or activation.
| Name | Required | Description | Default |
|---|---|---|---|
| poll_token | Yes | ||
| request_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive/non-open-world, so the description earns credit for the details they do NOT provide: the three non-terminal states (waiting, unavailable, expired), the credential payload delivered on approval, the 5-second polling cadence, and the caveat that a connection is not tracking approval or activation. This is meaningful operational context beyond 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 action is front-loaded, followed by return states, polling cadence, and a caveat, all in a compact block with no filler. The closing sentence ('A connection is not tracking approval or activation') is a little cryptic, slightly blunting readability.
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 assumes the burden of describing returns and does so (waiting/unavailable/expired vs full credential payload), plus polling guidance and a caveat. It is nearly complete for a 2-param read tool; only parameter format/error semantics are left 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 0%, so the description must compensate. It names both parameters and usefully labels poll_token as 'private', signalling it is a secret, but it does not explain the uuid vs 64-hex formats or failure behavior for a bad token. It adds some meaning but leaves the low-coverage schema under-documented.
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: it 'Checks a signup and Connect request' using request_id and poll_token, and clarifies that it returns connection credentials after approval. This distinguishes it functionally from start_signup (initiation) and the other status tools, though it never explicitly names a sibling to route 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?
Usage is implied rather than stated: the 'suggested polling interval is 5 seconds' tells the agent it is a poll-after-startup tool and the poll_token/request_id pairing shows the expected flow. There is no explicit when-not-to-use condition or named alternative among the many status/setup siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
propose_conversion_planDraft conversion planADestructiveIdempotentInspect
Saves a conversion plan draft for the connected site. Does not approve or activate it. document.revision must equal expected_revision + 1; a repeated request_id is treated as a retry of the same change. Document: {schemaVersion:1,revision,conversions:[{id,label,enabled,eventName,targets:[{id,label,origin,path}],success:{kind,description}}]}. IDs are stable lowercase slugs; labels are distinct. Official Meta event names only. HTTPS origins only; a path has no query or fragment. Success kind: confirmed_success, checkout_started (InitiateCheckout only), or unresolved. 1 to 50 conversions, 1 to 20 targets each, 100 total, 32 KiB normalized document maximum. No tracking or verification fields. Returns the saved proposal, its open questions and the review link.
| Name | Required | Description | Default |
|---|---|---|---|
| document | Yes | ||
| request_id | Yes | ||
| expected_revision | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, idempotent, destructive, and non-open-world, and the description adds real depth beyond them: the optimistic-concurrency rule (document.revision must equal expected_revision + 1), the retry semantics of a repeated request_id, the validation envelope (slugs, HTTPS origins, official Meta event names, path without query/fragment), and the return payload. It does not explain what the destructiveHint=true annotation actually destroys (presumably a prior draft), which is the one 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-loads the purpose and the scope exclusion before the constraint list, and every clause carries a real constraint. It loses a little efficiency by restating the document object shape ({schemaVersion, revision, conversions:[...]}) that the schema already expresses structurally, but the accompanying semantic rules are not duplicative.
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 nested 3-parameter mutation tool with no output schema, the description covers inputs, validation limits (1-50 conversions, 1-20 targets, 100 total, 32 KiB), and even the return values (saved proposal, open questions, review link). The only incompleteness is that the destructive annotation is left unexplained relative to a 'draft' save.
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 0%, so the description carries the full burden and largely succeeds: it defines the document shape, the relationship between expected_revision and document.revision, the idempotency meaning of request_id, and semantic rules for ids, labels, event names, origins, paths, and success kinds. It could have added per-field meaning for expected_revision on a fresh site (0), but the concurrency formula covers the essential case.
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 ('Saves a conversion plan draft for the connected site') and immediately bounds the scope with 'Does not approve or activate it', which cleanly separates it from the approve_conversion_plan / approve_and_start_conversion_plan siblings. An agent can route between draft-saving and approval 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?
The negative scoping ('does not approve or activate') tells the agent this is the draft path and implies the approval siblings handle the other path, and the revision/idempotency rules give operational context for calling it. However, no alternative tool is named explicitly and there is no statement of when to choose this over read_conversion_plan or stage_conversion_installation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_auditRead auditARead-onlyIdempotentInspect
Reads an existing audit using its private capability. Returns recorded context, scoped observations, provenance, component coverage, the current decision with open questions, and the report link. Read-only; does not verify the site's backend or grant access to it.
| Name | Required | Description | Default |
|---|---|---|---|
| audit_id | Yes | ||
| revision | No | latest run revision; 0 for the first write of a new audit session, then the revision returned by the previous write | |
| audit_key | Yes | ||
| request_id | No | UUID identifying one mutation; a repeated request_id with identical content is treated as a retry |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| kind | Yes | |
| source | Yes | |
| status | Yes | |
| context | No | |
| session | No | |
| decision | No | |
| findings | Yes | |
| inventory | No | |
| reportUrl | No | |
| capturedAt | Yes | |
| components | No | |
| limitations | Yes | |
| nextActions | Yes | |
| reportSaved | Yes | |
| observations | No | |
| schemaVersion | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered; the description still adds real value by disclosing a capability boundary ('does not verify the site's backend or grant access to it'). It does not cover failure modes for an invalid or expired key, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first clause, and the return payload is enumerated compactly in one sentence. The closing read-only sentence is largely redundant with the annotations, costing a bit of tightness.
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 an output schema present, the description is not obligated to enumerate return fields (it does so anyway), and the annotations cover the safety profile. The remaining gap is error/authorization behavior for a bad audit_key, which matters for a capability-gated read.
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 50%: revision and request_id are documented in the schema, but audit_id and audit_key are not, and the description only gestures at key semantics via 'private capability' without explaining that the 64-hex key is the authorization secret or how the two required params interact.
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 ('Reads an existing audit') and enumerates what it returns, so the agent knows exactly what the call produces. It does not differentiate itself from related siblings such as begin_audit, record_audit_context, or submit_findings, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'using its private capability' implies the caller must already hold the audit_key, and the read-only boundary line hints at when this tool is appropriate, but there is no explicit when-to-use routing against the sibling audit/record tools. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_conversion_installationRead installation stateARead-onlyIdempotentInspect
Reads staged callback bindings, observed verification signals and the active or paused installation state for the connected site. Read-only. A verified callback proves receipt only, not business success or permission to send live. A matching pending approve-and-start request activates automatically after every fresh current-key check; otherwise the signed-in owner activates separately. Agents cannot activate manually. Active authorization does not prove live client deployment or Meta receipt.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint, and the 'Read-only' line largely restates that, but the description adds genuinely non-obvious interpretation warnings: a verified callback proves receipt only, matching pending approve-and-start requests activate automatically after a fresh current-key check, agents cannot activate manually, and active authorization does not prove live deployment. These materially shape how the agent should treat the returned data.
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 resource and read-only status in the first two sentences, then layered caveats. It is on the verbose side and packs several distinct activation-flow facts into one long sentence, but nearly every clause carries interpretive value rather than 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 zero-parameter read tool with no output schema, the description does a good job naming the categories of data returned (bindings, signals, active/paused state) and warning about over-interpretation. It stops short of describing the shape of the returned payload, which is the one gap given there is no output 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?
Zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description correctly adds no parameter detail and instead spends its words on result interpretation.
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 (reads) and a well-defined resource (staged callback bindings, verification signals, installation state for the connected site), so the agent knows exactly what comes back. It is distinguishable from plan-oriented siblings (read_conversion_plan) but does not explicitly differentiate itself from verify_install, check_live_setup, setup_status, or get_sdk_installation.
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 never says when to call this versus the many similar read tools (get_sdk_installation, setup_status, tracking_status, verify_install, check_live_setup). The remarks about activation and manual activation are behavioral context, not usage routing, so the agent is left to infer the trigger condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_conversion_planRead conversion planARead-onlyIdempotentInspect
Reads the connected site's current conversion plan draft, its open questions, approval state and review link. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint, so the added "Read-only" is largely redundant. The description does add that it reads a *draft* with *open questions* and *approval state*, which hints at the mutable workflow state being observed, but it discloses no further traits such as what happens when no plan exists.
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 compact sentences with the action and scope front-loaded and the read-only guarantee appended. Every clause carries information about what is retrieved; there is no filler or repetition.
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 carries the burden of describing return content, and it does so by enumerating the draft, open questions, approval state and review link. What is missing is edge-case behavior (e.g., no plan yet, not connected), a small gap for a state-reading 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 the schema baseline is 4 by rule. Nothing in the description needs to explain parameter syntax, and it correctly adds no spurious parameter guidance, though it also cannot add meaning where none exists.
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 ("Reads") and resource ("conversion plan") and further enumerates the scope of what is read: the draft, open questions, approval state and review link. This distinguishes it functionally from the approve/propose siblings, but it never names those siblings or explicitly contrasts itself with them, so sibling differentiation is implicit 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?
The word "current" and the emphasis on draft/approval state imply this is the inspection step before acting via approve_conversion_plan or approve_and_start_conversion_plan, giving implied workflow guidance. However, there is no explicit when-to-use statement, no named alternative, and no exclusions, so the agent must infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_docsRead Tyton guidanceARead-onlyIdempotentInspect
Returns Tyton guidance on one topic. meta_setup is the dashboard's nine-step Meta checklist (business, dataset, website, Conversions API token, testing), optionally a single step. website_management covers the website selector, per-project agent connections and deletion. Other topics: install, events, dedup, crawler_protection, create_pixel, create_business, consent, pricing, privacy, performance, gtm, platforms, faq. Read-only reference text, not saved checklist state or proof of delivery.
| Name | Required | Description | Default |
|---|---|---|---|
| step | No | Optional Meta setup step; only used with topic meta_setup. | |
| topic | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely new context: it returns static reference text rather than mutable state or delivery proof, and it characterises what two of the topics contain. It does not describe output volume or format, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core behaviour, then the two high-value topics, then the remaining topic names in a compact list, closing with the read-only caveat. Dense and mostly waste-free, though the long comma-separated topic enumeration is a slightly heavy tail.
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 and a simple read-only contract, the description covers purpose and the read-only distinction adequately. However, thirteen of the fifteen topic values are named without any indication of what they return, leaving an agent to call blind on most inputs.
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 50% (topic documented only by its enum, step has a schema description). The description enumerates the full topic list and clarifies that 'step' is 'optionally a single step' scoped to meta_setup, but explains the content of only two of the fifteen topics, so it only partially compensates.
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 ('Returns Tyton guidance on one topic') and distinguishes the tool from the family of stateful siblings by noting it is 'read-only reference text, not saved checklist state or proof of delivery.' It stops short of a fully explicit contrast with each read_* sibling, but the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The closing clause 'Read-only reference text, not saved checklist state or proof of delivery' functions as a when-not guide, steering agents away from using this for progress/state checks (get_setup_progress, check_live_setup). No explicit 'use this when you need documentation on X' sentence, so not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_audit_contextRecord audit answersADestructiveIdempotentInspect
Saves answers about one audited component to the audit. audit_scope records the customer's choice between continuing the investigation and a public-only audit; availability_expectation records whether unavailable controls are expected. Both must have source human_reported. Earlier topics are kept; a new answer replaces the same topic. A public-only choice allows a partial report without further access requests. Returns the updated audit decision and report link.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| answers | Yes | ||
| audit_id | No | audit run ID returned by Tyton; each audit run has its own ID | |
| revision | No | latest run revision; 0 for the first write of a new audit session, then the revision returned by the previous write | |
| audit_key | No | private audit write capability returned by Tyton; a secret that authorizes changes to this audit only | |
| request_id | No | UUID identifying one mutation; a repeated request_id with identical content is treated as a retry |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| kind | Yes | |
| source | Yes | |
| status | Yes | |
| context | No | |
| session | No | |
| decision | No | |
| findings | Yes | |
| inventory | No | |
| reportUrl | No | |
| capturedAt | Yes | |
| components | No | |
| limitations | Yes | |
| nextActions | Yes | |
| reportSaved | Yes | |
| observations | No | |
| schemaVersion | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond the annotations by disclosing merge semantics ('Earlier topics are kept; a new answer replaces the same topic'), a validation rule, and a downstream effect ('A public-only choice allows a partial report without further access requests'). These clarify the destructiveHint=true/idempotentHint=true profile, though permission/auth requirements are only implied by 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?
Five sentences, all information-bearing, with the core purpose front-loaded. Slightly dense but no filler; the merge-behavior and side-effect sentences each earn their place.
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, nested-schema mutation with an output schema present, the description covers the key semantics (topic merge behavior, source requirement, report side effect) without needing to restate return values. Remaining gaps—auth via audit_key and revision/request_id mechanics—are handled by the schema descriptions.
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 67% schema coverage, the description usefully explains the two most semantically complex parameters: audit_scope's choice between continuing the investigation and public_only, and availability_expectation's expected/unexpected meaning. It adds real meaning beyond the schema for these nested params, though url/audit_id/revision/request_id are left to 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 ('Saves answers about one audited component to the audit') and names the concrete topics being written. However, it does not differentiate itself from nearby siblings like record_audit_runtime or submit_findings, so an agent must still infer the boundary between them.
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?
Provides implied usage through constraints ('Both must have source human_reported') and the consequence of the public-only choice, but never states when to use this tool versus an alternative, nor any when-not condition. Usage is inferable rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_audit_runtimeRecord runtime evidenceADestructiveIdempotentInspect
Saves bounded runtime evidence to the same audit run: sanitized observations from a real browser, authorized backend inspection or a destination UI, with the consent state and observation time. Does not run a browser or send events. A check whose evidence type does not prove it is stored as unknown. Returns the updated findings and report link.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| checks | Yes | ||
| audit_id | No | audit run ID returned by Tyton; each audit run has its own ID | |
| revision | No | latest run revision; 0 for the first write of a new audit session, then the revision returned by the previous write | |
| audit_key | No | private audit write capability returned by Tyton; a secret that authorizes changes to this audit only | |
| request_id | No | UUID identifying one mutation; a repeated request_id with identical content is treated as a retry | |
| observed_at | Yes | ||
| consent_state | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| kind | Yes | |
| source | Yes | |
| status | Yes | |
| context | No | |
| session | No | |
| decision | No | |
| findings | Yes | |
| inventory | No | |
| reportUrl | No | |
| capturedAt | Yes | |
| components | No | |
| limitations | Yes | |
| nextActions | Yes | |
| reportSaved | Yes | |
| observations | No | |
| schemaVersion | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (write, idempotent, destructive), so the bar is lower, yet the description still adds real behavior: the unknown-state fallback for non-proving evidence types and the return payload ('updated findings and report link'). It does not explain why destructiveHint=true for what reads as an append, nor that audit_key is the authorizing secret — those gaps keep it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the core action and followed by the negative constraint, the edge-case rule, and the return. Efficient overall, though the 'sanitized observations... without payloads' clause partially restates the schema's evidence field 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?
With an output schema present, the description need not detail return values, and the brief return note is sufficient. It covers the append semantics, the source types, the fallback rule and the consent/time dimensions, leaving only the audit_key authorization prerequisite and the destructive-write consequence unexplained for an 8-param mutation.
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 50%: the write-control params (audit_id, revision, audit_key, request_id) are documented in-schema, while required params url, observed_at, consent_state and checks are bare. The description touches consent state, observation time and sanitization ('without payloads, identifiers or credentials'), but that sanitization note duplicates the schema's evidence description and adds no format or enum mapping.
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 ('Saves bounded runtime evidence to the same audit run') and enumerates the evidence sources (browser, backend inspection, destination UI). It differentiates functionally from browser-running siblings via 'Does not run a browser or send events', but never names the sibling tools it must be distinguished from (record_audit_context, submit_findings), leaving the routing to inference.
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 negative guidance ('Does not run a browser or send events') implies this is for supplying evidence already gathered rather than collecting it, which steers the agent away from audit_site/check_live_setup. However, there is no explicit when-to-use statement, no prerequisite for obtaining audit_key/revision first, and no named alternative for the collection case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_audit_to_projectLink audit to siteADestructiveIdempotentInspect
Links an existing Tyton audit report to the connected website's Get Started checklist. Takes the report URL; only a report for this exact website is accepted. A linked report completes the checklist's audit step; it is not proof that tracking works. Requires a connected site.
| Name | Required | Description | Default |
|---|---|---|---|
| report_url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the prerequisite (connected site) and clarifies what the link does and does not mean ('not proof that tracking works'), which annotations do not cover. However, with destructiveHint=true it never discloses what the link overwrites or whether re-linking replaces an existing report, leaving the destructive behavior opaque.
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 sentences, front-loaded with the action and scope, and each sentence adds a constraint or caveat. Slightly denser than needed 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 single-parameter mutation with annotations covering safety and idempotency and no output schema, the description is nearly sufficient: it covers the prerequisite, the acceptance rule, and the meaning of the link. Only the overwrite/idempotency behavior remains unstated.
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 0% schema description coverage and one parameter, the description carries the semantic load: it explains the argument is the report URL and adds a validation rule the schema's regex cannot express, namely that only a report for this exact website is accepted.
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 (Links) and resource (an existing Tyton audit report to the connected website's Get Started checklist), which is unmistakably distinct from siblings like save_capi_token, record_audit_context, or audit_site. An agent can select it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear conditions: requires a connected site, only a report for this exact website is accepted, and it completes the checklist's audit step. It doesn't name an alternative tool or state exclusions against siblings, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_capi_tokenSave Conversions API tokenADestructiveIdempotentInspect
Saves a Meta Conversions API token for the connected site's current Pixel. Takes the Pixel ID plus exactly one of capi_token (the raw token) or sealed_capi_token (a sealed token from the Tyton browser extension, starting with tyton_sealed_v1.). The Pixel ID must match the site's saved Pixel. Meta checks the token; an explicit invalid or expired response is rejected, otherwise the token is saved with delivery unchecked. Saves the token encrypted; it is never returned. Does not send a test conversion, approve or activate tracking, or prove delivery. Requires a connected site with an active Tyton plan.
| Name | Required | Description | Default |
|---|---|---|---|
| pixel_id | Yes | ||
| capi_token | No | ||
| sealed_capi_token | No | A sealed token from the Tyton browser extension, exactly as given (starts with tyton_sealed_v1.). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the generic profile (write, destructive, idempotent, open-world); the description goes well beyond that by disclosing that the token is stored encrypted, is never returned, that Meta validation rejects only explicit invalid/expired responses, and that a saved token leaves delivery unchecked. That is exactly the non-obvious behavior an agent needs before invoking a write 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?
The core action and input rule are front-loaded in the first sentences, followed by validation and side-effect caveats. It is slightly long at six sentences and the 'does not send a test conversion... prove delivery' clause overlaps with the earlier 'delivery unchecked' statement, but every sentence 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 covers the success path (encrypted, never returned) and the failure semantics (invalid/expired rejected), plus the auth/plan prerequisite — sufficient for a 3-parameter write tool. It is only marginally incomplete in not describing what the call returns on success beyond the token itself.
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 only 33%, so the description must compensate, and it does: it explains the XOR constraint between capi_token and sealed_capi_token, the raw-vs-sealed distinction, the `tyton_sealed_v1.` prefix, and the Pixel-matching requirement for pixel_id. It stops short of describing the pixel_id numeric pattern or capi_token length bounds, which remain schema-only.
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 ('Saves a Meta Conversions API token for the connected site's current Pixel'), tying it to a precise object rather than a generic save. It is clearly distinct from siblings like setup_tracking, approve_conversion_plan, or verify_install, and an agent can route to it without opening another 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 concrete preconditions ('Requires a connected site with an active Tyton plan', Pixel ID must match the site's saved Pixel) and the selection rule for the two token inputs ('exactly one of capi_token or sealed_capi_token'). It also enumerates what the tool does NOT do (no test conversion, no activation, no delivery proof), but it never names a sibling to use for those adjacent tasks, so routing is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_serverSave server setup answersADestructiveIdempotentInspect
Saves checkout and landing answers (payment provider, landing type and route, checkout domains) for the connected project and returns the reviewed server SDK success-callback contract. Does not install an integration or prove provider support; approval and activation are separate. Requires a connected site.
| Name | Required | Description | Default |
|---|---|---|---|
| backend | Yes | where server code runs, as shown by the code (api, server or functions directories, or a separate service) | |
| landing_type | Yes | where the person ends up after paying: a thank-you page, back in the app, nowhere (overlay checkout), or the provider's own screen | |
| landing_route | No | e.g. /checkout/success or /dashboard; applies only to thank_you_page and app_route | |
| landing_marker | No | what marks a purchase in the landing URL, e.g. ?checkout=success; often empty | |
| checkout_domains | No | hostnames checkout lives on, if not the site itself ([] clears what's stored) | |
| payment_provider | Yes | who processes payments, as shown in code (package.json, env vars, webhook routes) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=true, so the safe/unsafe profile is covered. The description adds genuine scope context ('Does not install an integration or prove provider support') and the returned contract, but never explains the destructive side — that previously stored answers are overwritten or that an empty checkout_domains clears storage — which is the one thing an agent invoking a destructive-hinted tool most needs spelled out.
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, front-loaded with the action and its data payload, followed by limits and a precondition. Slightly redundant in the 'does not install / activation are separate' pairing, but 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?
There is no output schema, and the description usefully summarizes the return as the reviewed server SDK success-callback contract, plus it states the connected-site prerequisite. The remaining shortfall is the absence of any note on overwrite semantics for a tool flagged 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 coverage is 100% with per-field descriptions and three enums, so the schema carries parameter meaning. The description names only a subset of the six fields (payment provider, landing type/route, checkout domains) and adds no format or constraint detail beyond the schema, so the baseline 3 is correct.
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 (Saves) plus the exact resource (checkout and landing answers) and enumerates the fields involved (payment provider, landing type/route, checkout domains), then names the return value. It also draws a boundary against adjacent operations ('Does not install an integration'), which lets an agent separate it from stage_conversion_installation or verify_install 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 a clear precondition ('Requires a connected site') and states what this step is not, noting approval and activation are separate. It does not, however, name a specific alternative tool or spell out the when-not scenario, so an agent still infers routing rather than being told it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_statusRead site configurationARead-onlyIdempotentInspect
Reads the connected project's configuration: site URL, Pixel ID, token status and saved checkout answers. Read-only. Configuration and token status are not plan approval, callback verification, activation or Meta receipt. Requires a connected site.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare read-only, idempotent, non-destructive, and closed-world behavior. The description adds useful context beyond them by naming the connection prerequisite and listing the specific returned configuration areas, though it does not elaborate on response structure or edge cases.
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 compact and front-loaded: it states what is read, marks the operation read-only, clarifies boundaries, and gives the connection prerequisite. Each sentence contributes information without redundant restatement.
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 configuration tool with no output schema, the description provides enough context to invoke it correctly: it identifies what is returned, confirms read-only behavior, states the connection requirement, and excludes unrelated operations. Nothing essential 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?
The tool takes no parameters, so there are no parameter semantics to explain. The baseline for a zero-parameter tool is 4, and the description appropriately focuses on behavior and returned content rather than inputs.
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 ("Reads") and resource (the connected project's configuration) and enumerates the exact configuration fields returned: site URL, Pixel ID, token status, and saved checkout answers. It also rules out adjacent concerns like plan approval, callback verification, activation, and Meta receipt, making the tool's scope clear among many 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 states an explicit prerequisite ("Requires a connected site") and clearly excludes what the returned configuration and token status are not. It does not, however, name a concrete alternative sibling tool for related setup checks, so the routing guidance is strong but incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_trackingDiscover or configure siteADestructiveIdempotentInspect
Discovers or configures reviewed v2 setup for a site. With only a URL it is read-only, needs no Pixel and returns setup guidance. With a real Pixel ID on a connected project, it saves the project's site URL and Pixel ID; switching an existing Pixel or site requires confirm_change. Does not approve, install or activate tracking.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | the site being tracked: a domain or full URL | |
| name | No | project name; defaults to the site name | |
| pixel_id | No | Meta Pixel ID, numeric; optional while it is not yet known | |
| confirm_change | No | true = yes, switch this project to a different Pixel ID or site URL on purpose | |
| checkout_domains | No | hostnames where checkout happens, if already known |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond the annotations by explaining that the same tool is effectively read-only in one invocation shape and destructive in another, and by stating the guard (confirm_change) for Pixel/site switches, which directly explains the destructiveHint=true. Minor tension between 'read-only' wording and readOnlyHint=false, though the conditionality makes it consistent rather than contradictory; prerequisites like 'connected project' are asserted but not defined.
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, each carrying distinct information, with the discover-vs-configure fork stated first and the guard/exclusion following. No repetition of schema or annotation 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?
With no output schema, the description usefully indicates that the read-only path 'returns setup guidance', and it covers the mutation path's guard. It leaves gaps on what happens with an unknown/invalid pixel_id or what a 'connected project' prerequisite actually requires before calling.
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, but the description adds real relational semantics the schema cannot: pixel_id only triggers a save on a connected project, and confirm_change governs switching an existing Pixel or site. It does not clarify checkout_domains or the name default beyond what the schema already states.
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?
'Discovers or configures reviewed v2 setup for a site' gives a specific verb pair and resource, and the dual-mode explanation makes the tool's identity concrete. It never names a sibling (e.g. setup_status, check_live_setup) it should be preferred over, so differentiation is inferential rather than explicit.
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 splits usage by input: URL-only for guidance, real Pixel ID on a connected project for saving, and confirm_change when switching. 'Does not approve, install or activate tracking' is an effective exclusion but the alternative tools it defers to (approve_*, verify_install) are not named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stage_conversion_installationStage installationADestructiveIdempotentInspect
Stages callback bindings (conversion, target and a browser or server source) for the approved latest plan revision and digest under an installation generation. A matching generation is resumed; staging a new generation pauses the previous installation, clears verification and can cancel a pending start. Each enabled target needs a source, and Purchase requires a server source. Each binding reports through client.conversion(conversionId, targetId, data, {installationId: generation, eventId: stableOccurrenceId, verify: true}) on trusted confirmed success, not on a click, submit attempt or URL query parameter. Browser init with mode:'verify' suppresses automatic PageView and Pixel. A closed widget without a trustworthy success callback is unsupported. Does not activate tracking.
| Name | Required | Description | Default |
|---|---|---|---|
| digest | Yes | ||
| bindings | Yes | ||
| revision | Yes | ||
| generation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and idempotentHint=true, and the description extends them by stating exactly what happens: a matching generation resumes, while a new generation 'pauses the previous installation, clears verification and can cancel a pending start'. It also discloses the trusted-success-only reporting contract and the mode:'verify' suppression behavior — unusually rich behavioral disclosure that does not contradict 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 purpose is front-loaded, which is good, but the paragraph then drifts into tangential implementation detail (the client.conversion(...) invocation signature, PageView/Pixel suppression, closed-widget policy) that reads as developer documentation rather than tool-selection guidance. Roughly a third of the text does not help an agent decide or invoke.
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 four-required-parameter destructive mutation with an empty schema description and no output schema, the description covers preconditions, side effects and operational constraints well enough to call it safely. The main residual gap is the undocumented digest/generation formats and binding cardinality limits.
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 0%, so the description must carry parameter meaning. It partially does: it maps the binding triple to 'conversion, target and a browser or server source' and ties revision, digest and generation to the approved plan revision. But it never explains the digest's 64-hex format, the generation UUID, or the 200-binding cap, leaving gaps the schema alone cannot fill.
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 gives a specific verb ('Stages') and resource ('callback bindings ... for the approved latest plan revision and digest under an installation generation'), so an agent can differentiate it from read_conversion_installation and verify_install. However, it never names a sibling tool, and the purpose is buried under dense domain jargon.
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 supplies real preconditions ('Each enabled target needs a source, and Purchase requires a server source') and effectively an exclusion via 'Does not activate tracking', which signals the activation step belongs elsewhere. It stops short of explicitly naming the alternative tool to call for activation or verification.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_signupCreate signup linkADestructiveInspect
Creates a Tyton signup and Connect link for one website. Takes either a saved free audit (audit_id and audit_key, which brings the report along) or site_url, the customer's live https website. customer_approved records that the customer agreed to set up Tyton. Returns authorization_url for the customer, plus a private request_id and poll_token for checking the request's status. The customer can pick the free plan or a paid one; existing accounts with a plan skip that step. The link grants no access and starts no tracking by itself.
| Name | Required | Description | Default |
|---|---|---|---|
| client | No | ||
| audit_id | No | ||
| site_url | No | The customer's website (https) when there is no saved audit. The customer sees and approves it before connecting. | |
| audit_key | No | ||
| customer_approved | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the safety profile (readOnlyHint=false, idempotentHint=false, destructiveHint=true, openWorldHint=false), so the description only needs to add context - and it does: it discloses the returned authorization_url/request_id/poll_token, notes that poll_token is 'private', explains plan-selection behavior, and clarifies that the link 'grants no access and starts no tracking by itself', which meaningfully tempers the destructive annotation.
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 verb and resource, then ordered by input modes, return values, and caveats - a logical agent-readable sequence with no filler sentences. It runs slightly long, and the free-vs-paid plan sentence is peripheral to invocation, but it earns its place as customer-facing context.
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 5-parameter mutation tool with no output schema and destructive semantics, the description covers the important ground: return values are enumerated (compensating for the missing output schema), the audit_id/audit_key pairing is described as an alternative to site_url, and consent semantics are stated. The undocumented 'client' enum and the lack of any note on timeouts or link expiry keep it short of 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 only 20% (just site_url), so the description must compensate, and it does for 4 of 5 params: it explains audit_id+audit_key as a saved free audit that 'brings the report along', restates site_url as the customer's live https site, and defines customer_approved as a consent record. The 'client' enum parameter (codex/cursor/claude_code/other) is never mentioned, which is the one gap.
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?
Opens with a specific verb and resource - 'Creates a Tyton signup and Connect link for one website' - which immediately separates it from connect, audit_site, and get_signup_status. The scope ('for one website') and the two accepted input paths make the intent unambiguous 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?
The description explains the two invocation modes ('either a saved free audit (audit_id and audit_key...) or site_url'), which is real routing guidance, and implies get_signup_status is the follow-up for status polling. However, it never names a sibling tool or states when NOT to use this versus connect, begin_audit, or audit_site, leaving the agent to infer the workflow position.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_findingsSubmit code findingsADestructiveIdempotentInspect
Saves code review findings from the customer's repository to the audit: server-side events, dedup IDs, Pixel and container presence, payment provider, framework, backend location and existing Conversions API quality, plus the relative paths reviewed and any inapplicable checks with reasons. Unknown values stay unknown, not failed. Findings are stored as agent-reported, not verified deployed behavior. A group label is a label only; each report stays separate. Returns the updated audit decision and report link.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | the site these findings belong to | |
| group | No | legacy grouping label only; does not combine reports or verify domain ownership | |
| notes | No | anything else found; a string or an array of strings | |
| backend | No | where the backend code is: in this repo, a separate repo not available here, or unknown | |
| audit_id | No | audit run ID returned by Tyton; each audit run has its own ID | |
| revision | No | latest run revision; 0 for the first write of a new audit session, then the revision returned by the previous write | |
| audit_key | No | private audit write capability returned by Tyton; a secret that authorizes changes to this audit only | |
| dedup_ids | No | orderId/event_id on both browser and server events? | |
| framework | No | frontend framework (from package.json deps) | |
| request_id | No | UUID identifying one mutation; a repeated request_id with identical content is treated as a retry | |
| existing_capi | No | grades for existing CAPI code, if any: hashes_pii (does it hash emails/phones before sending?), sends_event_id (does each server event include an event_id?), graph_version (which Graph API version, e.g. v19.0), test_event_code_in_prod (is a test code left in production?), sends_fbp_fbc (are browser cookie values forwarded?) | |
| pixel_in_code | No | Meta Pixel initialized anywhere in the code? | |
| not_applicable | No | Inapplicable checks, each with the actual reason, based on reviewed files and confirmed scope. Missing access counts as unknown, not N/A. | |
| reviewed_files | No | relative paths actually inspected in the relevant customer repository; no source code, absolute paths or secret files | |
| server_evidence | No | one line: file/function where it was found | |
| checkout_domains | No | domains the checkout lives on, if separate; no customer paths or query strings | |
| payment_provider | No | payment processor used (from package.json, env vars, webhook routes) | |
| container_in_code | No | Tyton container script embedded? | |
| server_side_events | No | code sends server-side events (CAPI/SDK/webhook)? unknown when not checked |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| kind | Yes | |
| source | Yes | |
| status | Yes | |
| context | No | |
| session | No | |
| decision | No | |
| findings | Yes | |
| inventory | No | |
| reportUrl | No | |
| capturedAt | Yes | |
| components | No | |
| limitations | Yes | |
| nextActions | Yes | |
| reportSaved | Yes | |
| observations | No | |
| schemaVersion | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=false, so the safety profile is partly covered. The description adds genuinely non-structured context: findings are stored as "agent-reported, not verified deployed behavior", a group label does not merge reports, and it returns the updated audit decision plus report link. It still does not say what a write overwrites or how a mismatched revision is handled.
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 purpose and keeps three short sentences, with the trust caveat ("agent-reported, not verified") placed early where it matters. The first sentence is a dense comma-run listing many data categories, but for a 19-parameter ingestion tool that enumeration earns its length.
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?
An output schema exists, so return-value detail is not required, yet the description still tells the agent it gets back an updated audit decision and report link. Combined with the trust model, group semantics and unknown-handling rules, an agent has enough to call a complex nested-object tool correctly; only the write/overwrite and revision-conflict behavior remain unstated.
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 19 well-documented properties, many with their own enums and per-field notes, so the schema carries the parameter burden and baseline 3 applies. The description's parameter-level remarks (group is label-only, unknown != failed) largely restate what the schema already says ("legacy grouping label only; does not combine reports"), adding little beyond 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?
Opens with a specific verb+resource pair ("Saves code review findings ... to the audit") and enumerates exactly which findings are captured (server-side events, dedup IDs, Pixel/container presence, payment provider, framework, backend location, existing CAPI quality, reviewed paths, N/A checks). This distinguishes it from read-side siblings like read_audit, though it does not explicitly contrast with the other write-side siblings such as record_audit_context or record_audit_runtime.
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 implied through field-level guidance ("Unknown values stay unknown, not failed", "Missing access counts as unknown, not N/A") which tells the agent how to fill the report, but there is no statement of when to call this versus begin_audit, record_audit_context, or save_audit_to_project. No prerequisites about needing audit_id/audit_key/revision are called out as a gating sequence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tracking_statusRead tracking statusARead-onlyIdempotentInspect
Reads aggregate browser and server event observations, delivery statuses, and the known-crawler protection mode and counts for the connected site. Read-only. Counts are not unique business conversions, current installation verification or proof of Meta deduplication. Requires a connected site.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/non-destructive, and the description reinforces 'Read-only.' Beyond that it adds real behavioral context: the data is aggregate, not unique, and does not constitute installation verification or Meta deduplication proof, plus the connected-site precondition. It stops short of describing freshness, latency, or response 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?
Three compact sentences, front-loaded with what is read and what is returned, followed by the interpretation caveat and the prerequisite. Every sentence carries information, though the caveat clause is dense and slightly clause-stacked.
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 burden of describing returns, and it does enumerate the data categories an agent will get back. It omits any indication of structure, pagination, or time windowing, which is a minor gap for a no-arg read 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 no parameter semantics to document and the baseline of 4 applies. The description correctly spends no words on inputs and instead characterizes the output content.
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 (Reads) and a concrete resource (aggregate browser/server event observations, delivery statuses, crawler-protection mode and counts for the connected site). The scope is materially more specific than the generic 'status' framing of siblings like setup_status or check_live_setup, but it never explicitly names those siblings to force the distinction.
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?
Provides a prerequisite ('Requires a connected site') and an implicit interpretation warning (counts are not conversions/verification/dedup proof), which is useful. However it gives no explicit when-to-use-this-vs-alternatives guidance against the many other status/verification tools in the sibling set, so usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_installCheck page HTML for PixelARead-onlyIdempotentInspect
Checks a page's static HTML for Tyton container and Meta Pixel references, using a public fetch or HTML supplied by the agent, and compares them with the connected project. Read-only. Does not verify runtime callbacks, activation, consent behavior or Meta receipt. Requires a connected site.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| html | No | page HTML fetched by the agent |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive, open-world behavior, so the bar is lower; the description still adds the meaningful constraint that only static HTML is inspected and that runtime callbacks, activation, consent behavior and Meta receipt are out of scope, plus the connected-site requirement. It does not describe pagination or rate limits, but those are largely irrelevant for a single-page check.
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 sentences, front-loaded with the core action and scope before the exclusions and prerequisite. Dense with no filler, though the exclusion list could arguably be compressed.
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 carries return-value burden; 'compares them with the connected project' implies a comparison verdict but does not say what the result looks like. For a low-complexity, two-parameter read tool the remaining 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 50% (only 'html' is documented as 'page HTML fetched by the agent'). The description compensates by explaining the two input paths — a public fetch of the URL versus agent-supplied HTML — which gives the otherwise undocumented 'url' parameter clear meaning and clarifies the mutual roles of the pair.
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 (checks) and resource (a page's static HTML) plus exactly what it looks for (Tyton container and Meta Pixel references) and the comparison target (the connected project). It also bounds the scope by declaring it does not verify runtime behavior, which cleanly separates it from runtime-oriented siblings like check_live_setup.
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 two accepted input modes ('a public fetch or HTML supplied by the agent') and the prerequisite 'Requires a connected site', and rules out the runtime cases via the 'does not verify' sentence. It stops short of naming the sibling tool an agent should use for those runtime cases, so routing is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
27 tool updates
- First observed
approve_and_start_conversion_plan - First observed
approve_conversion_plan - First observed
audit_site - First observed
begin_audit - First observed
check_live_setup - First observed
connect - First observed
delete_connected_project - First observed
get_sdk_installation - First observed
get_setup_progress - First observed
get_signup_status - First observed
propose_conversion_plan - First observed
read_audit - First observed
read_conversion_installation - First observed
read_conversion_plan - First observed
read_docs - First observed
record_audit_context - First observed
record_audit_runtime - First observed
save_audit_to_project - First observed
save_capi_token - First observed
setup_server - First observed
setup_status - First observed
setup_tracking - First observed
stage_conversion_installation - First observed
start_signup - First observed
submit_findings - First observed
tracking_status - First observed
verify_install
Related MCP Servers
- AlicenseNot gradedqualityBmaintenancePerplexity for social: ask what competitors are running across social and get answers grounded in real ad and creative data, not guesses.2Apache 2.0
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs119 npmMIT
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1611 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.