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 46 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 21 tools
There are several overlapping paths to read the same audit: get_audit, get_audit_report, ask_audit, get_competitors, and fetch all surface audit content, and share_page/export_page/publish_page are three distinct output routes. The descriptions labor hard to differentiate them ('ask_audit for the written comparison, this for the numbers'), which helps, but an agent must still parse dense prose to pick correctly.
Most tools follow a verb_noun snake_case pattern (audit_page, get_audit, build_page, share_page, save_note). A few stand-alone verbs (describe, fetch, search) and near-duplicate prefixes (get_audit vs get_audit_report vs get_build vs get_concepts) break the pattern slightly, but overall it is predictable.
At 21 tools this is at the heavy end for what is essentially an audit-and-build pipeline server. Each tool maps to a real capability (audit, concepts, build, publish, notes, assets), so few are filler, but the surface is large enough that selection overhead is a real cost.
The surface covers the full lifecycle: search/describe to find work, audit, read results, generate concepts, build, export/publish/share, plus notes and asset retrieval. The main gap is that mutations are thin (notes can be saved but not deleted) and there is no explicit update/edit for existing records, though most workflows are workable.
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 when requested. Use check_balance for page coverage and follow the user's permission. 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 mark this as a non-readonly, non-idempotent, open-world operation, and the description is consistent, adding that it returns an audit_id and that a new audit should only be started after searching for existing work (a de-facto duplicate-work warning). It does not state auth requirements beyond 'follow the user's permission' or what state the audit creates.
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?
Short, front-loaded sentences with zero filler, and the purpose leads. Some clauses ('follow the user's permission', 'Pass campaign context already supplied') are terse to the point of ambiguity, slightly reducing clarity.
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?
Covers purpose, the downstream workflow (audit_id → get_audit → run_cro_skill), a negative scope statement, and the search-first precondition, which is sufficient given no output schema. Auth/permission mechanics remain vague.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both url and context are already documented in detail. The description's 'Pass campaign context already supplied' merely restates the schema's guidance to pass what the user has already said, adding no syntax or format detail beyond the schema baseline.
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 new landing page audit') and explicitly differentiates from siblings: 'Does not design or build a page' rules out build_page, and the audit_id workflow routes to get_audit and run_cro_skill. An agent can identify this as the creation entry point 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: use check_balance for page coverage, search for existing work when the request concerns a prior audit, then get_audit with wait:25 followed by run_cro_skill. It names the alternatives and the conditions that select them, so nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_pageBuild a design into a real pageAInspect
Build the design the user selected into a complete HTML page when requested and covered by their plan. Use check_balance for coverage and quote only returned purchase prices when a purchase is needed. 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?
Despite annotations covering the safety profile, the description adds substantial behavior beyond them: async run semantics (returns build_run_id, completion requires artifact_ready), the required get_build polling pattern, purchase-price quoting rules, and an explicit publishing restriction. These are operational traits the annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, each contributing distinct operational instruction, front-loaded with the core action. Slightly packed with side rules (pricing, publishing) 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 tool with no output schema, the description covers the return value (build_run_id), the completion signal (artifact_ready via get_build), gating (plan coverage/purchase), and downstream publishing constraints — enough for an agent to run the full workflow 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 a middling 67% and the description only indirectly references the selected design. audit_id lacks any schema description and direction is described only in the schema, so the prose adds little beyond the 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?
States a specific verb (Build) and resource (the selected design into a complete HTML page), and its scope is clearly distinguishable from publish_page, share_page, and generate_concepts. An agent knows exactly what this tool produces.
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 conditions and routing: use check_balance for plan coverage, do not publish or share without the user asking, and poll with get_build wait:25. It names the alternative tools and the when-not conditions rather than leaving them to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_balanceCheck my plan and page usageARead-onlyIdempotentInspect
Read the current plan, page allowance and purchase prices. Check coverage before starting a new page or when the user asks about cost. Work on a covered page does not have separate audit, design and build prices. Quote only returned prices; a missing price or allowance is unknown.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 real behavioral context: covered-page work has no separate audit/design/build prices, only returned prices should be quoted, and missing values mean unknown. It does not describe pagination or output shape, but the added quoting rules are valuable.
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 what is read, then when to use it, then quoting rules. Slightly choppy and loosely connected, 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?
With no output schema, the description carries the return-value interpretation ('quote only returned prices; a missing price or allowance is unknown'), which is the key thing an agent needs. It could say more about the shape of the plan/allowance data, but it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so the baseline is 4; there is nothing for the description to clarify about 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?
States a specific verb and resource set: read the current plan, page allowance and purchase prices. This distinguishes it from action-oriented siblings like audit_page, build_page and publish_page.
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 triggers ('before starting a new page', 'when the user asks about cost'), which tells the agent exactly when to reach for this tool rather than the sibling action tools.
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 when requested. Use check_balance for page coverage and follow the user's permission. 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. Check returned page coverage before starting more work. Directions that already exist are counted and reused. | |
| 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 already declare a non-readonly, non-idempotent, open-world, non-destructive operation, and the description does not contradict them. It adds real context beyond annotations — that it returns a resumable run, that existing directions are counted/reused, and that it is gated on user permission and a deliberate choice before building.
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 with the purpose front-loaded and no filler. A couple of clauses are terse/telegraphic ('follow the user's permission'), but each sentence carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description takes responsibility for the return value ('Returns a run to resume with get_concepts') and the surrounding workflow, which is what an agent needs to chain calls. It stops short of describing what the run contains or failure behavior, but is largely complete for 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 coverage is moderate (67%). The schema itself already documents count (up to 12, default 2, reuses existing) and direction (plain-English steer) well, and the description adds little parameter-level detail beyond 'for an existing audit' mapping to audit_id. Baseline 3 is appropriate since the schema does most of the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+scope: 'Generate visual design directions for an existing audit.' It also distinguishes itself from siblings by naming check_balance (coverage) and get_concepts (retrieve the run), so an agent can tell generation apart from retrieval and building.
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 workflow rules are given: generate 'when requested', use check_balance for page coverage, respect the user's permission, show existing images before asking to choose, and never start a build without their choice. Alternatives (check_balance, build_page implicitly) and preconditions are stated rather than implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_assetGet 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 read again; it does not start new work.
| Name | Required | Description | Default |
|---|---|---|---|
| audit_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive, yet the description adds real behavioral context: it costs nothing, requires a completed audit, older audits carry no ad data, an empty result is a real answer rather than a failure, and it does not start new work. It also flags which outputs are measured vs. model judgement.
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 'Costs nothing' and the core return statement, and every sentence adds routing or caveat value. It is a dense single paragraph of roughly 150 words, so slightly heavy for one parameter, but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full burden and does so: it enumerates every returned element, distinguishes measured figures from written judgements, and notes when captures are attached. Nothing needed to call it correctly appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (audit_id) with 0% schema description coverage. The description implies the source via 'Needs a completed audit' but never states the expected format or where the audit_id comes from. Adequate for a single obvious lookup key, but it does not fully compensate for the coverage 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 verb and resource ('Returns the competitor layer of a finished audit') and enumerates the actual contents: rivals bidding on the same clicks, live ads with keyword/volume/CPC, landing pages, top advertiser, and the customer's own keyword count. It also explicitly distinguishes itself from the sibling ask_audit, so an agent can route 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 the exact prerequisite ('Needs a completed audit') and names the alternative with the selecting condition: 'ask_audit with topic:competitors is the one for the written comparison; this is the one for the numbers.' It even handles the edge case where an audit found nobody.
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 needed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds genuinely useful context beyond them: no authentication is required and the return payload consists of starter requests and portable skill downloads.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the purpose before the return description. The category enumeration is long but each item conveys the scope of available skills, so little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only discovery tool with no output schema, the description covers what it finds, what it returns, and the auth requirement. The one gap is the unstated handoff to run_cro_skill, which would complete the workflow picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the baseline this is a 4. The description correctly adds no parameter detail because there is nothing to document.
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 clear verb (find/list) and resource (Postclick methods/skills), and enumerates the categories of skill covered. It does not name its obvious sibling run_cro_skill or otherwise differentiate discovery from execution, so the agent must infer the distinction from the names alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'Returns starter requests and portable skill downloads' hints that this is a discovery step feeding a later execution, and 'No account needed' hints at a low-friction context. It never states when to prefer this over run_cro_skill or that it should precede it.
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, uses a page 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 declare readOnly/idempotent/non-destructive, and the description reinforces rather than contradicts them while adding substantial context annotations cannot carry: explicit failure handling ('Missing evidence and ambiguous page matches are explicit'), a clear statement of what is returned ('source material... not a new AI analysis'), and output guardrails about unverified claims and placeholders. This is unusually rich behavioral disclosure for a retrieval 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 content is dense and mostly earns its place, but it is delivered as one long run-on paragraph with fragments ('Audit suggestions are not verified facts.') and the core purpose arrives well after the usage and formatting directives. Deliverable-formatting rules are blended with tool-selection guidance, which hurts scannability for an agent deciding whether to call it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by saying what is returned (the selected skill plus its relevant evidence) and what it is not (a new analysis). It covers audit resolution via audit_id/page/latest and the section default, leaving only the exact shape of the returned evidence unspecified.
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 includes enum descriptions for 'skill' and 'section' plus resolution rules for page/latest/audit_id, so the schema does the heavy lifting. The description only loosely echoes that logic ('Finds an existing audit by page URL or client name') without adding format, precedence, or default detail beyond what is already 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?
Mid-paragraph the description states a specific verb+resource: 'Finds an existing audit by page URL or client name and retrieves the selected skill plus its relevant evidence in one call,' and explicitly negates the misleading title by saying it is 'not a new AI analysis' and 'never starts an audit.' This lets an agent separate it from audit_page and the generation siblings, though the actual purpose is buried behind a long usage preamble.
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 opens with a clear trigger list ('Use when the user wants page fixes, message match, buyer objections, copy rewrites or a client test brief') and sets boundaries ('Read-only: never starts an audit, uses a page or publishes'). It stops short of naming sibling tools like audit_page or get_audit as the alternative path, so the routing is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
1 tool update
- Changed
generate_concepts1 field changed- changed
Input schema / properties / count / descriptionPrevious value: -"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."New value: +"How many distinct directions the user wants, up to 12. Leave it out for the standard pack of 2. Check returned page coverage before starting more work. Directions that already exist are counted and reused."
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.
Audit a landing page's conversion (score, top issues, fixes) and check if AI crawlers can read it.
Audit a landing page before paid ads: readiness score, ad pixels found, conversion paths, top fixes.
Help your AI improve landing pages, grounded in 3,500+ scored sections and 500 real pages.
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.5 npm1MIT
- AlicenseNot gradedqualityDmaintenanceMCP 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
- AlicenseBqualityBmaintenanceEnables 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.22Business Source 1.1
- AlicenseAqualityCmaintenanceAn 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.6MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.