Postclick by PPC.io: Landing Page CRO
Server Details
Landing-page CRO: audit pages, rewrite copy, answer buyer objections, design and build via MCP.
- Status
- Healthy
- Uptime
- 100.0% over 26 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 21 tools
There is genuine overlap in the audit-reading surface (ask_audit, get_audit, get_audit_report, fetch, run_cro_skill, get_competitors), and the free sharing/exporting tools (share_page, export_page, publish_page, get_asset) sit close together. However, the descriptions explicitly disambiguate each pair ('ask_audit with topic:competitors is the one for the written comparison; this is the one for the numbers'), which strongly reduces misselection. Only one or two boundaries remain genuinely soft.
Almost everything is snake_case and readable, but the conventions are mixed: verb_noun (get_audit, save_note, list_cro_skills), noun_verb (audit_page, build_page, export_page), and bare verbs (search, fetch, describe). The pattern is predictable within each family but not unified across the set.
21 tools is on the heavy side of the 16-25 band. The domain genuinely spans audit, concepts, build, publishing, assets, notes and skills, so most tools earn a place, but the read-side alone consumes six tools and the count feels bloated rather than tight.
The lifecycle is well covered end to end: audit start/status/report, concept generation, build, publish, share, export, asset retrieval, balance, notes and skill discovery, including free workarounds for reading and sharing. Minor gaps exist (no delete/cleanup for records or runs, cancellation is implicit) but nothing that would block an agent's core workflow.
Available Tools
21 toolsask_auditAsk a question about an auditARead-onlyIdempotentInspect
Free. Answers one question from a completed audit by returning that part of it in full: small enough to give the user whole, unlike the entire report. THIS IS THE TOOL FOR ANY FOLLOW-UP QUESTION about a page you have already audited. Never answer a question about an audited page from your own summary of it — the audit holds far more than any summary kept, and this is how to get the part that answers them. Pick the topic that matches what they asked: buyers for who is on this page, what each one is afraid of, the exact words they would object with, where they give up, and a second-by-second walkthrough of one of them reading it. the_pitch for whether the pitch itself is wrong: if the page meets the traffic where it is, which persuasion levers are missing and what each would do here, and how the offer is built. trust for whether a stranger believes it: the proof that is there, the proof that is missing, and why buyers hesitate. competitors for who else is bidding on these clicks, their live headlines and CTAs, what they do better, and the keywords and CPCs behind their pages. copy for the copy deck: the page's own lines quoted, each with the line that replaces it. leaks for the ranked problems with the evidence for each. the_page for what the page is, who it is aimed at, its own voice and palette, and how it is assembled section by section. technical for CTA placement and contrast, accessibility, and what changes on mobile. What comes back is written to be read out. Relay it: keep the names, the quotes, the numbers and the specific objections, reformat it for where you are, and do not compress a named buyer saying a specific sentence into a general remark about buyers. Needs a completed audit. Safe to call repeatedly, and calling it for two topics in a row is normal and costs nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | Which part of the audit answers the question. buyers · the_pitch · trust · competitors · copy · leaks · the_page · technical. | |
| audit_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false. The description adds value beyond them: it discloses cost ('Free', 'costs nothing'), states repeated calls are safe and normal, names the precondition of a completed audit, and describes the return shape ('what comes back is written to be read out'). What it does not cover is failure behavior when the audit is absent or still running, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the routing rule before the detail, and every sentence carries information. It is long, and the per-topic enumeration plus the relay instructions make it dense, but the length is justified by the eight mutually ambiguous topic values rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a two-parameter schema, no output schema, and no nested objects, the description supplies exactly what is missing: the meaning of each topic, the prerequisite, the cost profile, and guidance on how to relay the returned content. Nothing an agent needs to call it correctly is absent.
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% and audit_id carries no description at all. The description compensates heavily on the one enum parameter, expanding each of the eight topic values into the specific questions it answers, which is meaning an agent cannot derive from the bare enum list.
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+scope: it answers one question from a completed audit by returning that part in full. It explicitly contrasts itself with 'the entire report' and with the agent's own summary, so an agent can place it against get_audit and get_audit_report without opening sibling schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit trigger ('THIS IS THE TOOL FOR ANY FOLLOW-UP QUESTION about a page you have already audited'), an explicit prohibition ('Never answer a question about an audited page from your own summary of it'), a stated prerequisite ('Needs a completed audit'), and a per-topic routing table that tells the agent which topic answers which kind of question.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_pageAudit a landing pageAInspect
Start a new landing-page audit after the user authorises its live price from check_balance. First search for existing work when the request concerns a prior audit. Pass campaign context already supplied. Returns an audit_id; use get_audit with wait:25, then run_cro_skill for the requested deliverable. Does not design or build a page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The live landing page URL to audit. | |
| context | No | Optional, up to 500 characters. What the page is for, in the user's own words: the offer, who it is aimed at, the campaign sending traffic to it. Pass what they have ALREADY told you rather than interrogating them for it. The audit reads the page but cannot know the intent behind it, so this sharpens who it judges the page against. Leave it out if they have not said. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, openWorldHint=true, and idempotentHint=false; the description adds genuinely new behavioral context beyond them — that the call kicks off an asynchronous job returning an audit_id that must be polled with get_audit and wait:25. It does not restate the safety profile, so it complements rather than repeats 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?
Four compact sentences, front-loaded with the required precondition and then the downstream workflow. No filler, though the mix of prerequisite, exclusion, and follow-up steps in one sentence makes it slightly dense to parse at a glance.
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 names the return value (audit_id) and the exact follow-up calls needed to retrieve the result, and it states the boundary against build/design tools. Nothing an agent needs in order to invoke and continue the workflow correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both url and context are already fully documented in the schema, including the 500-character limit and the 'pass what they already told you' guidance. The description's line 'Pass campaign context already supplied' reinforces, but does not extend, the schema. Baseline 3 is correct when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (start a landing-page audit) and explicitly scopes out adjacent work with 'Does not design or build a page,' which distinguishes it from build_page and publish_page. An agent can tell what this tool does and does not do 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?
Explicitly sequences prerequisites and alternatives: authorise price via check_balance first, search for existing work when the request concerns a prior audit, then get_audit with wait:25, then run_cro_skill for the deliverable. This is a full when-to-use and what-to-use-instead map.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_pageBuild a design into a real pageAInspect
Build the design the user selected into a complete HTML page after approval of the live quote. Returns build_run_id. Use get_build with wait:25; completion requires artifact_ready. Do not publish or share the page without the user asking.
| Name | Required | Description | Default |
|---|---|---|---|
| audit_id | Yes | ||
| direction | No | Optional plain-English steer for the build. | |
| concept_id | Yes | From get_concepts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-idempotent, open-world mutation, so the safety profile is partly covered. The description adds real behavioral context beyond them: a gating precondition (quote approval), the async return value (build_run_id), and the completion signal (artifact_ready) needed to know when the build is done.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action, followed by the polling contract and the constraint. Every sentence carries an actionable instruction 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?
No output schema exists, and the description compensates by naming the returned build_run_id and the artifact_ready completion condition, plus the quote-review prerequisite. Minor gaps remain (error/failure behavior if approval is missing), but an agent has enough to call and poll 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 coverage is 67%; concept_id and direction are documented inline ('From get_concepts', 'Optional plain-English steer'), while audit_id is undocumented in both places. The description only alludes to the concept via 'the design the user selected' and adds no syntax or format detail, so 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 ('Build the design ... into a complete HTML page') and clarifies scope by noting it must follow quote approval. It is clearly distinguishable from siblings publish_page and share_page, which it explicitly tells the agent not to invoke unprompted.
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 (live quote must be approved) and an exclusion ('Do not publish or share the page without the user asking'), which routes the agent away from publish_page/share_page. It also prescribes the follow-up polling step (get_build with wait:25). It stops short of naming the alternative tools outright.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_balanceCheck my credits and planARead-onlyIdempotentInspect
Read the current account balance, billing mode and live audit/build/pack prices. Use before a new paid step or when the user asks about cost. Quote only returned prices; a missing price is unknown.
| 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/openWorld=false, so the safety profile is covered. The description adds beyond them by disclosing that prices are live and that an absent price must be treated as unknown rather than inferred — a real trust constraint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the verb and returned data, followed by usage timing and the price-quoting rule. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description names what is returned (balance, billing mode, live prices) and warns about missing prices, covering the agent's needs 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?
Zero parameters, so there is nothing for the description to disambiguate; baseline of 4 applies. The description instead characterizes the returned fields, which is appropriate for a no-arg tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Read') plus concrete resources ('account balance, billing mode and live audit/build/pack prices'). No sibling tool overlaps this read-only billing surface, so the agent can route unambiguously.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to call: 'before a new paid step or when the user asks about cost.' It also gives a data-handling rule (quote only returned prices; missing price is unknown). No alternative tools are named, but none are needed here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describeSee everything in my Postclick accountARead-onlyIdempotentInspect
List what is in the account when the user asks to see their work. For a page fix, copy rewrite or designer brief, call run_cro_skill directly; no account overview is needed first.
| 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 closed-world, so the safety profile is fully covered by structured data. The description adds no behavioral context beyond that – no indication of cost, auth, result shape, or whether results are complete vs. truncated – so it is adequate but adds little.
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 front-loaded sentences: the first says what it does and when, the second preempts the most likely mis-invocation by routing to run_cro_skill. No filler, no repetition of the title or annotations.
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 parameterless read-only listing tool with no output schema, the description covers purpose and the main routing decision. It stops short of describing what the listing returns (e.g., pages, assets, skill names), which is the one gap remaining given the absent 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?
The tool takes zero parameters and the schema is empty, so there is nothing for the description to disambiguate. Baseline 4 applies; no parameter behavior is misrepresented.
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 concrete verb+resource ('List what is in the account') and the title narrows it to a Postclick account overview, which separates it from action-oriented siblings like run_cro_skill or publish_page. It is slightly abstract about what 'what is in the account' actually enumerates, so it is clear but not maximally specific.
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 trigger ('when the user asks to see their work') and an explicit exclusion plus alternative ('For a page fix, copy rewrite or designer brief, call run_cro_skill directly'). It does not cover the many other siblings (get_notes, get_asset, list_cro_skills), so routing against those is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_pageDownload a built page as filesARead-onlyIdempotentInspect
Free. Packages a finished page as a zip that runs on any static host: index.html with every image it uses pulled into assets/, plus a README and metadata.json. Returns a download link. This is the one for a user who wants the files. share_page is the one for a user who wants something to look at. It also returns implementation_prompt: step by step instructions for putting this page live on the user's own site. Postclick does not host pages, so this is how a page ships. If you have access to their site, you can carry those steps out yourself; otherwise hand the prompt to whoever does. Pass platform when you know where the site lives, because the steps for WordPress and for Webflow are genuinely different. Ask if you do not know. Every variant stops at a draft and never publishes without the user confirming.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | No | Where the user's site lives. Omit if unknown and the instructions will assume nothing. | |
| build_run_id | 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 bar is low. The description adds real behavioral context beyond them: the output is a zip with assets/, README and metadata.json, it also returns implementation_prompt, and crucially that every variant stops at a draft and never publishes without user confirmation. Missing only things like download-link expiry or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with 'Free' and the packaging behavior, and most sentences carry information. Slightly chatty in places ('This is the one for a user who wants the files'), but no sentence is purely filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries the return-value burden and does so — download link, files, implementation_prompt. Combined with the publishing-safety note, an agent has enough to call and use it, though build_run_id semantics remain unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: platform has a schema description and enum, but build_run_id is undocumented anywhere. The description compensates well for platform — explaining that WordPress and Webflow steps genuinely differ and to ask when unknown — but adds nothing about build_run_id, which an agent must pass on every call.
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 — packages a finished page as a downloadable zip — and explicitly distinguishes itself from the sibling share_page ('share_page is the one for a user who wants something to look at'). An agent can route correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use versus share_page, explicit guidance on when to pass platform and what to do when it is unknown ('Ask if you do not know'), and a note on who executes the resulting steps. Exclusions and alternatives are both covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetchOpen one audit, design or reportARead-onlyIdempotentInspect
Free. Reads any single thing by its address, which looks like postclick://audit/ and comes from search, from describe, or from any other tool's answer. A plain id works too if that is all you have. expand is what makes this worth calling: pass * and you get everything attached in one go, which for an audit means the findings, the buyers and their walkthroughs, the competitor scan, the copy rewrites and the designs. Each arrives with its headline detail; the long write-ups are marked as withheld with the address to fetch them from, because all of them together run to well over a hundred thousand characters and would swamp the answer. Expand first to see the shape, then fetch the two or three that matter. For the audit as finished prose, get_audit_report is one call and reads better than any of this. For the audit written up as prose instead, get_audit_report is the one you want. For a picture, take the asset_id off a field here and pass it to get_asset.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Source ID returned by search. Alias of uri for ChatGPT retrieval. | |
| uri | No | The address, like postclick://audit/<id>. A bare id works too and will be looked up. | |
| expand | No | Comma separated names of things to pull in with it, or `*` for all of them. Every answer lists what else is available under available_links, so you can always go deeper without guessing. | |
| fields | No | Comma separated field names, when you only need a few. Left out, you get the useful ones. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive safety, and the description adds genuinely new behavioral context: the call is free, `expand=*` pulls everything attached, long write-ups are deliberately withheld with addresses to fetch them because the full payload exceeds a hundred thousand characters, and answers list available_links. That is real operational detail 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?
Mostly well front-loaded — the free/safe framing and address format land first, then expand, then routing. However, the get_audit_report recommendation is stated twice in near-identical sentences ("as finished prose" / "written up as prose instead"), which is dead weight in an otherwise tight 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?
No output schema exists, so the description must convey return shape, and it does: everything arrives with its headline detail, long write-ups are explicitly withheld with fetch addresses, and available_links lets the agent go deeper. Nothing needed 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 coverage is 100%, so the baseline is 3, but the description adds meaning: `expand` with `*` returns everything and its per-audit contents are enumerated, `uri` accepts a bare id, and the description explains the conditional default for `fields` and where available_links come from. It enriches the schema rather than repeating 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?
States a specific verb and resource — reads any single thing by its address — and names the address form (postclick://audit/<id>). It explicitly distinguishes itself from `search`, `describe`, `get_audit_report`, and `get_asset`, so an agent can pick it over siblings without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing: expand first to see the shape, then fetch the two or three that matter; for finished prose use `get_audit_report`; for a picture pass the asset_id to `get_asset`. Both the when-to-use and the alternatives are named, not implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_conceptsDesign new versions of a pageAInspect
Generate visual design directions for an existing audit after the user requests designs and authorises the current pack quote. Use check_balance for current pack costs. Returns a run to resume with get_concepts; show the images already available before asking the user to choose. Never start a build without their choice.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | How many distinct directions the user wants, up to 12. Leave it out for the standard pack of 2. Higher costs more, so quote the total back before agreeing to it. Directions that already exist are counted and reused, never bought twice. | |
| audit_id | Yes | ||
| direction | No | Optional plain-English creative steer. Honoured above other design choices. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the generic profile (non-readonly, open-world, non-idempotent, non-destructive). The description adds real workflow behavior beyond them: it returns a run to be resumed via get_concepts, it is quote-gated and cost-bearing, and it must not trigger a build without explicit user choice.
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 dense but purposeful sentences, front-loaded with purpose and gating before mechanics. Information-dense rather than wasteful, though the tight run-on phrasing slightly reduces scannability.
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 explains the return value (a run) and the resume path, plus the user-consent gate. Nearly complete for a gated generation tool; only the undocumented audit_id keeps it from being fully self-contained.
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 67% and the schema already carries rich prose for count (cost, reuse of existing directions) and direction. The description adds no parameter-level detail and leaves audit_id undocumented, so it does not meaningfully improve on 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+resource ('Generate visual design directions') scoped to an existing audit, and explicitly separates itself from build_page with 'Never start a build without their choice.' An agent can distinguish it from siblings like build_page and audit_page without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Preconditions are explicit (after the user requests designs and authorises the pack quote), it routes to check_balance for costs and get_concepts to resume, and it names an exclusion ('Never start a build'). Full when/when-not/alternative coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_assetGet a design or screenshot imageARead-onlyIdempotentInspect
Free. Every design, page capture and logo has an asset_id on the field that holds it. Pass it here. Which form you ask for depends entirely on where the picture is going, and getting it wrong is expensive. as: "url" is the DEFAULT AND USUALLY RIGHT one: a public link, no login, full size. Use it for anything you publish with publish_page, and for showing somebody a design. as: "bytes" returns the picture itself, downscaled to about 1024 across so it fits in a conversation, and you embed it as data:;base64,. Use it ONLY for a document you are writing in a place that refuses to load pictures from other websites, which includes artifacts. At full size one of these designs would be several hundred thousand tokens, so ask for bytes deliberately and not by habit.
| Name | Required | Description | Default |
|---|---|---|---|
| as | No | `url` for a link, which is right for anything you publish and is the default. `bytes` only for a document that cannot load a picture from another website. | |
| asset_id | Yes | The id from a picture field, like concept:<id>:image. | |
| max_width | No | How wide the picture comes back when you ask for bytes. 1024 by default, which is readable in a report. Smaller is cheaper. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/non-destructive, and the description adds value beyond them: it says the call is free, that the url form is a public link requiring no login at full size, that bytes are downscaled to ~1024 across, and warns that full-size designs cost hundreds of thousands of tokens and that choosing wrong 'is expensive'. That cost and safety context is not in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with 'Free.' and the essential routing rule, and every sentence carries a decision-relevant fact. Some phrasing is discursive ('and getting it wrong is expensive', 'not by habit'), which costs a little density but does not obscure the call.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-output-schema read tool, it covers everything an agent needs: required asset_id usage pointer, both output modes with defaults, embedding syntax, resolution behavior, and cost implications. No material gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains the default value and behavioral consequences of `as`, and the embedding format for bytes (data:<mime>;base64,<bytes>) and the cost tradeoff for max_width ('smaller is cheaper') that the schema only implies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (fetch an image asset by its asset_id) and immediately distinguishes the two output forms, which is the real decision the caller faces. An agent can tell this apart from siblings like get_concepts or audit_page 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?
Explicit routing: `as: "url"` is named as the default and usually right, with concrete conditions ('anything you publish with publish_page', 'showing somebody a design'), while `as: "bytes"` is scoped to 'ONLY for a document you are writing in a place that refuses to load pictures from other websites, which includes artifacts'. This is when-to-use and when-not, not inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_auditCheck how an audit is goingARead-onlyIdempotentInspect
Read audit status, changed progress, server elapsed time and ranked findings with typed edits. Use wait:25 while running. A failed, cancelled or stalled run is not a finished report. Once complete, use run_cro_skill or ask_audit for the relevant buyer, copy or offer evidence. Reading does not authorise a redesign.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Seconds to wait for a material change. Use 25 for broad client compatibility; longer waits are available for hosts that support them. A timeout preserves the run; resume by ID instead of starting again. | |
| audit_id | 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 safety is covered structurally. The description adds genuinely non-structured context: that a timeout preserves the run, that stalled/cancelled runs must not be read as completion, and a scope caveat ('Reading does not authorise a redesign'). No contradictions with 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?
Four tight sentences, front-loaded with what is returned, then polling behavior, then completion semantics, then the next-tool handoff. No filler and no repetition of the schema.
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 enumerates the returned fields (status, progress, elapsed time, ranked findings with typed edits) and explains how to interpret non-terminal states. It could still clarify the relationship to get_audit_report and where audit_id comes from, but it is close to complete for a 2-parameter polling 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?
Schema coverage is only 50%: wait is documented in the schema, audit_id is bare. The description compensates by giving the recommended wait value (25) and by implying resumption ('resume by ID'), which gives audit_id meaning. It stops short of describing audit_id format or acquisition.
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 ('Read audit status, changed progress, server elapsed time and ranked findings with typed edits'), so the agent knows exactly what comes back. It implicitly separates itself from the finished-report tool by noting a failed/cancelled/stalled run is not a finished report, though it never names get_audit_report directly.
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 operating guidance ('Use wait:25 while running') and routes the agent onward ('Once complete, use run_cro_skill or ask_audit for the relevant buyer, copy or offer evidence'). It does not state when to prefer this over get_audit_report, so the alternative selection is only partially covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_audit_reportRead the full audit reportARead-onlyIdempotentInspect
Read the complete stored audit as markdown for a full review. It can be long: use topic or ask_audit for one question, or run_cro_skill for a specific deliverable. Missing and withheld sections remain unknown. Buyer journeys are modelled, not customer research.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Optional. Return only this part of the report instead of all of it. The same keys ask_audit takes: buyers, the_pitch, trust, competitors, copy, leaks, the_page, technical. | |
| audit_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent and non-destructive behavior, but the description adds genuinely useful caveats: the result can be long, missing/withheld sections stay unknown, and buyer journeys are modelled rather than real research. Those fidelity warnings go beyond anything in the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the core action, then alternatives, then caveats. Tight and purposeful, though the caveat sentence could be trimmed slightly.
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 states the return format (markdown) and length expectation, and covers the routing alternatives and data caveats. It is close to complete for a simple two-parameter 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?
Schema coverage is 50%: topic is documented in the schema with its key list, while audit_id is bare. The description only reinforces the topic alternative ('use topic ... for one question') without adding format or semantics beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read), resource (stored audit), scope (complete) and output format (markdown), which is enough to distinguish it from get_audit, ask_audit and run_cro_skill at a glance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: use the topic parameter or ask_audit for a single question, and run_cro_skill for a specific deliverable. This is a clear when-to-use-this vs when-to-use-something-else statement, not an implied one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_buildCheck how a page build is goingARead-onlyIdempotentInspect
Free. Returns the build's status and, once finished, the complete page. A build takes 15 to 25 minutes, so poll it with wait set to 300: the call holds open and returns the moment the stage moves or the page is ready, which turns a twenty-minute build from dozens of identical reads into a handful of calls that each have something to report. When a call comes back with the same stage you already mentioned, say nothing and call again rather than paraphrasing yourself. A status of running is non-terminal and contains no page. By default the HTML is summarised rather than returned in full, because a page is tens of thousands of characters and would flood the conversation. Set include_html when the user actually wants the file, for example to save it locally and open it. Includes elapsed_seconds: the true age of the build, measured server side from its start timestamp.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Seconds to wait for a material change. Use 25 for broad client compatibility; longer waits are available for hosts that support them. A timeout preserves the run; resume by ID instead of starting again. | |
| build_run_id | Yes | ||
| include_html | No | Return the full page HTML. Large. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavior beyond the annotations: it says the tool is free, builds take 15 to 25 minutes, wait calls hold open, running is non-terminal and contains no page, HTML is summarised by default to avoid flooding, and elapsed_seconds is server-measured from the build start. These details help the agent set correct expectations and avoid misusing the return payload.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and then proceeds through usage, return behavior, and parameter guidance in a logical order. It is longer than strictly necessary, but each sentence carries practical information for polling and interpreting the result.
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 supplies the missing return-value context: status stages, non-terminal running state, default summarised HTML, full HTML via include_html, and elapsed_seconds. Combined with annotations covering safety, it is complete enough for an agent to call and interpret the tool 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?
It adds meaningful semantics for wait (holding open, returning on stage change) and include_html (when the user actually wants the file), beyond the schema descriptions. build_run_id is not described in the text, though its purpose is clear from the name and required status.
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: it returns the status of a build and the completed page. This cleanly distinguishes the check/poll tool from its sibling build_page, which starts a build, without requiring the agent to open 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?
It gives clear polling guidance: wait set to 300, hold open until the stage moves or the page is ready, and call again on an unchanged stage. It also explains when to set include_html. However, it does not name explicit alternatives or when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_competitorsWho is bidding against this pageARead-onlyIdempotentInspect
Costs nothing. Returns the competitor layer of a finished audit: the rivals bidding on the same clicks, the live ads Google is serving for each of them with the keyword, search volume and CPC behind every one, the landing pages those ads click to, which rival advertises most, the advertisers currently on this page's own keyword, and the customer's own paid keyword count. The ad and keyword numbers are measured from the DataForSEO ads index, not written by a model, so they are safe to quote as figures. The rival page summaries and the head-to-head read ARE written by the audit and are judgement, not measurement. Rival page captures are attached where the scan reached them. Needs a completed audit. An audit that found nobody returns that plainly, which is a real answer and not a failure. Older audits carry no ad data at all. ask_audit with topic:competitors is the one for the written comparison; this is the one for the numbers. Safe to call repeatedly and it spends no credits.
| Name | Required | Description | Default |
|---|---|---|---|
| audit_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description goes well beyond them: zero credit cost and repeat-safety, data provenance distinguishing measured DataForSEO figures from model-written judgement, the edge case that an empty result is a real answer not a failure, and the stale-audit limitation.
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 most decision-relevant fact ("Costs nothing") and organized around what is returned, provenance, and caveats. It is on the dense/long side with some run-on listing of returned fields, but nearly every sentence adds routing or trust information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description takes on the burden of describing return content — which it does thoroughly (ads, keywords, volumes, CPC, landing pages, head-to-head summary, captures) and annotates with provenance and confidence caveats. 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?
One parameter with 0% schema description coverage, so the description must carry the burden. It does imply the requirement ("Needs a completed audit", "Older audits carry no ad data"), which tells the agent audit_id must reference a finished audit, but it never states where audit_id comes from or its format. Adequate but with a clear 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?
States a specific resource (the competitor layer of a finished audit) with an explicit enumeration of contents: rivals bidding on the same clicks, live ads, keywords, search volume, CPC, landing pages, top advertiser, and paid keyword count. It also names the sibling it is not (ask_audit), so an agent can route correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit prerequisite ("Needs a completed audit"), an explicit alternative with a selection rule ("ask_audit with topic:competitors is the one for the written comparison; this is the one for the numbers"), and an exclusion (older audits carry no ad data). All the when/when-not decisions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_conceptsShow the page designsARead-onlyIdempotentInspect
Free. Returns every concept rendered for an audit, each with its image URLs and a link to view it full size, and a runs.active count of how many are still rendering. A pack takes 3 to 8 minutes. While runs.active is above zero, call it with wait set to 300: it holds the connection open and comes back the instant a design lands, the stage moves, or the pack finishes, instead of returning the same half-empty list a dozen times in a row. A design landing is the thing worth interrupting for, and a wait gets it to the user within seconds of it existing. If a call comes back with nothing new, say nothing and call again — repeating a stage you already reported is worse than silence. A partial set is non-terminal: more images are still coming, so it is not the finished set to choose from. Some concepts may be flagged recommended, and often none is. The designs come back as pictures in the reply, not just links: without a concept_id it returns the opening screen of each so they can be compared, and with one it returns that single design as every band in page order, which is the whole page. Any figures, ratings or testimonials drawn into them are placeholders showing where real proof belongs, never the user's own data. Pick a concept_id to build. If the user wants to SEND a design to anyone, use share_page with that concept_id: it gives back one public no-login page of the whole design. Never hand over an app or dashboard link for that, the recipient hits a login wall.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Seconds to wait for a material change. Use 25 for broad client compatibility; longer waits are available for hosts that support them. A timeout preserves the run; resume by ID instead of starting again. | |
| audit_id | Yes | ||
| concept_id | No | Optional. Given one, returns that design as its full stack of bands in page order instead of one opening screen per design. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds substantial operational context beyond them: it is free, packs take 3-8 minutes, long-polling holds the connection and returns on a material change, and a partial set is non-terminal. It also discloses that figures/ratings/testimonials are placeholders, not real data. It stops short of describing pagination or exact response shape, but the added context is rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but almost every sentence carries actionable content (polling etiquette, placeholder caveat, sibling routing). The purpose is slightly deferred behind the leading 'Free.' and the length could be trimmed, but there is little true waste.
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 fully carries the return-value burden: it explains the image/picture rendering, the link, the runs.active progress signal, and the recommended flag. Combined with the polling and share_page guidance, an agent has everything needed to call this 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?
Adds meaning beyond the 67%-covered schema: the strategic recommendation to set wait=300 while rendering is active and why, and the behavioral difference of concept_id (opening screen per design vs. full stack of bands in page order). audit_id is undocumented but self-evident from the required-parameter name.
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 every concept rendered for an audit') and enumerates what each concept carries (image URLs, full-size link, runs.active count). It also implicitly distinguishes itself from generate_concepts (generation) and share_page (sending), so an agent can route correctly without opening other schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit conditional routing: use wait=300 while runs.active > 0, omit concept_id to compare opening screens, pass concept_id to build a single design, and use share_page instead when the user wants to SEND a design. It also names when to stay silent on empty polls, which is real when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_notesRead my saved notesARead-onlyIdempotentInspect
Free. Returns the notes saved against one record, or every note in the workspace when no address is given. Worth calling at the start of a repeat job, so a monthly report picks up whatever the last one left behind.
| Name | Required | Description | Default |
|---|---|---|---|
| subject_uri | No | Limit to one record's notes. Leave it out for all of them. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds value beyond them by disclosing the cost profile ('Free') and clarifying the two behavioral modes (single record vs. entire workspace). Return shape and any pagination behavior are still unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler, and the core return semantics are front-loaded before the usage advice. Every sentence earns its 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 no-arg-required read tool with no output schema, the description covers what comes back and the two scoping modes. It stops short of describing the note structure or ordering, a minor gap rather than a blocking one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is fully documented in the schema. The description only restates the same semantic ('no address given' = all notes), so it adds no syntax or format detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns the notes') and precisely scopes it to one record or the whole workspace. The read-vs-write split against the sibling save_note is clear from the phrasing, though save_note is never named explicitly, which keeps it just 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?
Gives concrete usage context ('worth calling at the start of a repeat job, so a monthly report picks up whatever the last one left behind'). No explicit when-not-to-use or named alternative, but the situational guidance is specific rather than generic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_cro_skillsFind a landing page skillARead-onlyIdempotentInspect
Find Postclick methods for prioritising page fixes, ad-to-page message match, buyer objections, copy edits and client test briefs. Returns starter requests and portable skill downloads. No account or credits needed.
| 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 closed-world, so the safety profile is covered. The description adds genuinely new context not in the annotations: the return shape ('starter requests and portable skill downloads') and the auth constraint ('No account or credits needed').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the resource and followed by the return/auth facts. The mid-sentence enumeration of skill categories is a little listy but each item earns its place by narrowing the discovery scope.
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 parameters and no output schema, the description carries most of the load, and it does state the return payload and the no-auth requirement. The one substantive omission is any pointer to run_cro_skill as the follow-up action, which leaves the browse-then-execute flow incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. Nothing in the description needs to compensate for an input schema, and it correctly does not invent parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb 'Find' plus the resource ('Postclick methods' / landing page skills) and an enumeration of the skill categories make the purpose clear. However, it never distinguishes itself from the obvious sibling run_cro_skill, so an agent can't tell discovery from execution purely from this text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given. The tool is clearly a listing/discovery endpoint, yet the description never says 'use this to browse, then call run_cro_skill to execute' — the single most important routing decision among its siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_pagePublish a report to a shareable linkADestructiveIdempotentInspect
Free. Takes HTML you wrote and hosts it at postclick.ppc.io/r/, public, no login, ready to send to a client. A client gets a plain web page, not a link into a chat. We do not template the page, style it or add anything to it: it is exactly the report you wrote. USE PLAIN IMAGE LINKS HERE, from get_asset with as: "url". A page we host loads our pictures at full size, so there is no reason to inline them, and a page has a 2 MB ceiling that a single inlined design would eat on its own. Inlining is only for a document you are writing somewhere that blocks pictures from other websites. Publishing the same name again replaces the page and the link keeps working, which is what a report somebody sends every month needs. Use the client's name in the name so they can read it out.
| Name | Required | Description | Default |
|---|---|---|---|
| html | Yes | The whole page with inline CSS. Use image URLs from get_asset; avoid embedding large image data. | |
| slug | No | The last part of the address, like acme-october-review. Taken from the title when left out. Pass the same one again to update a report you already sent. | |
| title | No | What the report is called. | |
| subject_uri | No | The address of the audit or project it was built from, if there is one. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and idempotentHint=true; the description substantiates both by explaining that re-publishing the same name replaces the page while the link keeps working. It also discloses the 2 MB page ceiling and the no-templating/no-styling guarantee, which annotations cannot convey. Auth model is covered only as 'public, no login' on the viewer side, so not quite exhaustive.
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 value (free, hosted, public, ready for a client) before the image-handling caveats. It is on the long side and closes with a slightly redundant restatement ('Use the client's name in the name so they can read it out') that repeats the slug-reuse point already made.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-output-schema publishing tool, the description covers the essentials: where the page lives, that it is public, the size ceiling, overwrite/idempotency behavior, and the image-embedding policy. Nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3 and the schema already documents all four parameters. The description nonetheless adds real meaning: image URLs must come from get_asset with as: "url", the slug should be reused to update a previously sent report, and using the client's name in the slug makes it human-readable.
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 (hosts/publishes), the resource (the HTML you wrote), and the concrete outcome (a public page at postclick.ppc.io/r/<name>, no login). An agent can distinguish this from sibling page tools like build_page, export_page, or share_page without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear context for use (a finished report ready to send to a client) and an explicit when-not for the image-inlining technique, with the condition that selects it (a destination that blocks external images). It does not route the agent between sibling tools such as share_page or export_page, so it stops short of full alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_cro_skillImprove my landing pageARead-onlyIdempotentInspect
Use when the user wants page fixes, message match, buyer objections, copy rewrites or a client test brief. In your answer, never add free, guarantees, ratings or performance claims unless the source explicitly confirms them. Audit suggestions are not verified facts. Finished copy must not contain placeholders such as $X; choose a useful change supported by the original page. A quote form alone does not mean a free quote. Use one change for a first-fix request, complete the requested rewrite, and end with the source link without a follow-up offer. Finds an existing audit by page URL or client name and retrieves the selected skill plus its relevant evidence in one call. Returns source material for you to turn into the requested deliverable, not a new AI analysis. Read-only: never starts an audit, spends credits or publishes. Missing evidence and ambiguous page matches are explicit.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page URL, domain or client name. Leave out when audit_id is known or the user explicitly requested latest. | |
| skill | Yes | Choose postclick-fix-first for the first fix; postclick-copy-rewrite for replacement words; postclick-experiment-brief for a designer note or handoff; postclick-message-match for comparing an ad; postclick-buyer-objections for buyer hesitation. | |
| latest | No | Use true only when the user explicitly asks for their latest or most recent audit. May be combined with page to find its latest audit. | |
| context | No | The user's ad copy, audience, constraints or desired output. Pass known context; do not require an interview. | |
| section | No | For copy rewrites, defaults to opening (headline, supporting line and button). Use page when the user asks for other sections or the whole page. | |
| audit_id | No | An audit ID returned by Postclick or extracted from the user’s /dashboard/a/<audit_id> link. For that link use audit_id, not page or latest. Never ask the user to find an ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/non-destructive, and the description adds genuinely new behavior: the tool returns source material rather than a new AI analysis, and missing evidence or ambiguous page matches surface explicitly. The content constraints (no unverified free/guarantee/rating claims, no placeholders like $X) further constrain behavior in ways annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose sentence is placed after usage and several output-style policy sentences, so the description is not front-loaded around what the tool is. Much of the content (never add free/guarantees, don't use $X placeholders) reads as prompt/behavior rules that inflate a tool description rather than earning each sentence as tool-selection help.
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 appropriately describes the return ('source material for you to turn into the requested deliverable, not a new AI analysis') and the error behavior for missing evidence and ambiguous matches. Combined with a fully documented 6-param schema, an agent has enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including enum semantics for skill and section, so the schema does the heavy lifting and the baseline is 3. The description only adds the page-vs-audit_id resolution hint already present in the schema, so it adds little parameter meaning beyond structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description contains a specific verb+resource statement: 'Finds an existing audit by page URL or client name and retrieves the selected skill plus its relevant evidence in one call.' This clearly separates it from generative siblings, but it is buried after usage and content-policy prose, and it never names a sibling (e.g. get_audit) as the alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Opens with an explicit when-to-use trigger ('Use when the user wants page fixes, message match, buyer objections, copy rewrites or a client test brief') and adds selection conditions for first-fix vs. full rewrite vs. experiment brief. It also states exclusions ('never starts an audit, spends credits or publishes') and the one-change rule for first-fix requests.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_noteSave a note on an audit or designAIdempotentInspect
Free. Attaches anything you like to any record: who the client is, what they were charged, which findings they have already fixed, when you last sent them a report. Any name, any value. We never look inside it and the audit engine never reads it, so it cannot change what Postclick does. It is there so the work you do around these audits survives between conversations. Saving the same name again replaces it. Read them back with get_notes, and they also come back on the record itself.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Your own name for this field. | |
| value | No | Anything: a string, a number, a list, an object. | |
| subject_uri | Yes | The address of the thing this is about, like postclick://audit/<id>. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds behavior beyond the annotations: overwrite semantics ('Saving the same name again replaces it'), and the important non-effect that 'we never look inside it and the audit engine never reads it,' so it cannot alter Postclick's behavior. This complements idempotentHint/destructiveHint with the concrete consequence an agent needs.
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 key point ('Free') and is well-organized, but the conversational tone makes it slightly longer than needed for a 3-parameter tool. Every sentence still carries information, so no serious bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists (and none is needed), and the description explains persistence, retrieval paths (get_notes and via the record itself), and that it has no engine side effects. An agent has everything required to call it 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 coverage is 100%, so the baseline is 3; the description adds real meaning by stressing the key is user-chosen and that 'any name, any value' is accepted, plus re-save replaces. That contextualizes value/key beyond their terse schema descriptions.
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 (attach/save) and resource (arbitrary name/value notes on a record), and clearly frames the scope as free-form metadata that attaches to 'any record.' It distinguishes itself from read-side siblings by naming get_notes as the retrieval counterpart.
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 ('so the work you do around these audits survives between conversations') and names the alternative for reading back (get_notes). It stops short of explicit when-not-to-use guidance, but the intended use case is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch my audits, designs and reportsARead-onlyIdempotentInspect
Free. Finds anything in this workspace by words: a domain, a page URL, a client's name, a design's caption, a project. Returns an address for each hit that you pass straight to fetch. Use this the moment somebody refers to work they have already done — "the zoomdrain page", "last month's audit", "the report I made for Acme". Leave the words empty to list the most recent of everything. Use kind=audit to find audits directly; an account overview is not needed first.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Narrow to a kind such as audit, concept, build or project. Leave it out to search everything at once, which is usually what you want. | |
| limit | No | How many to return. 20 by default. | |
| query | No | Words to match: a domain, part of a URL, a client name, a caption. Leave it out to list the most recent work instead of searching. | |
| since | No | Only things newer than this date, as YYYY-MM-DD. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it as a safe, read-only, idempotent operation, but the description adds valuable behavioral context beyond them: it is 'Free', it returns 'an address for each hit that you pass straight to `fetch`', and an empty query lists the most recent work. These details help the agent understand cost, output shape, and a non-obvious default behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the key information ('Free. Finds anything...') and progresses logically through what it matches, what it returns, when to use it, and the empty-query behavior. The example phrases are illustrative without being wasteful.
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?
Given the tool's complexity, the full schema description, and the absence of an output schema, the description is complete enough: it explains the search mechanism, the return format, the empty-query fallback, and the kind parameter's narrowing role. No critical information is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters thoroughly. The description adds only minor color (e.g., 'page URL' as a query example) and largely repeats the schema's semantics, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Finds') and resource ('anything in this workspace by words'), and enumerates the types of things it matches (domain, page URL, client name, caption, project). It distinguishes itself from siblings by explaining that each hit returns an address to pass to `fetch`, which separates it from content-fetching tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit when-to-use guidance with a concrete trigger ('Use this the moment somebody refers to work they have already done') and several realistic examples. It also gives an alternative path for a specific case ('Use kind=audit to find audits directly') and defines the empty-query behavior, leaving little ambiguity about when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Added
get_competitors - Changed
share_page2 fields changed- added
Input schema / properties / audit_idAdded value: +{ + "description": "Share an AUDIT. From audit_page or get_audit. Use this when someone wants to forward the findings themselves rather than a design or a built page.", + "type": "string" +} - added
Input schema / properties / sectionAdded value: +{ + "description": "Which part of the audit the link opens. Only with audit_id. `competitors` opens on who is bidding against the page, for forwarding that one answer. Defaults to full.", + "enum": [ + "full", + "competitors" + ], + "type": "string" +}
20 tool updates
- First observed
ask_audit - First observed
audit_page - First observed
build_page - First observed
check_balance - First observed
describe - First observed
export_page - First observed
fetch - First observed
generate_concepts - First observed
get_asset - First observed
get_audit - First observed
get_audit_report - First observed
get_build - First observed
get_concepts - First observed
get_notes - First observed
list_cro_skills - First observed
publish_page - First observed
run_cro_skill - First observed
save_note - First observed
search - First observed
share_page
Related MCP Connectors
Shopify CRO platform via MCP: 100+ tools for analytics, experiments, authoring, proven lift.
Help your AI improve landing pages, grounded in 3,500+ scored sections and 500 real pages.
Paid x402 MCP tool for stress-testing launch and marketing copy before publication.
- PagereeOAuthcom.pageree
Build, publish, capture leads from, measure and improve landing pages from your AI assistant.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables rapid analysis of landing pages for SEO compliance, conversion structure, color contrast accessibility, and performance metrics with automated optimization suggestions and code snippets.8 npm1MIT
- AlicenseNot gradedqualityBmaintenanceMCP server and Claude skills for AI agents to build landing pages, run A/B experiments, and track first-party conversions. Lets agents onboard clients, create and publish pages, manage variants, and pull performance reports via the UXON API.13MIT
- FlicenseBqualityBmaintenanceEnables AI agents to autonomously generate, style, and precisely edit Tilda landing pages via MCP, including one-shot page assembly, section updates, and production-grade fault tolerance.21-
- AlicenseNot gradedqualityCmaintenanceAn MCP server that lets agents run free, keyless lead-leak audits on UK local service businesses — detecting form platforms and their outreach implications, checking whether phone numbers are tappable tel: links, comparing phone numbers across a site and free directories, screening website hygiene, and locating a business's own site. It also bundles these into a single full audit that returns a prioritised list of fixable issues alongside top local competitors.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.