Skip to main content
Glama

Server Details

Shipfound turns Claude Code or Codex into a growth engineer: site fixes for Google and AI search, content briefs and checks, indexing, AI crawler tracking and AI visibility checks. Changes go out as pull requests the founder merges. Sign in with OAuth.

Ownership verified
Status
Healthy
Uptime
99.7% over 22 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

B3/5.0

Scored across 91 tools

Disambiguation2/5

The set contains many overlapping families: access/record_access/workspace/plan/today/shipped/verify all concern workspace state or verification, while outbound_targets and outreach_targets are near-homophones. Run/read/draft/skip variants across ideas, research, reach, boost, and listing require parsing long descriptions to distinguish, and app_experiment_create versus experiment_create is easy to confuse.

Naming Consistency3/5

Most names use snake_case and domain prefixes, which helps, but the pattern is not consistently verb_noun: bare nouns such as access, analytics, plan, today, shipped, verify, and workspace are mixed with noun_verb and agent-action names. Near-duplicate names like outbound_targets/outreach_targets and the many *_run/*_drafts/*_save variants weaken predictability.

Tool Count1/5

At 91 tools this is far beyond a manageable MCP surface, even for a broad growth/ASO/SEO platform. The agent must choose among many lifecycle variants, read/write pairs, and proposal versus execution tools, creating an extreme selection burden.

Completeness4/5

The surface is unusually broad, covering ASO metadata, screenshots, experiments, App Store Connect writes, SEO, analytics, ads, boosts, outreach, launch planning, research, tracking, and verification. There are minor lifecycle gaps such as updating or deleting some created App Store entities and responding to reviews, but most core workflows are covered or intentionally handed to founder approval.

Available Tools

91 tools
accessThe latest access auditB
Read-only
Inspect

The latest stored access audit: every area with its status, what was seen and the fix. Free.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds two genuinely useful traits beyond them: the audit is 'stored' (a snapshot, not a fresh run) and it is 'Free' (no credit cost), which affects invocation decisions.

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

Conciseness4/5

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

A single front-loaded sentence with a colon-delimited content list and a one-word cost note; nothing is wasted, though the trailing 'Free.' is slightly detached from the main clause.

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

Completeness4/5

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

For a zero-parameter, read-only tool with no output schema, the description adequately describes the shape of the returned content (areas, status, observations, fix). It lacks only return format details such as ordering or pagination, which are minor here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline of 4 applies; there is nothing for the description to compensate for, and it correctly presents the call as argument-free.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (the stored access audit) and enumerates its contents — per-area status, observations, and fix. It implies retrieval rather than generation via 'latest stored', but never states the verb and does not differentiate itself from the nearby record_access sibling.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance and no alternative named; the agent must infer that this reads whereas record_access writes. 'Free' hints at the cost dimension but is not usage guidance.

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

ads_proposePropose Apple Ads keywordsAInspect

Propose new exact keywords to bid on (from keyword_research, the App Store keyword field or the reviews) or negatives, for the founder to approve in the results app. Each needs its campaign and ad group (from ads_review) and why. Nothing changes in Apple Ads before the founder approves. Growth. Free.

NameRequiredDescriptionDefault
itemsYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations declare a non-read-only but non-destructive, closed-world write. The description adds the key behavioral fact beyond annotations: nothing changes in Apple Ads until the founder approves, so the tool stages a proposal rather than mutating live campaigns. No contradiction with readOnlyHint=false. It does not describe rate limits or return behavior.

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

Conciseness4/5

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

Purpose and constraints are front-loaded and the prose is efficient. The trailing 'Growth. Free.' fragments are ambiguous and add little, slightly diminishing tightness.

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

Completeness4/5

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

For a staging/proposal tool with no output schema, the definition covers what gets proposed, the required per-item fields, the approval gate, and where IDs come from. Reasonably complete, though bid/matchType semantics and the approval-result flow are left to the schema and caller.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% at the top level, so the description must compensate. It explains that each item needs its campaign, ad group, and why, which covers several required fields (campaignId, why) and the source of adGroupId, but omits detail on kind, text, bid, and matchType.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (propose) and resource (new exact keywords or negatives) plus their sources, and frames the outcome (founder approval in the results app). It is clearly distinguishable from siblings like ads_review and keyword_research.

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

Usage Guidelines4/5

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

Clearly identifies where inputs come from (keyword_research, the App Store keyword field, reviews) and that campaign/ad group values come from ads_review. It gives strong context of when to use it, but states no explicit when-not or alternative to prefer.

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

ads_reviewReview Apple AdsAInspect

Read the founder's Apple Ads for the last days (campaigns, keywords, search terms: taps, installs, spend, cost per install) and propose changes with the numbers behind each: exact keywords for search terms that install, negatives for terms that spend with no installs, bid moves toward the target, pauses, more budget where a campaign is capped at a good cost. With the app's vendor number saved it also reads what came after the install (trials, offers and subscriptions started, from App Store Connect): afterInstall gives the share of downloads that start one and the estimated cost per start, the target can be a cost per trial (targetCostPerStart), and when not one started after enough installs no bid goes up and no budget grows. Apple never ties a start to a keyword, so keywords and search terms are judged by installs. Proposals wait for the founder's approval on the App Store page of the results app; nothing changes in Apple Ads before. Growth. Free.

NameRequiredDescriptionDefault
daysNoDefault 30
targetCpiNoThe founder's target cost per install, in the account's currency; default the account's average
targetCostPerStartNoThe founder's target cost per trial (or per subscription when the app has no trial), in the account's currency; turned into a cost per install with the share of downloads that start one. targetCpi wins when both are given

TDQS

A3.6/5.0
Behavior4/5

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

Goes well beyond the annotations: it discloses the approval gate ('nothing changes in Apple Ads before' the founder approves), the vendor-number prerequisite for afterInstall data, the Apple platform limitation that starts cannot be tied to keywords, and the guardrail that blocks bid/budget increases when no starts occurred. Missing only volume/pagination or rate context for a data-heavy read.

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

Conciseness3/5

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

The core action is front-loaded, but the description is one long chain of colon- and semicolon-separated clauses that takes effort to parse, and some of the proposal-type enumeration restates what could be one sentence. It earns most of its length but not its density.

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

Completeness4/5

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

For a no-output-schema, zero-required-parameter analysis tool, the description covers the data read, the target semantics, the afterInstall path, and the approval workflow. It does not spell out the shape of the returned proposals or how errors (e.g., missing vendor number) surface, which is the remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents days, targetCpi, and targetCostPerStart, including the precedence rule. The description reinforces the target/per-start concept but adds no syntax, formatting, or defaults beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (read) plus resource (Apple Ads: campaigns, keywords, search terms) and a second verb (propose changes) with concrete proposal types. It is clearly distinguishable from a pure apply tool, though it never names the sibling ads_propose that would complete the routing.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: the days window, the target parameters, and the condition that proposals wait for approval give context, and the afterInstall gate ('when not one started after enough installs no bid goes up') hints at when it applies. It never explicitly contrasts with ads_propose, ads_setup, or platform alternatives, so the agent must infer the choice.

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

ads_setupAd account and trackingBInspect

Where an ad platform (x, meta, reddit or google) stands for a boost, in the fixed order: 1. account (an ad account with a payment method the founder added, read in their browser; on Meta first a business portfolio and the Facebook Page the ads run under, with its own profile picture), 2. tracking (the platform's pixel on the site, loaded by Shipfound's script, so the founder deploys nothing: the pixel id and an event per ladder step, read in Events manager), 3. launch. Returns each step's state and what to do, what the campaign can optimise for, the recommended step of the ladder (landing page view, signup, payment: the deepest with enough volume) for the founder to confirm, the site's signup and payment goals (firable: whether the pixel can see them in the browser), and clicksSeen: visits in the last 7 days that arrived with X's click id. With record, first stores what you read: account { adAccountId?, name?, payment?, currency?, businessId?, pageId?, pageName?, pagePicture? } (X: ads.x.com; Meta: business.facebook.com settings and Ads Manager; Reddit: ads.reddit.com; Google: the customer ID at ads.google.com); tracking { pixelId, events?, verified? } from Events manager (X: the pixel id and each event's id; Meta: the dataset id; Reddit: the pixel id, a2_ or t2_; their standard events need no ids; Google: the conversion ID, AW- and digits, as pixelId, and each conversion action's label, after the slash in its send_to, as the event; verified: it shows events recorded from the site, or on Google the tag shows as active). Free.

NameRequiredDescriptionDefault
recordNo
platformNoDefault x

TDQS

B3.2/5.0
Behavior4/5

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

Annotations mark this as mutating-capable (readOnlyHint=false) but non-destructive; the description supplements this usefully by explaining the two modes: a read that returns step states plus optimisation hints, and a 'record' that writes what you read. It also gives platform-specific sources (ads.x.com, business.facebook.com, ads.reddit.com, ads.google.com) and concrete 'verified' criteria, which is real behavioural context beyond the annotations.

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

Conciseness2/5

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

The whole definition is one massive, comma-spliced paragraph with an embedded numbered list and a field dump. It is front-loaded with purpose but not structured for parsing, and several clauses (cross-referencing URLs and values) could be scoped to the parameters instead of the body. Length is justified by complexity, but presentation is poor.

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

Completeness4/5

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

For a nested, mutation-capable tool with no output schema, the description does well: it states what is returned (each step's state, optimisation options, recommended ladder step, goals with firability, clicksSeen) and what record persists per platform. The main gap is the absence of a return shape or failure/edge handling, but overall an agent has enough to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50% and the record object is deeply nested, so the description carries heavy load: it explains the meaning of account fields per platform (payment method, business portfolio, Page picture), the tracking pixelId format per platform (X pixel id, Meta dataset id, Reddit a2_/t2_, Google AW- conversion ID with label as event), and the 'verified' semantics. This meaningfully compensates for the schema gap, though some field-level precision still lives only in the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource (ad-platform setup state for a boost) and enumerates the three steps it reports (account, tracking, launch), plus a record mode. However, the purpose is buried inside a dense run-on sentence, and it never cleanly distinguishes itself from near-neighbours like tracking_check, launch_prep, or ads_propose. It is decipherable but not crisp.

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

Usage Guidelines2/5

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

There is no explicit 'use this when / not when' guidance and no siblings are named as alternatives. A reader can infer it is the setup-status tool, but nothing routes the agent between ads_setup, tracking_check, tracking_install, and launch_prep. The record mode is described mechanically but not framed as a when-to-use decision.

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

analyticsAnalyticsA
Read-only
Inspect

Run any report on the site's traffic: overview, realtime, channels, ai_search, sources, landing_pages, pages, shipped_work, ai_crawlers, conversions, errors, timeseries, funnels, page_flow. AI Search is its own channel, broken out per engine, and shipped work is a dimension. Default period: the last 28 days. Free.

NameRequiredDescriptionDefault
toNoYYYY-MM-DD
fromNoYYYY-MM-DD
limitNo
metricNotimeseries only
reportYes
siteIdNo
compareNoAlso the previous period of the same length
filtersNo
intervalNotimeseries only

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare read-only, closed-world, non-destructive, so the safety profile is covered. The description adds the default lookback window and notes about AI Search and shipped_work dimensions, but says nothing about result volume, the 500-item cap, or whether reports are paginated — meaningful gaps for a 14-report tool.

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

Conciseness5/5

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

One tight paragraph: the capability first, the report list second, then defaults. No preamble or repetition of the schema, and the trailing notes are short.

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

Completeness3/5

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

With 9 parameters, no output schema, and only partial schema descriptions, the description should clarify filter behavior and per-report parameter applicability. It covers defaults and a couple of domain quirks but leaves an agent guessing about how to shape filters and dates for specific reports.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 56%, and the description fills one hole by stating the default period, which informs from/to. But it adds nothing about filters, siteId, limit, or which parameters are only valid for certain reports (metric/interval scoping lives in the schema, not the prose). Baseline 3 fits.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb and resource ("Run any report on the site's traffic") with the full report vocabulary enumerated, so an agent knows exactly what it retrieves. It doesn't explicitly contrast with neighbors like visibility or search_positions, but the traffic-report scope is clear enough to separate them in practice.

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

Usage Guidelines3/5

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

Gives a useful default ("last 28 days") and implies this is the go-to traffic query, but never states when to pick this over siblings (visibility, search_positions, funnel_check) or when-not to use it. Selection is left to inference from the report enum.

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

app_addAdd an iOS appAInspect

Add the founder's iOS app to this workspace from its App Store link (apps.apple.com/.../id123). Reads the public listing: name, subtitle, rating, reviews count, languages, screenshots. Free.

NameRequiredDescriptionDefault
urlYesThe app's apps.apple.com link

TDQS

A3.9/5.0
Behavior4/5

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

Annotations declare this is a non-read-only, open-world, non-destructive write, and the description usefully adds that it fetches a public listing and enumerates exactly which fields are read (name, subtitle, rating, reviews count, languages, screenshots). It also discloses cost ("Free"). It does not state idempotency or auth/permission requirements, keeping it short of a 5.

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

Conciseness5/5

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

Two sentences, front-loaded with the action, each carrying distinct information (source, fields read, cost). No filler or restated title.

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

Completeness4/5

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

With no output schema, the description compensates by telling the agent what the listing read returns. For a single-parameter add tool with annotations covering the safety profile, this is nearly complete, though it could clarify what the tool itself returns after adding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter, and the schema already documents it at 100% coverage. The description nonetheless adds the concrete URL shape ("apps.apple.com/.../id123"), giving a usable format example beyond the schema's generic "apps.apple.com link".

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ("Add the founder's iOS app to this workspace") plus the input source (App Store link) and the data that will be pulled. This is clearly distinguishable from sibling listing/read tools, but it never names an alternative to contrast against, so it stops short of the top mark.

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

Usage Guidelines3/5

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

Usage is implied by "Add the founder's iOS app to this workspace" — an agent can infer this is the first-time add step. However, there is no explicit when-to-use vs siblings (app_metadata, app_audit, app_downloads) and no prerequisites or exclusions stated.

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

app_auditApp Store listing auditA
Read-only
Inspect

Check an app's App Store metadata against the ASO rules: character limits, wasted keyword characters, words repeated across name, subtitle and keywords, the locales its storefront indexes (keywords are not combined across locales), screenshot captions, and whether the description works for AI answers. Pass locales from the repo's fastlane/metadata// files (name.txt, subtitle.txt, keywords.txt, promotional_text.txt, description.txt) for the full check; without them only the public listing is checked, and the keyword field is private. Free; the fixes are yours to write, as a PR.

NameRequiredDescriptionDefault
appIdNo
localesNo
storefrontNoCountry code; default the app's

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint=false and openWorldHint, so safety is covered. The description adds real behavioral context beyond that: the tool is free, it does not apply fixes ('the fixes are yours to write, as a PR'), and the keyword field is only visible when repo locales are supplied. Missing only auth/permission notes.

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

Conciseness4/5

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

Front-loads the audit scope before the operational guidance, with no filler sentences. The parenthetical file list is dense but earns its place by disambiguating the nested parameter.

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

Completeness4/5

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

For a read-only audit with no output schema and a complex nested input, the description covers what is checked, what differs between the two modes, and how to source the locales payload. Return format and result shape are the main omissions, but those are acceptable given there is no output schema to be consistent with.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33% and the nested `locales` object has no field-level descriptions, so the description has to compensate; it does so by mapping the fields to concrete fastlane filenames (name.txt, subtitle.txt, keywords.txt, promotional_text.txt, description.txt). `appId` is left unelaborated, but the locales guidance adds substantial meaning over the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (audit an app's App Store metadata) and enumerates the concrete checks: character limits, wasted keyword characters, cross-field repetition, locale indexing, screenshot captions, AI-answer readiness. This is far more specific than sibling names like app_metadata or check_content, letting an agent route to it directly.

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

Usage Guidelines4/5

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

Clearly explains the two operating modes: passing `locales` from fastlane metadata triggers the full check, omitting it limits the audit to the public listing (with the keyword field unavailable). It does not explicitly name sibling alternatives or exclusions, but the conditional usage is unambiguous.

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

app_countriesWhich country to open next on the App StoreAInspect

The countries the app's listing could open next, best first: first-time downloads from a country whose language the listing does not have yet (from App Store Connect, when connected with the Admin role), then countries where a keyword check found open searches, then large stores to check first. For each: the App Store Connect locale to write and its language. Pass locales from the repo's fastlane/metadata// folders when App Store Connect is not connected; without either, the listing counts as written in its storefront's language only. Free; the latest read is kept for grow.

NameRequiredDescriptionDefault
appIdNo
localesNoThe listing's locales, from fastlane/metadata folder names

TDQS

A3.7/5.0
Behavior4/5

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

With readOnlyHint=false, the description usefully explains the state side effect: 'the latest read is kept for grow', which is why the tool is not read-only. It also discloses the external dependency and auth requirement (App Store Connect with Admin role) and that the call is free, which annotations alone 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.

Conciseness4/5

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

Front-loaded with the ranking rationale and tiers, then the input/fallback rules, then cost/retention. It is dense but each clause carries information; the middle ranking sentence is long but not padded.

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

Completeness4/5

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

With no output schema, the description does the necessary work by describing what each result contains ('the App Store Connect locale to write and its language') and the ordering logic. The only missing piece is the meaning of `appId`, which is also absent from the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%: `locales` is documented in the schema, and the description reinforces its meaning by naming its source (fastlane/metadata/<locale>/ folder names) and the fallback semantics. `appId` is explained in neither the schema nor the description, leaving a real gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states precisely what is returned: 'The countries the app's listing could open next, best first', including the ranking tiers. The resource (countries for App Store listing expansion) is distinct from siblings like app_metadata or app_keywords, though the differentiation is implicit rather than by naming a sibling.

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

Usage Guidelines3/5

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

It gives clear conditional input guidance (pass `locales` from fastlane folders when App Store Connect is not connected, otherwise the listing counts as storefront-language only) and a prerequisite (Admin role). However, it never says when to use this tool versus the many adjacent planning tools (launch_targets, listing_targets, plan), so routing remains inferential.

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

app_cpp_createMake a custom product pageAInspect

Make a custom product page as a draft for one audience or search: its promotional text, a deep link, the search keywords it should show for (only words already in the approved keyword field can be assigned; Apple shows it in search once approved), and new captioned screenshots. It starts from the live version's media. Link a shipfound.site page to it with ppid (app_site). The founder submits it for review in App Store Connect. Growth. Free.

NameRequiredDescriptionDefault
nameYesInternal name, e.g. 'Couples'
appIdNo
localeNoDefault en-US
deepLinkNo
keywordsNo
screenshotsNo
promotionalTextNo

TDQS

A3.5/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and destructiveHint=false, and the description adds real context beyond them: the page is created as a draft, it inherits the live version's media, keywords must already exist in the approved keyword field, and Apple only shows it in search after approval. It still doesn't say what the call returns (page id, draft state) or what happens on duplicate name.

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

Conciseness3/5

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

The core facts are front-loaded, but the opening is a long run-on sentence with parenthetical nesting, and the trailing fragments 'Growth. Free.' add taxonomy noise without operational value.

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

Completeness3/5

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

For a mutation tool with no output schema and low schema coverage, the description does cover draft semantics, media seeding, keyword constraints and the downstream review step. Gaps remain: the non-existent 'ppid' param confuses the interface, and default behaviors (locale default, what the response contains, what happens to the live page) are unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 29% across 7 params, so the description must compensate; it does add meaning for keywords (approved-field restriction), screenshots (new captioned screenshots seeded from live media) and the App Store search effect. But name, appId and locale are left entirely to the sparse schema, and it references a 'ppid' parameter that does not appear in the schema at all, which is a mismatch rather than added clarity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Make a custom product page as a draft') plus the scoping intent ('for one audience or search'), so the agent knows exactly what is produced. It does not explicitly name the nearby siblings (app_cpp_list, app_metadata_stage), leaving the differentiation implicit.

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

Usage Guidelines3/5

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

The phrase 'for one audience or search' and the keyword constraint ('only words already in the approved keyword field can be assigned') imply when this is the right tool, and the note that the founder submits for review in App Store Connect sets expectations after the call. However, there is no explicit when-not guidance or named alternative (e.g., app_cpp_list for existing pages, app_metadata_stage for metadata edits).

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

app_cpp_listList custom product pagesB
Read-only
Inspect

The app's custom product pages in App Store Connect, each with its ppid to link from a shipfound.site page (app_site) or an Apple Ads ad group. Free.

NameRequiredDescriptionDefault
appIdNo

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds genuinely new context beyond structured fields: the call is 'Free' (a cost disclosure no annotation captures) and the return shape is per-page with a ppid. It omits pagination or result-count behavior, keeping it below a 5.

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

Conciseness4/5

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

One information-dense sentence with no filler, front-loading the resource and then the key usage detail. It is a verbless fragment ('The app's custom product pages...'), which is slightly awkward but costs no clarity or space.

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

Completeness3/5

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

With no output schema, the description usefully explains that results are per-page with ppids, and annotations cover the safety profile. It still leaves the appId parameter undefined and says nothing about pagination or result limits, so it is adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single appId parameter, and the description never explains it directly — it only weakly implies app scoping via 'The app's'. With one undocumented param and essentially no compensating text, it does not meet the baseline for an adequately documented parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the resource (the app's custom product pages in App Store Connect) and what each item carries (a ppid), which distinguishes it from the sibling app_cpp_create write tool. The list verb is only implied by the title, not stated in the description itself, so it falls short of the 5 benchmark.

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

Usage Guidelines3/5

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

It gives a concrete downstream use for the ppid values — linking from a shipfound.site page (app_site) or an Apple Ads ad group — which implies when you'd call it. However, it names no alternative tool and states no condition for choosing this over app_cpp_create or other listing tools, leaving the routing to inference.

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

app_downloadsDownloads and trialsB
Read-only
Inspect

First-time downloads and redownloads for the last days, by source and country (App Store search, browse, web referrer, app referrer) and by campaign (the sf-* campaigns are the app's shipfound.site pages), from App Store Connect's analytics reports (the key needs the Admin role; Apple makes the first report a day or two after connecting). With the vendor number saved, also what came after the download, from Apple's subscription event report, whatever the app uses for subscriptions: free trials, paid offers and subscriptions started, and trials that became paid, with startRate (starts per first-time download). And productPage: how often the app was seen in a list, its product page views, and Get taps, with pageRate (Gets on the page per page view). Free.

NameRequiredDescriptionDefault
daysNo
appIdNo

TDQS

B3.2/5.0
Behavior4/5

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

Beyond the readOnly/openWorld annotations, it discloses real operational facts: the App Store Connect key needs the Admin role, Apple publishes the first report a day or two after connecting, and the subscription output only appears when a vendor number is saved. That is genuine behavioral context; it stops short of saying anything about pagination or result volume.

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

Conciseness2/5

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

One ~130-word run-on sentence that packs downloads, subscriptions, and product-page metrics into a single breath. The main purpose is front-loaded, but the remainder is dense and hard to parse, and metric definitions like startRate and pageRate are buried mid-stream.

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

Completeness3/5

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

With no output schema, the description does a good job enumerating what comes back (downloads by source/country/campaign, trial and conversion events, visibility/view/Get counts), which offsets the missing return schema. However, the two input parameters and the conditional nature of the subscription payload remain underspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for both parameters. The description only obliquely implies the 'days' window ('for the last days') and says nothing about the 1–35 bound or what 'appId' expects, so it fails to compensate for the empty schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (first-time downloads and redownloads) and enumerates the dimensions returned: source, country, campaign, subscription events, and product-page funnel metrics. It is clear what the tool produces, though it never names a sibling (e.g. analytics, app_countries) to differentiate scope.

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

Usage Guidelines3/5

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

Usage is only implied: 'With the vendor number saved, also what came after the download' hints at a prerequisite for the subscription section, but there is no explicit when-to-use / when-not-to-use statement and no alternative tool is named despite many siblings covering adjacent analytics data.

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

app_event_createDraft an in-app eventAInspect

An in-app event as a draft in App Store Connect: a card in search results and on the product page for something time-bound in the app (a challenge, a new season, a big update). Text per language: name (30), short description (50), long description (120). It lasts at most 31 days and shows from up to 14 days before. Its card and page images are added by the founder in App Store Connect, who then submits it. Growth. Free.

NameRequiredDescriptionDefault
appIdNo
badgeYes
purposeYes
deepLinkNoWhere the event opens in the app
eventEndYes
eventStartYes
territoriesNoApple's three-letter territory codes (USA, BRA); left out, Apple's default
publishStartYesISO date the card starts showing
localizationsYes
primaryLocaleYes
referenceNameYesInternal name

TDQS

A3.5/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false, destructiveHint=false and openWorldHint=true. The description adds genuinely non-obvious behavior: the result is a DRAFT that the founder must publish, images are not handled here, and the event has hard lifecycle limits (31 days max duration, card visible from up to 14 days before). It omits auth/scope requirements and what is returned, but adds real value 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.

Conciseness3/5

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

One dense paragraph that front-loads the resource definition and constraints, which is good. However it opens with a bare noun phrase rather than an action, and the trailing tokens 'Growth. Free.' are unexplained noise that doesn't help an agent decide or invoke.

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

Completeness3/5

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

With 11 parameters, 8 required, no output schema and low schema coverage, the description should carry more weight. It covers the concept, lifecycle constraints and text limits well, but leaves the agent guessing on enum choice (badge, purpose), date formats, and what a successful call returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 36%, so the description must compensate. It partially does: it gives the per-locale text limits (30/50/120) and, more importantly, explains the timing relationship between publishStart (up to 14 days before) and event duration (max 31 days). But it says nothing about the badge and purpose enums, the optional appId, referenceName, or the expected format of eventStart/eventEnd, leaving half the parameters undocumented anywhere.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the concrete resource ('an in-app event as a draft in App Store Connect') and explains what such an event is (a card in search results and on the product page for something time-bound). Combined with the title 'Draft an in-app event' and the name app_event_create, the create-draft intent is unambiguous, though the description itself never uses a verb and doesn't distinguish it from siblings like app_events or app_experiment_create.

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

Usage Guidelines3/5

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

'Its card and page images are added by the founder in App Store Connect, who then submits it' implicitly bounds the tool's scope: it creates the draft only, and image upload plus submission happen elsewhere. That is useful context, but there is no explicit when-to-use statement, no named alternative, and no prerequisites or exclusions.

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

app_eventsIn-app eventsB
Read-only
Inspect

The app's in-app events in App Store Connect, newest first: name, badge, state and dates. Free.

NameRequiredDescriptionDefault
appIdNo

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral facts: ordering ('newest first'), the fields returned, and that the call is free (no credit cost) — all useful and non-duplicative.

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

Conciseness5/5

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

A single dense sentence with zero filler, front-loaded with the resource and immediately followed by the fields and sort order.

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

Completeness3/5

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

Adequate for a simple one-parameter list tool with annotations covering safety, but with no output schema and no explanation of appId (required? defaults to the current app?), an agent lacks the information to call it correctly in all cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one parameter (appId) with 0% schema description coverage, and the description never mentions it or says whether it's optional/derived from workspace context. With low coverage the description is expected to compensate and does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific resource (in-app events in App Store Connect) plus the fields surfaced (name, badge, state, dates), which lets an agent distinguish it from the write-side sibling app_event_create. The verb is only implied ('events ... newest first'), so it's clear but not maximally explicit.

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

Usage Guidelines2/5

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

No statement of when to use this versus app_event_create or other app_* readers; the only contextual hint is 'Free'. An agent must infer that this is the read/list path for existing events.

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

app_experiment_createSet up an App Store A/B testAInspect

Set up a product page test as a draft: up to 3 treatments, each a set of new captioned screenshots, against the current product page, for a share of visitors (trafficProportion, percent). Apple tests the icon, screenshots and previews only, not text, for up to 90 days. The founder starts it from the results app (or App Store Connect); never say it is running before they do. Growth. Free.

NameRequiredDescriptionDefault
nameYes
appIdNo
localeNoDefault en-US
treatmentsYes
trafficProportionNoPercent of product page visitors in the test; default 50

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare a non-destructive mutation (readOnlyHint=false, destructiveHint=false). The description adds that it creates a draft (not a running test), limits Apple's testing to icon/screenshots/previews, and states the founder must start it—valuable behavioral context beyond annotations.

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

Conciseness4/5

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

The description is front-loaded with the action and constraints; four sentences each add relevant details. The final 'Growth. Free.' is a bit terse but likely categorizes the tool. No major waste.

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

Completeness4/5

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

For a complex mutation with nested objects and no output schema, the description covers draft status, what Apple tests, duration, and who launches it. It leaves some parameter explanation to the schema, but annotations cover the safety profile.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 40%, so description should compensate. It only partially does: it mentions treatments (up to 3, captioned screenshots) and trafficProportion, but omits name, appId, and locale. The schema already provides descriptions for some fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Set up'), resource ('product page test'), and scope ('as a draft', 'up to 3 treatments'). It distinguishes from sibling 'app_experiment_list' by focusing on creation of an App Store A/B test.

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

Usage Guidelines4/5

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

It gives context for use (product page test, up to 90 days) and a crucial usage rule ('The founder starts it... never say it is running'). However, it does not explicitly name when to use this over 'experiment_create' or other experiment tools.

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

app_experiment_listList App Store A/B testsC
Read-only
Inspect

The app's product page tests in App Store Connect. Results are in App Store Connect (Product Page Optimization). Free.

NameRequiredDescriptionDefault
appIdNo

TDQS

C2.6/5.0
Behavior3/5

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

Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=true, destructiveHint=false), so the bar is lower. The description does add genuinely useful, non-derivable context: results live in App Store Connect under Product Page Optimization, and the call is free (no credits). It still omits what the call actually returns or any pagination behavior.

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

Conciseness3/5

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

Three very short fragments, so nothing is bloated, but the structure is telegraphic and not front-loaded with a verb describing the operation. The sentence order puts the resource first and the cost note last, which is acceptable but not ideal.

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

Completeness2/5

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

There is no output schema, so the description must carry the burden of explaining what is returned. It gestures at results existing in App Store Connect rather than stating that this tool returns the list of tests, leaving it ambiguous whether the tool returns test data or merely points elsewhere. For a listing tool with an undocumented parameter, this is insufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and there is one parameter (appId). The description's phrase 'The app's' loosely implies app scoping but never explains appId, its expected format (numeric ID vs. bundle ID), or whether omitting it returns tests for a default/all apps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the resource domain (the app's product page tests / Product Page Optimization in App Store Connect) but never states the action. It relies on the tool name 'app_experiment_list' to convey that it lists tests, and gives no differentiation from siblings such as app_experiment_create or experiment_results.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no mention of alternatives like experiment_results or experiment_create. The only usage-adjacent signal is 'Free.', which tells the agent the call has no cost but not when to prefer it.

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

app_keywordsApp Store searches the app can winAInspect

Check App Store searches in one country, as the App Store shows them: where the app ranks on the first page, whether Apple suggests the search as people type it (Apple publishes no volumes; a suggested search is one people make), how many of the top 10 put its words in their name or subtitle, and how many ratings the top 5 have. Each search gets a verdict: open (few of the top 10 name it and they are small), gap (few name it, big apps), weak (many name it, small apps), crowded, thin (under 5 apps answer it), brand (one app's name), or yours (the app is in the top 10). Pass 3 to 10 searches in that country's language, from the listing, the repo and the reviews' own words; with expand (default) Apple's longer suggestions for each are added, up to 20 in all. Free; the latest check per country is kept for grow.

NameRequiredDescriptionDefault
appIdNo
expandNoAdd Apple's own longer suggestions for each search (default true)
countryNoStorefront country code; default the app's
searchesYesSearches people would type, in the country's language

TDQS

A4.4/5.0
Behavior4/5

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

Adds real context beyond the annotations: it is free, Apple publishes no volumes so a suggested search is used as a proxy ('a suggested search is one people make'), and the latest check per country is retained for the grow flow — which also explains why readOnlyHint is false. It does not disclose rate limits or the shape of the returned rows.

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

Conciseness4/5

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

Front-loaded with what is checked, then the verdict taxonomy, then the parameter guidance. It is dense and semicolon-heavy, and the closing 'Free; the latest check per country is kept for grow' is cryptic, but essentially every clause carries information.

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

Completeness4/5

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

No output schema exists, and the description compensates by defining all seven verdicts and the four signals reported per search. The only gap is that nothing explains what appId defaults to or how results are keyed when the app is not passed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Goes well past the 75% schema coverage: it constrains the search strings to the country's language, gives the recommended 3-10 count (versus the schema's looser 1-20), and explains that expand adds Apple's longer suggestions 'up to 20 in all' — a total cap the schema does not express.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a precise verb and resource — checking App Store searches in one country and reporting rank, suggestion status, competitor naming, and top-5 ratings — and enumerates the verdict vocabulary. An agent can tell this apart from keyword_research or search_positions without opening the schema.

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

Usage Guidelines4/5

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

It says to pass 3 to 10 searches in the country's language sourced 'from the listing, the repo and the reviews' own words', and notes expand is on by default. That is concrete usage context, but it never names an alternative sibling (keyword_research, search_positions) or states when not to use this tool.

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

app_metadataApp Store Connect metadataA
Read-only
Inspect

Every locale's name, subtitle, keyword field, promotional text, description and what's new, read from App Store Connect: the version being prepared (if any) and the live one. Needs the founder's App Store Connect key (connected on the App Store page of the results app); without it, use app_audit with the repo's fastlane metadata. Free.

NameRequiredDescriptionDefault
appIdNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds real context beyond them: the required App Store Connect key, where it is configured, and the 'Free' cost signal. It does not describe return format or pagination, but for a read-only tool covered by annotations this is a minor gap.

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

Conciseness4/5

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

Front-loaded with the returned fields, then the prerequisite and the fallback alternative. Dense but every clause carries information; the field enumeration is long but useful for recognizing the tool's scope.

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

Completeness4/5

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

For a one-parameter read-only tool with no output schema, the description compensates well by listing returned fields, the auth requirement, and the alternative when unauthenticated. The only real hole is the unexplained appId parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter, appId, with 0% schema description coverage, and the description never mentions or explains it. With low coverage the description should compensate, but it only indirectly implies app context via 'the results app' and does not say whether appId is required, optional, or defaults to the current app.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (read) and resource (every locale's App Store Connect metadata), enumerating the exact fields returned (name, subtitle, keywords, promotional text, description, what's new) and distinguishing the version being prepared from the live one. An agent can tell what this returns without opening any schema.

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

Usage Guidelines5/5

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

Explicitly names the prerequisite (founder's App Store Connect key connected on the App Store page) and the fallback when it is missing: 'use app_audit with the repo's fastlane metadata.' The selection condition and the named alternative are both present, leaving nothing to inference.

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

app_metadata_stageStage listing changesA
Destructive
Inspect

Write listing changes into the version the founder will submit, through App Store Connect: name and subtitle (30), keyword field (100), promotional text (170), description (4000), what's new; new locales are added. Never touches the live listing, never submits. Show the founder the exact text first. Builder and Growth. Free. Afterwards the founder submits the version for review in App Store Connect; once it is out, record_action module ASO, kind STORE_LISTING, meta.appStoreId and expect.. for each change, then verify.

NameRequiredDescriptionDefault
appIdNo
changesYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already set readOnlyHint=false, destructiveHint=true and openWorldHint=true, so the safety profile is partly covered; the description adds meaningful scope detail (writes only to the staged version, never the live listing, never submits), a required human-in-the-loop step, and the free/no-cost trait. It does not explain what happens to unspecified fields in the draft or any auth/rate-limit constraints.

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

Conciseness4/5

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

The main action is front-loaded in the first sentence, followed by the negative boundaries and the operating constraints; the long tail of post-submission steps is dense but relevant. Some segments ("Builder and Growth. Free.") are terse context markers rather than core instruction, keeping it just short of maximal efficiency.

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

Completeness4/5

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

For a two-parameter mutation with no output schema and no annotations on return behavior, the definition covers what is written, what is untouched, the human review step, and the downstream record_action/verify follow-up. The gaps are the unexplained appId parameter and what the tool returns per field/locale.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the load, and it partially does: it names the changeable fields and their limits (name/subtitle 30, keywords 100, promotional text 170, description/what's new 4000) and notes new locales get added. However those limits already exist as maxLength in the schema, and the appId parameter plus the 1-40 item bounds are never explained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ("Write listing changes into the version the founder will submit") and enumerates exactly which fields are affected. It also carves out its boundary against the adjacent actions in the flow ("Never touches the live listing, never submits"), so an agent can separate it from app_metadata reads and the eventual submission step.

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

Usage Guidelines4/5

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

It gives clear sequencing context: stage the text, "Show the founder the exact text first," the founder later submits, then record_action and verify. That tells the agent where this call sits in the workflow. It stops short of naming alternatives or exclusions (e.g., when to use this vs listing_skip or app_metadata).

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

app_nomination_createDraft a featuring nominationAInspect

A featuring nomination as a draft in App Store Connect: asks Apple's editors to consider the app for featuring around a date, for a launch, an update or new content. Give them weeks of notice. The description says what is new and why it matters to the people who use it, plainly, with no superlatives. The founder submits it (App Store Connect, Featuring, Nominations). Growth. Free.

NameRequiredDescriptionDefault
nameYesInternal name
typeYes
appIdNo
notesNo
localesNo
descriptionYesWhat is new, for whom, and why it matters
hasInAppEventsNo
publishEndDateNo
publishStartDateYesISO date to be featured from: the release date
supplementalMaterialsUrisNoA press kit, a video, the app's site

TDQS

A4/5.0
Behavior4/5

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

The description specifies crucial behavioral constraints related to the nomination quality, such as using 'plain' language and avoiding 'no superlatives.' This is vital behavioral context that goes beyond the formal schema structure. Since the annotations provide safety context, the description adds high-value operational context.

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

Conciseness3/5

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

The description is somewhat lengthy and contains conversational filler ('The founder submits it', 'Growth. Free'). While the information is well-organized, it is not maximally concise.

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

Completeness4/5

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

Given that this is a complex creation tool with low schema coverage, the description is highly complete. It successfully frames the 'why' and 'how' of the nomination process, which is necessary for an agent to use the tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema description coverage at only 40%, the description helps by defining the semantic goal of the 'description' field—it must explain what is new, for whom, and why it matters. This provides useful semantic guidance but does not detail the purpose of all 10 parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly defines the action (draft a featuring nomination) within a specific system (App Store Connect). It distinguishes this from other app-related tools by focusing on the editorial nomination process rather than listing or metadata updates.

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

Usage Guidelines4/5

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

It provides clear usage contexts—for a launch, an update, or new content—and gives critical practical advice regarding timing ('Give them weeks of notice'). While it doesn't explicitly compare itself to every single sibling tool, its context is very specific.

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

app_pricesSubscription prices by countryAInspect

Propose a lower subscription price in the countries the app's first-time downloads come from (and those whose listing opened), from the World Bank's price level there (local prices against US prices for the same things), snapped to Apple's price points. Only decreases, never below 40% of today's price, never where the price is already under the US price at the exchange rate. Each proposal waits for the founder's Approve on the App Store page of the results app; nothing changes before. Apple has no price A/B test: each change is read per country before and after. Growth. Free.

NameRequiredDescriptionDefault
appIdNo

TDQS

A3.5/5.0
Behavior5/5

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

Annotations only declare a mutation with open-world scope; the description far exceeds that by disclosing the exact guardrails (only decreases, 40% floor, no lowering where already below US price at FX), the approval gate (every proposal needs founder Approve and nothing changes beforehand), and the measurement caveat (no price A/B test; before/after reads per country). This is unusually rich behavioral disclosure and consistent with destructiveHint=false.

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

Conciseness3/5

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

The core purpose is front-loaded, but the body is a dense chain of clauses crammed into few sentences, mixing pricing logic, approval workflow, and measurement caveats without separation. The trailing 'Growth. Free.' tagline adds no operational value and should be cut.

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

Completeness3/5

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

For a mutating, open-world tool with no output schema, the description covers behavior and guardrails well and hints that proposals surface on the results app's App Store page for approval. It does not describe what a call returns (a list of proposals? per-country rows?) or what the appId argument means, so an agent cannot fully predict the outcome of an invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is exactly one parameter, appId, with 0% schema description coverage, and the description never mentions it or clarifies whether it is optional (required count is 0). It alludes to 'the app' only obliquely, leaving an agent unsure what to pass or what happens when it is omitted. The description therefore fails to compensate for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a specific verb and resource: propose a lower subscription price per country, derived from World Bank price levels and snapped to Apple price points. It is clearly distinct from siblings like app_purchases or offer_plan, though it never names an alternative tool explicitly. The trailing 'Growth. Free.' fragment is noise that dilutes an otherwise precise statement.

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

Usage Guidelines3/5

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

It specifies the targeting condition (countries with first-time downloads and opened listings) and hard constraints (decreases only, floor of 40% of current price, skip countries already below US price at FX). However, it never says when to call this versus app_purchases, offer_plan, or boost_plan, nor what to do if no countries qualify. Usage is implied rather than instructed.

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

app_purchasesIn-app purchase namesBInspect

The app's in-app purchases and subscriptions from App Store Connect, each with its display name and description per language, and what to change: names made only of plan words ("Premium", "Pro Yearly") carry nothing people search for, names that miss every search the app aims at, and listing languages a purchase has no name in. ASO tools see the display names count in App Store search (Apple has not documented it); they show on the product page. Free; the read is kept for grow.

NameRequiredDescriptionDefault
appIdNo

TDQS

B3/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false, openWorldHint=true, destructiveHint=false; the description adds useful context beyond them: the data comes from App Store Connect (explaining openWorld), the call is 'Free' (no credit cost), and the read is retained 'for grow', which partly explains the non-read-only hint. It still omits auth/prerequisite state and what happens for apps with no purchases; the read-only framing versus readOnlyHint=false is a mild tension but is mitigated by the 'read is kept' note.

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

Conciseness3/5

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

The resource statement is front-loaded and the three defect categories are concrete, but the prose is run-on and contains opaque fragments ('Free; the read is kept for grow') and an editorial aside about Apple's undocumented ranking that costs length without guiding invocation.

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

Completeness4/5

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

With no output schema, the description usefully previews the return shape (per-language names/descriptions plus problem flags) and annotations cover the safety profile. The main missing piece for a correct call is how to supply or omit appId and whether results span multiple apps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and there is a single appId parameter that the description never mentions. It does not say whether appId is a numeric App Store ID or bundle ID, nor what happens when it is omitted (required count is 0, suggesting a current-app default) — a gap the description was the only place to close.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the concrete resource (in-app purchases and subscriptions from App Store Connect) and enumerates what comes back: display names/descriptions per language plus flagged problems. The action is implied by the noun phrase rather than stated as a verb, and the sibling app_purchases_stage is never mentioned, so an agent must infer whether this reads or stages purchases.

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

Usage Guidelines2/5

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

There is no explicit when-to-use statement and no exclusion or alternative named, despite a very similar sibling (app_purchases_stage) existing. The 'what to change' clause hints at a diagnostic/audit purpose but never states the condition that should select this tool over app_metadata or app_keywords.

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

app_purchases_stageRename in-app purchasesA
Destructive
Inspect

Write in-app purchase and subscription display names (2 to 30 characters) and descriptions (up to 45) per language in App Store Connect: a language the purchase has is changed, a new one needs both. Apple reviews them with the next submission; nothing shows before then. Show the founder the exact text first. Builder and Growth. Free.

NameRequiredDescriptionDefault
appIdNo
changesYes

TDQS

A3.9/5.0
Behavior4/5

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

Beyond the annotations, the description discloses important behavior: Apple reviews the changes with the next submission and nothing appears before then. It also adds a review/confirmation step by telling the agent to show the founder the exact text first, though it does not mention limits such as the 40-change maximum.

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

Conciseness4/5

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

The description front-loads the main action and packs useful constraints and behavior into a compact passage. The fragments 'Builder and Growth. Free.' are terse and slightly cryptic, but they do not obscure the core instruction.

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

Completeness4/5

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

For a mutation tool with no output schema, the description covers the critical behavioral facts: delayed visibility after Apple review, per-language update rules, and a confirmation step. The main remaining gap is that appId and the changes-array cap are not explained in prose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry parameter meaning. It usefully explains character limits, per-language behavior, and the rule that a new language needs both name and description, but it does not explain appId or the 40-item changes limit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: write in-app purchase and subscription display names and descriptions per language in App Store Connect. It clearly separates this from a read/list operation, but it does not explicitly name the sibling app_purchases tool for retrieving purchase IDs.

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

Usage Guidelines4/5

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

It gives clear usage context: existing languages are changed, new languages need both name and description, and the founder should see the exact text first. It also explains the review delay, though it does not explicitly compare this tool to alternatives such as app_purchases.

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

app_ranksWhere the app ranks in App Store search, week by weekAInspect

The app's place on the first page of App Store search for the searches its keyword checks track (open, gap, weak, and the ones it holds), per country, from the first read to the latest. Shipfound reads them every week; refresh reads a country now, at most once a day. A rank past the first page (about 11 apps) is null. Free.

NameRequiredDescriptionDefault
appIdNo
countryNoOnly this storefront; default every one checked
refreshNoRead now when the last read is a day old or more

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare open-world, non-destructive, and not read-only; the description adds the details that matter — the once-a-day refresh rate limit, the weekly cadence, that ranks past the first page (~11 apps) come back as null, and that the tool is free. That is real behavioral context beyond structured fields, though it doesn't explain what the refresh actually costs or what the response shape looks like.

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

Conciseness4/5

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

The scope and cadence come first and every sentence carries information, including the null-past-first-page rule. The only soft spot is the internal jargon 'open, gap, weak, and the ones it holds', which assumes knowledge of the keyword-status categories and could cost an agent a beat.

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

Completeness4/5

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

With no output schema, the description does the necessary work: it explains what a record contains (rank per tracked keyword, per country), the time range, the null sentinel, and the refresh semantics. The main omission is `appId` guidance and any hint of the response grouping, which keeps it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%: `country` and `refresh` already have schema descriptions, and the prose only reinforces them (default every storefront, daily cap on refresh). `appId` is undocumented in both the schema and the description, so the prose does not close that residual gap — a baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (the app's App Store search rank), the dimension (per tracked keyword, per country), and the time scope (week by week, first read to latest). That is enough for an agent to tell it apart from keyword, visibility, and analytics siblings without opening any schema.

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

Usage Guidelines4/5

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

It establishes clear usage context: normal calls return the weekly series, while `refresh` performs a live country read capped at once a day. It does not name a competing sibling (e.g. visibility or search_positions) or state when not to use it, so it stops short of a 5.

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

app_reviewsApp Store reviewsB
Read-only
Inspect

The app's latest App Store reviews from Apple's public feed: star counts, rating by version, the share of 1 and 2 star reviews, and the low reviews themselves for you to group into the to-do list (what to fix, what to answer). Free.

NameRequiredDescriptionDefault
appIdNo
pagesNo50 reviews a page, newest first; default 4
countryNo

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered structurally. The description adds meaningful context beyond that — the data comes from 'Apple's public feed' and is 'Free' — but says nothing about rate limits, freshness cadence, or what happens when an app has few/no reviews.

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

Conciseness4/5

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

A single front-loaded sentence that names the source first and then enumerates return contents. The list-within-a-sentence is dense but every clause carries information; there is no filler or redundancy.

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

Completeness4/5

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

With no output schema, the description does the valuable work of describing the return payload (star counts, per-version ratings, share of low reviews, the low reviews themselves), and annotations already cover safety. The notable gap is that two of three parameters (appId, country) are never explained anywhere.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33%: only 'pages' is documented (50 reviews/page, newest first, default 4). 'appId' and 'country' carry no description in either the schema or the description. The phrase 'the app's' loosely implies appId, but country selection and app-id format are never explained, so the description fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource and its scope — 'the app's latest App Store reviews from Apple's public feed' — and enumerates exactly what data comes back (star counts, rating by version, share of 1/2 star reviews, low reviews). An agent can tell this is a review-retrieval tool. It does not, however, name or distinguish itself from any sibling such as app_downloads or app_audit.

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

Usage Guidelines3/5

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

It implies a downstream use ('for you to group into the to-do list (what to fix, what to answer)'), which hints at when this tool is valuable. But there is no explicit when-to-use statement, no exclusion, and no named alternative among the many siblings, so guidance remains inferred rather than stated.

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

app_screenshotsScreenshots with captionsAInspect

New App Store screenshots: a caption (and an optional second line) over each raw screen, rendered at the exact size App Store Connect takes, in any script (Japanese, Korean, Arabic...). proof: "rating" adds the app's own rating under the caption, from its listing. Returns a link per image to show the founder or download. Write captions as benefits in the words people search: since 2025 caption text appears to count for App Store search, and the first three screenshots carry the search result and the product page. app_experiment_create and app_cpp_create upload them for you; app_screenshots_apply puts a set in the next version. Free.

NameRequiredDescriptionDefault
sizeNoDefault iphone-6.9 (1290x2796)
appIdNo
screenshotsYes

TDQS

A4.1/5.0
Behavior4/5

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

With annotations already declaring non-read-only/non-destructive, the description still adds real context: output is a link per image, cost is free, and `proof: "rating"` is conditionally refused under 4.5 stars or 20 ratings — a failure mode invisible in the schema. It doesn't state what artifact is actually created or whether anything is persisted server-side, which is the notable remaining gap given readOnlyHint=false.

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

Conciseness4/5

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

Purpose is front-loaded in the first clause, and the dense sentence structure packs size, script coverage, proof, output, and routing into five sentences. The SEO aside ('since 2025 caption text appears to count...') partly duplicates the caption field's own description, which is the only slack.

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

Completeness4/5

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

For a no-output-schema tool it correctly declares the return ('a link per image'), the permitted image sources are in the schema, and the downstream apply/upload path is named. Only the asset-persistence behavior and the appId/size interaction are left unstated, which is minor but not nothing for a non-read-only tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33%, so the description has to compensate. It does well on three of them: `caption` (benefit wording, search relevance), `sub` (the 'optional second line'), and `proof` (rating line plus its refusal threshold). But `appId`, `bg`/`fg`, and the maxItems=10 constraint on `screenshots` get no explanation anywhere, leaving real gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: composites a caption (plus optional second line) over each raw screen and renders at the exact App Store Connect size, in any script. It also carves out its position against siblings by naming app_experiment_create/app_cpp_create as uploaders and app_screenshots_apply as the applier, so an agent can distinguish 'render images' from 'ship images' 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.

Usage Guidelines4/5

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

It routes clearly to alternatives: use app_experiment_create or app_cpp_create to upload, app_screenshots_apply to put a set into the next version. It also gives authoring guidance ('write captions as benefits in the words people search'). What's missing is an explicit negative case (e.g. when not to add captions, or what to do if the source screen isn't a raw portrait asset).

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

app_screenshots_applyPut screenshots in the next versionA
Destructive
Inspect

Put a set of captioned screenshots, in this order, into the version the founder will submit, for one language and size: the winning treatment of an A/B test, or the screenshots of a language just opened. It replaces that size's screenshots in that version; nothing live changes until the founder submits and Apple releases it. A change to the screenshots everyone sees is tested first (app_experiment_create): apply a set without a test only for a language that has none of its own. Builder and Growth. Free.

NameRequiredDescriptionDefault
whyYesWhat makes this set the one to ship: an A/B test it won, or a language with no screenshots of its own
sizeNoDefault iphone-6.9 (1290x2796)
appIdNo
localeYesThe App Store Connect locale, e.g. en-US, pt-BR
screenshotsYesIn the order they should show: the first three carry the search result

TDQS

A4.5/5.0
Behavior4/5

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

Goes beyond destructiveHint=true by specifying the exact blast radius: it replaces that size's screenshots in that version only, and nothing live changes until the founder submits and Apple releases it. It also surfaces a refusal rule via the proof field (under 4.5 stars / 20 ratings). Minor gap: it does not say whether the prior screenshot set is recoverable or lost on overwrite.

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

Conciseness4/5

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

Front-loaded with the action and its scope; the destructive consequence and the test-first rule follow in priority order. The middle clauses are slightly run-on, but every sentence carries decision-relevant information.

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

Completeness4/5

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

For a destructive, open-world write with no output schema, the description covers what is mutated, what is deferred to the founder/Apple, and when an untested apply is legitimate. It leaves open what the tool returns (e.g., the applied set or a staged-version id) and how to undo an apply, which keeps it short of a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 80%, so the baseline is 3, and the description earns an upgrade by explaining that screenshots are ordered ('in this order') and scoped to a single locale+size per call — semantics the array/param schema does not convey. It still says nothing about why/appId beyond what the enum and field names give.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a concrete verb and resource ('put a set of captioned screenshots ... into the version the founder will submit') and bounds it to one language and one size in one call. It is clearly separable from app_screenshots (read) and app_experiment_create (test), which are the two obvious siblings an agent would confound it with.

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

Usage Guidelines5/5

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

Explicit routing: 'A change to the screenshots everyone sees is tested first (app_experiment_create): apply a set without a test only for a language that has none of its own.' That names the alternative and the exact condition under which this tool may be used untested, plus the audience (Builder and Growth).

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

app_siteThe app's own siteA
Destructive
Inspect

Read or write the app's small site on .shipfound.site: a home page and up to 11 pages, one per search people make ("budget app for couples"), each with a title, description, headline, intro, sections and FAQs, linking to the App Store or to a custom product page (ppid). Most apps have no website, so this is what Google and AI answers can find and cite. Pick each page's search with keyword_research; write from the listing, the repo and the reviews, never invented numbers or quotes. Without content it returns the current draft and its issues. Writing the draft is free; publishing is the founder's own action in the results app (Builder and Growth). Never tell the founder it is live before they publish.

NameRequiredDescriptionDefault
slugNoThe subdomain, set the first time; default from the app's name
appIdNo
contentNoThe whole site: what you pass replaces the draft

TDQS

A4.6/5.0
Behavior5/5

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

Annotations flag destructiveHint=true and openWorldHint=true, and the description earns additional credit by spelling out the actual mechanism: without content it returns the current draft and its issues, with content the payload replaces the draft, drafting is free, and publishing is the founder's own action in the results app. It even warns never to tell the founder the site is live before they publish, which is real behavioral context beyond the annotations.

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

Conciseness4/5

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

The identity and read/write split are front-loaded in the first sentence, and the later sentences each add operational value (sourcing rules, free-vs-publish, the live-claim warning). It is dense and slightly long for a single paragraph, but appropriately sized for a nested content tool with no wasted sentences.

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

Completeness5/5

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

For a complex nested-payload tool with no output schema and zero required parameters, the description covers read behavior and return shape ('returns the current draft and its issues'), write/replace semantics, the sourcing constraints against invented numbers or quotes, and the publish handoff. 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 67%, so the baseline is 3, but the description adds genuine meaning: pages map one-to-one to a search, and each page carries title/description/headline/intro/sections/FAQs plus an App Store or ppid link, which clarifies the intent of ppid and path. It does not explain slug or appId semantics beyond what the schema states, keeping it out of the top band.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb pair and resource: read or write the app's own small site, with concrete scope (a home page plus up to 11 search-driven pages) and the hosting target. An agent can distinguish this from app_metadata, landing_check, or content_brief without opening another schema, and the sibling keyword_research is explicitly tied in.

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

Usage Guidelines4/5

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

Gives clear context for when this matters ('Most apps have no website, so this is what Google and AI answers can find and cite') and prescribes the workflow: pick each page's search with keyword_research, write from the listing/repo/reviews. It lacks an explicit when-not-to-use or a named alternative for the read-only case, so it stops short of the top band.

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

bing_connectConnect Bing Webmaster ToolsAInspect

Store the founder's Bing Webmaster API key (Bing Webmaster Tools, Settings, API access), encrypted, so Shipfound can read which of the site's pages Bing has and send it pages through Bing's API. Checks the key against Bing and that the site is verified in that account. The founder gives the key; never type it into a page for them. Free.

NameRequiredDescriptionDefault
apiKeyYesThe key, as Bing shows it

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already mark this as a non-read-only, open-world operation. The description adds meaningful behavior beyond that: it stores the key encrypted, validates the key against Bing, checks site verification, and warns against typing the key into a page. It does not detail failure modes, but it substantially explains what the tool does and why.

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

Conciseness4/5

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

The description is front-loaded and information-dense without being excessive. The sentence 'Free.' is abrupt, and the validation sentence is slightly compressed, but overall it earns its space.

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

Completeness4/5

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

For a one-parameter connection tool with annotations and no output schema, the description covers the essentials: what is stored, that it is encrypted, that it is checked against Bing, and that the site must be verified. It could mention replacement/update behavior, but it is complete enough to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already defines the single apiKey parameter. The description still adds value by saying where the key comes from (Bing Webmaster Tools, Settings, API access) and how it should be handled, going beyond the schema's terse 'The key, as Bing shows it.'

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

It states a specific verb ('Store') and resource ('the founder's Bing Webmaster API key') and explains the downstream effect: letting Shipfound read Bing's page data and send pages via Bing's API. This clearly distinguishes setup/connection from the sibling submission tool bing_submit.

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

Usage Guidelines3/5

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

The description implies this is a setup step and gives handling guidance ('The founder gives the key; never type it into a page for them'), but it does not explicitly say when to use it versus alternatives like bing_submit or index_status. Usage is inferable but not directly stated.

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

bing_submitSend pages to BingAInspect

Send pages on the site to Bing through its API, within the daily quota Bing gives the site, and the sitemap when given. Only after the founder's yes on the list. Returns the pages sent and those past today's quota, for tomorrow. Needs bing_connect first. Free.

NameRequiredDescriptionDefault
urlsYesPages on the founder's site
sitemapNoThe sitemap's full URL, to submit it too

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare non-readonly, non-destructive, open-world behavior, so the bar is lower. The description still adds genuinely useful context: a daily quota enforced by Bing, the return split between pages sent and those deferred to tomorrow, the founder-approval prerequisite, and that the call is free. It does not describe rate-limit error behavior, but coverage is good.

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

Conciseness4/5

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

Front-loads the action, then prerequisites and return behavior in a compact run of short sentences. Nothing is wasted, though the fragment style ('Free.') and slightly clipped phrasing make it marginally less smooth than ideal.

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

Completeness4/5

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

For a two-parameter submission tool with no output schema, the description covers prerequisites, quota, approval gate, and the shape of the return value. An agent has enough to call it correctly; only error/retry semantics are unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both the urls array and the sitemap URL are already documented in the schema. The description reinforces the sitemap-when-given behavior but adds no format or syntax detail beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (send pages to Bing through its API) and includes the sitemap variant. Easily distinguished from sibling bing_connect, which is an authentication/setup tool rather than a submission tool.

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

Usage Guidelines5/5

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

Gives explicit preconditions: only after the founder's yes on the list, and bing_connect must be run first. It also frames the quota boundary that governs whether this tool is appropriate. The only small gap is it does not name an alternative submission path, but the sequence with bing_connect is clear.

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

boost_candidatesPosts worth boostingA
Read-only
Inspect

The founder's original X posts from the last 30 days, minus any boosted before (or saying what a boosted post said; those are listed in boosted), ranked for a boost: likely site visits and signups in the 48 hours after each (when it links to the site), and engagement against their usual. Posts with under 500 views are marked untested, not weak: the boost is the test. Whether a post is about the product and makes sense to a stranger is your call. Only when the founder asks which post to boost; a post they name goes straight to boost_plan. Free.

NameRequiredDescriptionDefault
handleNoTheir X handle, when the audit did not store one

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already establish read-only, non-destructive, open-world behavior, so the safety profile is covered. The description adds substantial context beyond that: the 30-day window, exclusion of prior boosts, the 48-hour visit/signup prediction model, engagement-vs-usual comparison, and the 'under 500 views = untested, not weak' interpretation. Return shape is only loosely implied (the 'boosted' list), keeping it short of a 5.

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

Conciseness4/5

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

Dense but front-loaded: it leads with what the resource is, then ranking logic, then a caveat, then routing, then cost. Each clause carries information, though the parentheses and semicolons make it slightly tangled to parse.

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

Completeness4/5

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

With no output schema, the description carries the return-value burden and mostly does: ranked posts, prediction signals, an 'untested' marker, and a separate 'boosted' list. It stops short of describing volume, pagination, or exact fields, but for a single-input read tool it is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter and the schema documents it at 100% coverage ('Their X handle, when the audit did not store one'), so the baseline is 3. The description adds nothing about the handle — reasonable, since the schema already states its emergency/fallback role.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names the specific resource (the founder's original X posts from the last 30 days), the filtering rule (minus previously boosted), and the ranking criteria. It clearly distinguishes itself from boost_plan by routing the latter to a different case, though the verb is implicit rather than stated outright ('returns posts worth boosting').

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

Usage Guidelines5/5

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

Explicit gate: 'Only when the founder asks which post to boost,' with a clear alternative path — 'a post they name goes straight to boost_plan.' It also flags the tool as 'Free,' so an agent knows the cost trade-off. 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.

boost_planPlan a boostAInspect

Plan a boost: on X (default) one to three of the founder's own posts; on Google (platform google) one to three search ads, each with its own keywords (the searches it answers), headlines (3 to 15, up to 30 characters) and descriptions (2 to 4, up to 90), only with searchVolumes from keyword_research showing people search for them; on Meta (platform meta) one to three ads written for it, each a primary text and a headline over the product video; on Reddit (platform reddit) one to three ads written for it, each a headline (up to 300 characters) over the product video, or with format post a text-only ad that reads like a post: a title (text, up to 300 characters) and a body, with comments on, on the Traffic objective optimised for clicks (Reddit offers text post ads no Sales objective, so no optimize) and with no destination URL: the tagged link is the body's last line, in brief.copy per ad group. An equal budget per post or ad (default $45, at most $300), the days, a tagged link per post so each visit and signup traces to it, what to expect and the stop rule. A post the founder named goes in as is: no data is read about it. Goal visits (default) runs each post as a Promoted-only copy with its link; reach boosts the post itself. targeting is who sees it, as the founder answered: locations, and optionally languages, gender, age, follower look-alikes, keywords, interests, and on Reddit communities (Meta: no look-alikes or keywords; Reddit: no look-alikes). Refused until ads_setup says the ad account and tracking are done on that platform. optimize is the step of the ladder the founder confirmed; a step with too few a week for the platform to learn from is refused (it bids high for the few people it guesses) unless force is true, which only the founder's own say-so after hearing that allows. posts[].media names the files you upload for each ad (cut and format), else the ad's files by name in the ads folder on the Desktop. refreshOf replaces a running boost whose creative or setup is weak: its messages are not offered again, and the plan returns what is left of its budget. firstStep (once per product, kept): whether a phone can take the product's first step, as you found it and the founder confirmed; without one on file a visits plan is refused. devices: every device, desktop only, or split (each ad twice, desktop only and phones only, half its budget each), as the founder confirmed; default from the first step (split when a phone cannot take it), returned as devices with the why. sizing says what each question costs: clicks (enough impressions to compare click rates) and signups (about 5 signups per ad group at the site's own rate, or why it cannot be priced), and what this budget answers; question sets the budget to the one the founder picked. landing: the A/B test of each ad's own line as the landing page's headline, only for the boost's visits (key, name, hypothesis, path, goal for experiment_create, and the gated page code for a PR). retargetOf plans the optional second phase: a small ad to an earlier boost's visitors who did not sign up (default $20 over 5 days, desktop only when a phone cannot take the first step; the audience is created first, in the setup). Returns the Ads Manager setup, the checks for the Review page, and brief.warnings: what is wrong with the audience for this message. Nothing is launched or spent. Free.

NameRequiredDescriptionDefault
daysNoDefault 3
goalNo
forceNoOnly when the founder still wants a step with too few a week to learn from, after you told them it bids high
postsYes
formatNoReddit only. video (default): a headline over the product video. post: a text-only ad written like a post to the community, a title (text) and a body, comments on; no video or image
repeatNoOnly when the founder asked to boost again a post or message boosted before; without it a repeat is refused
sourceNofounder: they named it. ranked: from boost_candidates
devicesNoAs the founder confirmed; default from the first step
optimizeNoWhat the campaign optimises for, as the founder confirmed from ads_setup's recommend; default that recommendation. Not for a Reddit post ad: it runs on Traffic, optimised for clicks
platformNoDefault x
questionNoWhat the founder wants the budget to answer, from sizing; sets the budget when budgetUsd is not given
budgetUsdNoTotal, split equally; default 45
firstStepNoOnce per product, after the founder confirmed it; kept for later plans
refreshOfNoThe id of the boost this one replaces; its ads are paused by the founder first
targetingNoWho sees the ads, as the founder answered. Ask before planning.
landingUrlNoWhere the link goes; default the site's home page
retargetOfNoRetarget this earlier boost's visitors who did not sign up (optional, only on the founder's yes)
searchVolumesNoGoogle: each keyword's searches a month and cost per click, from keyword_research

TDQS

A4.4/5.0
Behavior5/5

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

Goes far beyond the annotations: it discloses that nothing is launched or spent, that an equal budget per ad is applied (default $45, cap $300), that firstStep is persisted once per product, that refreshOf drops the replaced boost's messages and returns leftover budget, and that the response includes Ads Manager setup, Review-page checks, and brief.warnings. These are exactly the side-effect, persistence, and refusal behaviors an agent cannot infer from readOnlyHint=false / destructiveHint=false alone.

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

Conciseness2/5

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

A single semicolon-chained block of roughly 600 words with no headings, lists, or paragraph breaks, making it hard to scan under time pressure. The most decision-critical line — 'Nothing is launched or spent. Free.' — is buried at the very end instead of front-loaded, and several sentences merely echo the input schema.

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

Completeness5/5

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

Given 18 parameters, nested objects, and no output schema, the description covers all four platforms' asset requirements, default derivation, refusal conditions, persistence rules, and what the response contains. An agent has enough to construct a valid call and predict the outcome without opening any sibling tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 89%, yet the description still adds genuine semantics: the $300 budget ceiling and equal split, devices defaulting from the first step (split when a phone can't take it), question overriding budgetUsd, Reddit post-ads forcing Traffic/click optimization, and retargetOf's $20-over-5-days desktop-only default. Some of the text merely restates schema limits (headlines 3–15, 30 chars; descriptions 2–4, 90 chars), which dilutes rather than extends the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening states a specific verb and resource ('Plan a boost') and immediately differentiates behavior per platform — X posts, Google search ads with headlines/descriptions, Meta primary text plus headline, Reddit video vs. text post formats — so an agent knows exactly what artifact is produced. It also names collaborators by name (keyword_research, ads_setup, boost_candidates, experiment_create), which anchors it against siblings.

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

Usage Guidelines4/5

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

Prerequisites and gating are explicit: 'Refused until ads_setup says the ad account and tracking are done on that platform', visits plans are refused without a firstStep, repeats refused without repeat=true, and too-small optimize steps refused unless force is true. Defaults are traced to their sources (sizing for question, ads_setup recommend for optimize, boost_candidates for ranked). It stops short of explicitly distinguishing this tool from ads_propose/ads_review, so it isn't a full when/when-not/alternative map.

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

boost_recordRecord a boost's numbersAInspect

Record what the platform's Ads Manager shows for a boost, read in the founder's Chrome: per post or ad (n, the ad group's or ad set's number in the plan; a split boost per ad group, with device desktop or phone) the spend in USD (an account billing in another currency: converted at today's rate), impressions, and link clicks, not all clicks (engagements for a reach boost). status running when the founder has pressed Launch or Publish, stopped when they stop it. Reddit and Google, where your browser cannot go: pass the founder's export as csv (Reddit Ads, Reports, by ad group, Export; Google Ads, Campaigns, Download) and the server reads each ad group named "ad ", or Google campaign named sf-boost-- (spend or cost, impressions, clicks; daily rows added up), with usdRate when the account bills in another currency; numbers in posts win over it. Never invent a number: leave out what you could not read. Free.

NameRequiredDescriptionDefault
idYes
csvNoThe Ads Manager export, pasted as it is, broken down by ad group
postsNo
statusNo
usdRateNoUSD per unit of the account's currency, for the export's spend; default 1

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare this is a non-read-only, non-destructive, closed-world write, and the description adds genuine operating rules on top: never invent a number, omit what could not be read, convert foreign billing at today's rate, and statuses derive from the founder pressing Launch/Publish or stopping. It does not say whether previously recorded numbers are replaced or merged, which is the main behavioral gap for a write tool.

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

Conciseness3/5

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

Purpose is front-loaded, but the body is a single run-on chain of semicolons and parentheticals that is dense to parse on first read. Almost every clause carries real information, yet the CSV and currency rules could be split into separate sentences for scanability.

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

Completeness4/5

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

For a 5-parameter ingest tool with no output schema and only 40% schema documentation, the description covers both input sources, currency handling, and the no-fabrication rule. What it leaves out is the write semantics against existing records (overwrite vs. append) and any hint of what the call returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 40%, and the description compensates thoroughly: it defines `n` as the ad group's/ad set's number in the plan, explains `device` for split boosts, distinguishes link clicks from all clicks (engagements for reach boosts), documents the CSV shape including the 'ad <n>' and 'sf-boost-<id>-<n>' naming conventions and daily-row summing, and clarifies `usdRate` semantics with its default.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first clause names a specific verb and resource — record the Ads Manager numbers for a boost — and then enumerates exactly which metrics (spend USD, impressions, link clicks) and for which unit (post/ad, ad group, split-by-device). It is clearly distinguishable from boost_plan (planning) and boost_results (reporting), since this is the ingest step.

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

Usage Guidelines4/5

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

It gives explicit routing: read from the founder's Chrome for Meta-style boosts, and pass a CSV export for Reddit/Google 'where your browser cannot go', naming the exact export path in each platform's UI. It also states precedence (numbers in posts win over csv). It does not name sibling tools such as boost_results or boost_plan as alternatives, so it falls short of a true 5.

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

boost_resultsRead a boostA
Read-only
Inspect

A boost against its stop rule and, with several posts, against each other: each post's click rate, cost per click, cpmUsd (cost per 1,000 impressions), and the visits and signups its tagged link brought; costAlarm when an ad pays over twice the top of the platform's CPM range after $10, with the likely setup causes; taggingNote when the platform shows clicks but few or no visits carry the boost's tags; the verdict (not launched, needs numbers, too early, stop, winner, no clear winner, working, lost after click: people clicked and none signed up). A winner is called only at a 90% chance of being the best, once each post has 1,500 impressions; on signups once there are 5, else on clicks. path: the visits past the click (stayed, reached the signup page, signed up, paid), by phone and desktop, against the site's usual engaged rate; diagnosis: the step that lost people (message, page, device, signup, or holding) and its next move; devicesNote: a split boost's desktop and phone ad groups side by side; retarget: whether enough visits did not sign up to offer the optional retargeting ad. Without id, the latest boost. With history true, instead every boost launched before: its posts' links and words, where it went and its verdict, so a new boost tests something new. Free.

NameRequiredDescriptionDefault
idNo
historyNoEvery boost launched before, instead of one read-out

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already mark this as a safe read (readOnlyHint=true, destructiveHint=false), and the description adds extensive behavioral detail beyond them: verdict categories, winner thresholds (90% confidence, 1,500 impressions, 5 signups), costAlarm triggers, taggingNote conditions, path stages, diagnosis outcomes, and retargeting logic. No contradictions with annotations.

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

Conciseness3/5

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

The content is information-dense and most clauses earn their place because there is no output schema. But it is delivered as one enormous run-on sentence with semicolons and colons, making it hard to scan. Front-loading is reasonable, yet structure could be substantially improved with separate sentences or bullets.

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

Completeness5/5

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

There is no output schema, so the description carries the full burden of explaining return values—and it does so thoroughly: metrics, verdicts, alarm conditions, path, diagnosis, device notes, retargeting, and history mode. An agent has enough information 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.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%, but the description fully compensates. It explains that omitting id returns the latest boost, that history=true returns every prior boost instead, and what history mode returns (links, words, destination, verdict). This gives meaning to both parameters beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly conveys that this tool reads a boost's performance: click rate, CPC, CPM, visits, signups, verdicts, path, diagnosis, and retargeting readiness. It distinguishes the single-boost read from the history mode. However, it opens with an awkward noun fragment ('A boost against its stop rule...') rather than a clean verb+resource statement, and does not explicitly name sibling tools like boost_record or boost_plan.

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

Usage Guidelines4/5

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

It gives clear usage context for both modes: 'Without id, the latest boost' and 'With history true, instead every boost launched before.' The purpose of history mode is explained ('so a new boost tests something new'). It stops short of naming alternatives or explicit when-not-to-use conditions against siblings such as boost_record.

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

build_ideasFree tool or skill ideasAInspect

Ideas for something the founder gives away that brings buyers back to the product. kind tool: free tools for their site (checker, generator, calculator) their buyers search for, each with the keyword, its monthly searches, what it takes and returns, and how the result leads to the product; Costs 4 credits, charged only when it returns. Nothing is charged when it comes back empty. kind skill: agent skills for the product (name, the SKILL.md description, how it uses the product), whether a skill fits this product, and the skill directories left to list it on. Free. What is built already is left out.

NameRequiredDescriptionDefault
kindYestool: a free tool on the site. skill: an agent skill for the product

TDQS

A3.6/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, openWorldHint=true and destructiveHint=false, so the description is not the sole carrier of behavior. It still adds real context the annotations don't: the 4-credit cost, that credits are charged only when a result is returned and nothing is charged on an empty result, that the skill branch is free, and that already-built items are excluded.

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

Conciseness3/5

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

The lead sentence is front-loaded, but the body is a dense semicolon-joined run-on mixing output fields, credit rules and exclusions for two modes. Every clause is informative, yet the structure makes it harder to scan than it needs to be.

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

Completeness4/5

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

For a one-parameter, no-output-schema generation tool, the description is close to complete: it enumerates the fields returned per mode, the billing behavior, and the exclusion rule. The only material gap is the absence of routing guidance against the many sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'kind' enum is already documented with its two values. The description elaborates on what each kind produces, but that is output framing rather than added parameter meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource (ideas for free tools / agent skills that pull buyers back to the product) and clearly splits it into the two 'kind' modes. It is clear enough to call correctly, but it never distinguishes itself from siblings like keyword_research or content_brief, so an agent still has to infer which generation tool to pick.

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

Usage Guidelines3/5

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

The two enum branches imply when to pick 'tool' vs 'skill' and the credit costs help a decision, but there is no explicit when-to-use or when-not-to-use guidance and no named alternative among the many sibling tools. Usage is only implied.

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

check_contentCheck a draftAInspect

Run the gates on a local draft before the PR: fabrication (numbers with no source), unsupported claims, disparagement of other products, duplication, placeholders left in, banned machine-sounding words, dashes, answer-first opening, headings, length and links. Pass the facts content_brief returned. Costs 2 credits, charged only when it returns.

NameRequiredDescriptionDefault
typeYes
factsNo
titleNo
markdownYes

TDQS

A4.1/5.0
Behavior4/5

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

The description contributes behavioral facts the annotations do not carry: it costs 2 credits and is 'charged only when it returns' — important billing semantics for an agent deciding whether to call it. The annotations declare readOnlyHint=false and openWorldHint=true, but the description never explains why a 'check' tool is not read-only, leaving that trait opaque.

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

Conciseness4/5

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

Front-loaded with the purpose, then a compact enumerated list of checks, then two short operational sentences about inputs and cost. The middle enumeration is dense and comma-packed but every item earns its place as gate coverage.

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

Completeness4/5

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

With no output schema, the description usefully enumerates what is checked and discloses cost, giving an agent most of what it needs. It does not describe the return shape (pass/fail vs. list of violations) or whether results differ by content type, which is the main remaining hole for a no-output-schema validator.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema coverage is 0%, so the description must carry the load, and it only clarifies the 'facts' parameter via the content_brief reference. The required enum parameter 'type' (answer_page, comparison, alternatives, glossary_term, article) and 'title'/'markdown' get no explanation, even though gate behavior plausibly varies by content type — a real gap versus the 0% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Run the gates on a local draft before the PR,' then enumerates exactly which gates (fabrication, unsupported claims, disparagement, duplication, placeholders, banned words, dashes, answer-first opening, headings, length, links). That enumeration lets an agent distinguish this validator from content_brief, which it also names as its data source.

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

Usage Guidelines4/5

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

Gives clear timing context ('on a local draft before the PR') and specifies the data flow from a named sibling ('Pass the facts content_brief returned'), which is actionable routing guidance. It stops short of stating when *not* to use it or what to do after the PR stage, so it is not quite a full when/when-not pair.

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

content_briefContent briefAInspect

The research for one page: facts with their source URLs (read from the pages that rank and the pages AI engines cite), the headings those pages cover, People Also Ask, the gaps none of them answers, an outline, and the rules the page is checked against. You write the page in the repo from this; every number must come from a fact. Costs 5 credits, charged only when it returns.

NameRequiredDescriptionDefault
typeYesglossary_term, answer_page, comparison (topic = the rival), alternatives (topic = the rival), article
topicYesThe term, the question, the rival's name, or the article's title
keywordNoThe target keyword, when it differs from the topic

TDQS

A3.7/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, openWorldHint=true, destructiveHint=false, so the safety profile is partly covered. The description adds genuinely non-structured context: it costs 5 credits and is 'charged only when it returns,' and it explains that facts are read from ranking pages and AI-cited pages. That cost/billing disclosure is exactly the value-add the annotations cannot carry.

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

Conciseness4/5

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

Two sentences, front-loaded with the deliverable, and every clause (sources, headings, PAA, gaps, outline, rules, credit cost) earns its place. The long enumerative first sentence is dense but not padded.

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

Completeness4/5

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

With no output schema, the description carries the burden of describing returns and does so by enumerating the brief's contents. It also discloses billing behavior. What is missing is guidance on how the output is consumed per content type and any prerequisite/ordering with sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the type enum meanings and topic/keyword semantics are already documented in the schema. The description adds no parameter-level detail (e.g., how topic should be phrased per type) beyond what the schema states. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the specific deliverable — a page research brief with facts+source URLs, competitor headings, People Also Ask, gaps, outline, and validation rules. An agent can tell this produces research for a single page. It stops short of naming or contrasting with the closest siblings (keyword_research, build_ideas, grow_answer), so it is clear but not sibling-differentiating.

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

Usage Guidelines3/5

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

'You write the page in the repo from this' implies the downstream workflow and the constraint that every number must come from a fact, which is useful context. However it never states when to reach for this vs. keyword_research or build_ideas, nor any exclusion conditions. Usage is implied rather than prescribed.

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

convert_pagesThe pages that bring visitors, read for a way to sign upBInspect

Read the pages visitors land on most beyond the home page (articles, answers, comparisons; the founder's tracking, 28 days): links to signup, pricing, checkout or the app in the page's own content versus only in the header, and how many of those landings signed up, against the pages' average. Also the signup form's visible fields. A missing way on ships as an A/B test (experiment_create), never as a straight change. Free; kept for grow.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

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

The description adds real behavioral context beyond the annotations: the 28-day tracking window, that it is free ('Free; kept for grow'), and the important policy that any change found is shipped as an experiment rather than a direct edit. There is a mild tension with readOnlyHint=false since the description frames this as inspection only, though the 'never as a straight change' clause argues the tool itself does not mutate the site; the mismatch is nominal and not a hard contradiction.

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

Conciseness3/5

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

Everything stated is substantive, but it is delivered as one dense run-on with unexplained shorthand ('the founder's tracking', 'A missing way on ships as') that forces re-reading. The purpose is front-loaded, but the cost/behavioral notes ('Free; kept for grow') are cryptic rather than compact.

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

Completeness4/5

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

With no parameters, no output schema, and only sparse annotations, the description carries the burden and largely meets it: it enumerates the reported metrics (link placement, signups vs. page average, visible signup form fields) and the measurement window. What it lacks is any hint about result shape or volume for the top-pages list, but for a zero-argument analysis tool this is close to sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has zero parameters, so there is nothing to disambiguate and the baseline of 4 applies. The description correctly implies no inputs are needed, instead defining the fixed scope (28-day window, pages beyond home).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description does identify a concrete resource: the top landing pages beyond the home page (articles, answers, comparisons) and what it reports about them (in-page vs header-only links to signup/pricing/checkout/app, signups per landing, signup form fields). But the phrasing is heavily metaphorical ('the founder's tracking', 'the pages that bring visitors, read for a way to sign up'), so an agent must parse it to extract the verb+resource. It also never distinguishes itself from the many adjacent analysis siblings (landing_check, funnel_check, analytics, visibility).

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

Usage Guidelines3/5

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

Usage is only implied: audit high-traffic pages for missing conversion paths. The only explicit routing is downstream ('ships as an A/B test (experiment_create), never as a straight change'), which tells the agent what to do with a finding but not when to pick this tool over landing_check or funnel_check. No when-not conditions are given.

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

experiment_closeStop an A/B testA
Destructive
Inspect

Stop a test and record the variant kept (the winner, or the control when nothing won). Then ship the kept variant as the page's only version, remove the experiment code in the same PR, and record_action it with module EXPERIMENTS. Free.

NameRequiredDescriptionDefault
keyYes
keepYes
noteNo
siteNo

TDQS

A4.1/5.0
Behavior5/5

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

Annotations only give the safety profile (destructive=true), while the description discloses the full behavioral chain: it records the kept variant, ships it as the sole page version, removes experiment code in the same PR, writes a record_action entry under module EXPERIMENTS, and costs nothing. That is substantial side-effect context an agent cannot get from the annotations alone.

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

Conciseness4/5

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

Front-loads the core action ('Stop a test') then sequences the consequences in the order they occur. Compact overall, though the 'Free.' fragment and the internal 'record_action ... module EXPERIMENTS' reference are slightly jargony.

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

Completeness4/5

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

For a destructive, no-output-schema mutation with documentable params at 0% coverage, the description covers the important side effects and the key 'keep' semantic well. The remaining gap is the meaning of 'note' and 'site', which no structured field explains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% across 4 params, so the description carries the burden. It clarifies the 'keep' semantic ('the winner, or the control when nothing won'), which is genuinely useful, but leaves 'key', 'note', and 'site' unexplained. Partial compensation only.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action ('Stop a test') plus the concrete follow-on effects: record the kept variant, ship it as the page's only version, remove experiment code. This distinguishes it clearly from experiment_create and experiment_results without needing to open a schema.

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

Usage Guidelines3/5

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

Usage is implied: call this when a test has concluded and you want to promote a winner/control. There is no explicit 'use this instead of X' or exclusion guidance, and the 'Free' note is a cost hint rather than a selection rule. Adequate but leaves the agent to infer the trigger condition.

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

experiment_createStart an A/B testAInspect

Size and start an A/B test on one page against one goal. Every visit is in the test, in either tracking mode: a visitor without a stable id is assigned by the visit, with nothing stored. Reads the page's last 28 days, works out the visitors each variant needs to detect the lift (mde, default 0.2 = 20%) and how many weeks that takes. A quiet page is never refused: a slow test starts all the same, with the numbers, and reads not enough yet until it has an answer. On success it returns the code to put on the page (Next.js with @shipfound/next, or plain HTML with sf.variant), which you ship as a PR. The control is the first variant. Free.

NameRequiredDescriptionDefault
keyYesLowercase key the page's code uses, e.g. pricing-headline
mdeNo
goalYesA goal on the site, by name or id (see goals)
nameYes
pathYesThe page, e.g. /pricing (* as a wildcard)
siteNoThe site's domain, when the workspace tracks more than one
variantsNoDefault ["control", "b"]; the control first
hypothesisYesWhat changes, for whom, why it should move the goal, and the analytics evidence

TDQS

A4/5.0
Behavior5/5

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

Goes well beyond the annotations: discloses tracking behavior (visit-level assignment, nothing stored for anonymous visitors), that it reads 28 days of page data, that it computes required sample size and duration from mde, that low-traffic pages still start with "not enough yet" status, and what is returned (variant-ship code for Next.js or plain HTML). Those are exactly the side effects and outputs an agent cannot get from readOnlyHint/destructiveHint=false.

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

Conciseness4/5

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

Front-loaded with purpose, then progressively detail. Nearly every sentence carries information, including the trailing "The control is the first variant" and "Free." The tracking-mode sentence is the densest and slows first-read comprehension slightly, keeping it off a 5.

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

Completeness4/5

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

No output schema exists, and the description covers the return value (the code to ship as a PR) and the success-but-early state ("not enough yet"), which is the critical piece. It leaves unaddressed what happens on a duplicate or conflicting key and whether recurring tests per page are limited — minor for a non-destructive create.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75%, so the baseline is 3; the description earns an extra point by explaining the one parameter the schema leaves bare — mde, its default of 0.2 and its 20% meaning — plus reaffirming that the control is the first variant. Site, key, path, goal and hypothesis are already documented in the schema, so no further compensation is required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — "Size and start an A/B test on one page against one goal" — which is far more precise than the title alone. The "one page" scope implicitly separates it from app_experiment_create, but no sibling is named explicitly, so an agent must infer the boundary.

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

Usage Guidelines3/5

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

Usage is implied through scope (one page, one goal, control first) rather than stated: there is no explicit "use this when..." or pointer to experiment_results / experiment_close for the follow-up or to app_experiment_create for app tests. The "quiet page is never refused" note does pre-empt a real agent concern (insufficient traffic), which is a partial when-not clause.

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

experiment_resultsRead an A/B testA
Read-only
Inspect

Visitors exposed and converted per variant (a conversion counts only at or after the visitor's first exposure), each variant's rate with its 95% interval, chance to beat the control, the lift and its interval, a sample ratio check, and the verdict: keep running, winner, control wins, no difference, or a broken split. Never call a winner the verdict does not. Without a key, every test in the workspace, running first. Free.

NameRequiredDescriptionDefault
keyNo
siteNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare this a read-only, non-destructive, closed-world call, so the safety profile is covered. The description does add genuine context beyond them: the conversion-counting window ('only at or after the visitor's first exposure'), the result ordering ('running first'), the no-cost note ('Free'), and the verdict-interpretation guardrail.

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

Conciseness4/5

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

Dense and largely front-loaded, with the payoff fields listed first and short imperative sentences closing it out. The long field enumeration is justified because no output schema exists, though the opening clause describes return content rather than stating the tool's purpose up front.

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

Completeness4/5

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

With no output schema, the description carries the full burden of describing returns and does so thoroughly, plus annotations cover the safety profile. The remaining gap is the unexplained 'site' parameter and no note on whether results are live versus cached.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for two parameters. The description partially compensates for 'key' by explaining the unkeyed behavior (all tests in the workspace, running first), which implies key selects one test. But 'site' is never mentioned, leaving half the surface undocumented in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource (an A/B test) and enumerates exactly what is read back: per-variant exposure/conversion counts, rates with 95% intervals, chance to beat control, lift, sample ratio check, and the verdict. It is clearly distinguishable from siblings like experiment_create or experiment_close, though the operative verb is implied rather than stated.

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

Usage Guidelines3/5

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

'Without a key, every test in the workspace, running first' gives a real usage rule for the keyed vs unkeyed case, and 'Never call a winner the verdict does not' constrains interpretation. However, no alternatives are named (experiment_close, app_experiment_list) and there is no explicit when-not-to-use guidance.

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

funnel_checkHome page and signup path checkAInspect

Whether a visitor understands the page, wants the product, and can get from the home page to signup and payment. Reads the live home page from outside and follows every button near the top: one that only scrolls the same page, a broken link, no signup within one click, a signup page with no form or sign in with button, a pricing page with no way to start or pay. Returns those misses (fail, or unsure when script decides), each with evidence, a fix and an id for meta.fixIds; funnel: the site's mapped funnels (funnels_save) with visitors at each step and leak, the move between two steps that loses the most visitors across them and what kind of move it is (mapped false until the agent maps them; then only 28 days of visitors, signups and payments); plays: what to try on that leak, best evidence first, never one that needs proof (testimonials, logos, user counts) the business may not have, nor one already shipped or skipped; judge: whether an A/B test can answer at this traffic or the change ships as a before and after on the same move; read: the page's words, the founder's list of what the product gets its customers (null until they give it once), and a script that measures the page at phone width; and walk: the checks only a browser can make (mobile-cta, after-signup, upgrade-path), for the agent to walk in the founder's Chrome without creating an account or paying. Call again with record for what the read and the walk found (copy checks: copy-understood, copy-value, copy-filler, copy-cut, copy-length, copy-missing, copy-visual; a miss about particular lines quotes them word for word, and lines not on the live page are refused), measure for the phone numbers before and after, outcomes for the founder's list, or skip for ids the founder will not fix. A shipped fix is hidden until the site is read again after it, and verify re-checks it on the live site: the buttons, and that the lines a copy fix changes are gone. Free.

NameRequiredDescriptionDefault
urlNoThe page visitors arrive on; default the home page
skipNoFinding ids (convert:...) or plays (play:<id>) the founder will not do: never shown again
recordNoWhat the read of the page and the walk in Chrome found, one entry per check
measureNoThe phone numbers from read.measure.script: before the changes, and after them on the preview
outcomesNoThe founder's own list of what the product gets its customers, in their words

TDQS

A4.1/5.0
Behavior5/5

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

With annotations only declaring readOnlyHint=false, openWorldHint=true and destructiveHint=false, the description carries real additional burden and does: it reads the live site from outside, never creates an account or pays, refuses lines not on the live page, hides shipped fixes until re-read, and is free. It even discloses that the funnel view holds only 28 days of visitors, signups and payments once mapped, which an agent cannot infer from annotations.

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

Conciseness2/5

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

Nearly every clause carries information, but the whole definition is one sprawling pseudo-sentence joined by semicolons, so the core purpose is not cleanly front-loaded. An agent must parse a dense chain of modes and return keys to find the call contract. The content earns its place; the structure does not.

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

Completeness5/5

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

This is a complex tool with five parameters, nested objects and no output schema, and the description still accounts for the return surface: misses with evidence, fix and id, funnel with mapped steps and leaks, plays, judge, read, and walk. It also names the checks the agent must perform in the browser (mobile-cta, after-signup, upgrade-path), so nothing essential to calling or interpreting it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so the baseline is 3, but the description adds genuine meaning: it ties each parameter to a mode (record from the read/walk, measure from read.measure.script, outcomes = the founder's own words, skip = ids never shown again) and explains the copy-check quoting rule and the refusal of lines not on the live page. It loses a point because the parameter discussion is threaded through a run-on sentence, making it harder to map back to individual properties.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete verb and scope: it reads the live home page from outside and follows every button near the top to check whether a visitor can get to signup and payment. The named failure modes (button that only scrolls, broken link, no signup within one click, pricing page with no way to pay) make the tool's job unmistakable. It never names the closest sibling (landing_check) or another alternative, so it stops short of a 5.

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

Usage Guidelines4/5

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

It spells out the operating modes and their triggers in a single chain: call again with record for what the read and the walk found, measure for the phone numbers before and after, outcomes for the founder's list, skip for ids the founder will not fix. It also states lifecycle rules (a shipped fix is hidden until the site is read again; verify re-checks it). It gives no explicit when-not-to-use or sibling routing, so it lands at 4 rather than 5.

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

funnels_saveSave a funnelA
Destructive
Inspect

Save a funnel you mapped from the site's code: the path most visitors take toward signing up or paying from one of the most visited pages (find those with analytics page_flow: the top pages, where visitors go next, what they click). Each step is a goal's definition: PAGEVIEW (a path, * for a wildcard), EVENT (an event name, or name@/path such as form_submit@/register, which t.js sends with no code on the site), CTA (the element's data-sf value, * for a wildcard), ENGAGED, REVENUE (trial, paid) or CHECKOUT (a visit back from a hosted checkout). Put other ways that count as the same step in any, and where you found each step in evidence (file:line). Steps count in order (strict, the default) within windowDays (default 7). The same name redefines a funnel; remove: true deletes it. It is counted from events already stored, so it returns its last 28 days at once: a step no one reached is usually a wrong pattern. Free.

NameRequiredDescriptionDefault
nameYesWhat the path is, e.g. "Home to signup", "Pricing to payment", "Free tool to signup"
stepsNoNeeded unless remove
removeNo
siteIdNo
strictNoSteps in this order (default true)
windowDaysNoDays from the first step to the last (default 7)

TDQS

A4.1/5.0
Behavior4/5

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

Discloses the two behaviors annotations cannot convey: reusing a name redefines the funnel (overwrite semantics) and `remove: true` deletes it, which matches destructiveHint=true. It also explains the evaluation model (counted from events already stored, returns its last 28 days at once) and that it is free, so an agent knows a save immediately yields results.

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

Conciseness3/5

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

The save/overwrite/delete mechanics are correctly front-loaded, but the body is a dense run-on with heavy parenthetical nesting that is harder to parse than it needs to be. The content earns its place; the packaging does not.

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

Completeness4/5

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

Covers step types, ordering semantics, defaults, deletion, and the fact that results are computed immediately from stored events — everything needed to invoke it correctly, especially since no output schema exists. Minor omissions (siteId, the 2-8 step bounds, the 90-day window cap) are left to the schema, which documents them.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Goes well beyond the 67% schema coverage by defining each step type operationally — PAGEVIEW paths with wildcards, EVENT names and the name@/path form that t.js sends with no site code, CTA data-sf values, ENGAGED, REVENUE, CHECKOUT as a return from hosted checkout. It also gives the purpose of `any` (alternate ways to satisfy a step) and `evidence` (file:line) plus the defaults for strict and windowDays.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource ("Save a funnel") and immediately narrows the scope to funnels mapped from the site's code, which separates it from funnel_check and goals_save well enough to choose between them. It does not name the siblings directly, so an agent still has to infer that funnel_check is the read-side counterpart.

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

Usage Guidelines4/5

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

Gives concrete discovery guidance (use analytics page_flow for top pages, where visitors go next, what they click) and a diagnostic rule of thumb ("a step no one reached is usually a wrong pattern"). It never states when not to use it or points at funnel_check for validation, 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.

goals_listList goals and funnelsB
Read-only
Inspect

The site's goals (SOFT or HARD) and funnels. A payment goal is proposed automatically from the site's own data when goals are listed. Free.

NameRequiredDescriptionDefault
siteIdNo

TDQS

B3.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds genuinely new context: the automatic payment-goal proposal triggered by listing, and the fact that the call is free. It omits auth/workspace scoping and pagination, so it is not a 5.

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

Conciseness4/5

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

Three short, front-loaded sentences with no padding: what it lists first, then the side effect, then the cost. The clipped 'Free.' fragment is terse but carries information, so nothing needs removing.

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

Completeness3/5

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

For a simple read-only list with one optional parameter and no output schema, the description covers what is returned and the notable side effect. However, it leaves siteId semantics and the behaviour when siteId is omitted entirely unaddressed, which is a real gap for an optional-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

SiteId is the single parameter and it is never mentioned in the description, while schema description coverage is 0%. The description therefore does not compensate for the undocumented parameter; nothing tells the agent what siteId is, whether it is required, or what a missing value defaults to.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource and scope precisely: the site's goals (SOFT or HARD) and funnels. An agent can tell what this returns without opening the schema. It does not differentiate itself from the sibling goals_save or funnel_check, so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no statement of when to call this versus alternatives, no prerequisites, and no exclusions. The only adjacent guidance is a side-effect note ('a payment goal is proposed automatically') and a cost note ('Free.'), neither of which tells the agent when this tool is the right choice.

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

goals_saveCreate or redefine a goalA
Destructive
Inspect

Create a goal, or redefine one with the same name: EVENT (an event name like signup, or name@/path for that event on one page: form_submit@/register is the signup form sent on /register, which t.js reports with no code on the site), PAGEVIEW (a path pattern like /welcome*), CTA (a data-sf value, * for a wildcard), ENGAGED, REVENUE (trial, paid), or CHECKOUT (a visit back from a hosted checkout such as Stripe or Dodo: a payment, seen without any code on the site; match is the return path pattern, * for any). Every goal you create is SOFT. Only the founder makes a goal HARD, in the results app, and the headline conversions count HARD goals once there are any; changing a HARD goal's definition puts it back to SOFT. Say why in note. Free.

NameRequiredDescriptionDefault
nameYes
noteNo
typeYes
matchNoNeeded except for ENGAGED and CHECKOUT
siteIdNo
valueCentsNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations flag destructiveHint=true, and the description earns that: it discloses that redefining a HARD goal resets it to SOFT, that every new goal is SOFT by default, and that only the founder can make one HARD. That is substantive context beyond the annotations; return format is the only notable gap.

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

Conciseness3/5

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

Purpose is front-loaded, but the body is one long run-on sentence dense with parenthetical examples, notably the multi-clause CHECKOUT explanation. Information-rich but structure could be tighter and clearer.

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

Completeness4/5

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

No output schema and only 6 params with low coverage, yet the description thoroughly covers goal types, match semantics, and soft/hard lifecycle. Missing only siteId, valueCents, and any return-value hint — minor given no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 17% (only `match` is documented), so the description carries heavy burden — and it does, explaining `match` semantics per type (name@/path, /welcome*, data-sf value, return path for CHECKOUT) and the purpose of `note`. It leaves siteId and valueCents unexplained, keeping it below 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create a goal, or redefine one with the same name') and goes further to enumerate every goal type. An agent can distinguish this from the goals_list sibling instantly.

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

Usage Guidelines4/5

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

Explains the upsert behavior (same name = redefine) and instructs 'Say why in `note`', giving clear usage context. It stops short of explicit when-not-to-use or naming goals_list as the alternative, so not quite a 5.

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

grow_answerThe founder's answer to a moveAInspect

Record yes or no to a move from today or record_action's next, by its key. A no rests the move for 7 days (30 after a second no), so it is not offered again tomorrow. For a yes, from says where the founder found it, so Shipfound learns how often the first three had what they wanted. seen: the moves shown on the next-five screen and not picked, which rest like the first screen's. said: what the founder typed in their own words instead of picking, word for word; Shipfound's ranking reads it as their direction from then on. Free.

NameRequiredDescriptionDefault
keyYesThe move's key
fromNoWhere the move was when the founder picked it: "first" (the first question), "more" (the next five), "all" (the full list), "typed" (they named it in their own words).
saidNoThe founder's own words when they typed an answer instead of picking, as they wrote them.
seenNoKeys of the moves printed on the next-five screen that the founder did not pick.
answerYes

TDQS

A4.2/5.0
Behavior5/5

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

Goes well beyond the annotations by disclosing state effects: a no rests the move for 7 days, 30 after a second no; 'seen' keys rest like the first screen's; 'said' text becomes the ranking's direction going forward. This is exactly the kind of downstream consequence an agent needs and 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.

Conciseness4/5

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

Front-loads the core action and each subsequent clause carries information about a distinct parameter or consequence. The trailing 'Free.' is wasted marketing text and the sentences are dense, but overall there is little filler.

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

Completeness4/5

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

No output schema exists, so the description should ideally hint at the response, which it does not. However, it fully covers the input semantics and the resulting state changes for a 5-parameter mutation tool, leaving only return-value shape unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 80%, and the description adds genuine meaning on top: what 'from' is used for (learning how often the first three had what they wanted), what 'seen' captures and its resting effect, and how 'said' is consumed verbatim. 'key' and 'answer' remain schema-only, which is acceptable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Record yes or no to a move') and anchors the input source by naming siblings ('from today or record_action's next'). The domain term 'move' is slightly jargon-heavy but the surrounding text makes the operation unambiguous.

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

Usage Guidelines4/5

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

Clearly frames the call as the follow-up to showing moves ('today' / 'record_action's next'), and explains the distinction between a yes and a no path. It lacks an explicit 'do not use this if...' exclusion, but the context of use is clear.

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

ideasFeature ideas, latestB
Read-only
Inspect

The latest feature ideas study: what people on Reddit and X ask for around this product, grouped into features it could add. Each idea has the problem in their words, the feature, the smallest version to ship first, what the site shows on it today, the effort (small, medium, large), how many different people are behind it (2 at least), their posts (link, subreddit or handle, their own words checked on the post) and its key (IDEA:). kind missing: the product does not do it; unsaid: the site shows it does, yet people ask as if no tool did, so the move is to say it. Ideas done (recorded with meta.idea) or skipped with ideas_skip are left out. Also whether one is running, when the next free one is, and the price of one now. Free.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already establish this is a safe, read-only, closed-world operation, but the description adds substantial context: the full field composition of each idea (problem, feature, MVP, effort, backer count, posts, key), the meaning of 'kind missing' vs 'unsaid', the exclusion of done/skipped ideas, and that run status, next-free slot, and current price are also reported. This goes well beyond the annotation hints.

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

Conciseness2/5

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

The description is a single dense paragraph that crams return-field definitions, taxonomy explanations, filtering rules, and pricing into one run-on structure with minimal front-loading. The definitions of 'kind missing' and 'unsaid' are buried mid-sentence, and the trailing 'Free.' is disjointed, making it hard to scan.

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

Completeness4/5

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

With no output schema and no parameters, the description carries the burden of describing returns, and it does enumerate the fields each idea contains plus the ancillary run/price info. It is fairly complete for a zero-arg read tool, though the structure makes it harder to extract than it should be.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters and the schema is empty, so there is nothing to document. Baseline 4 applies; the description correctly does not fabricate parameter detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource: the latest feature-ideas study aggregating what Reddit and X users ask for, grouped into features. An agent can tell this is a retrieval of feature ideas. However, it never explicitly differentiates itself from close siblings like build_ideas, ideas_run, or ideas_skip beyond noting that done/skipped items are excluded.

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

Usage Guidelines2/5

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

The description explains what is filtered out (ideas done via meta.idea or ideas_skip) but never states when to call this versus ideas_run, build_ideas, or other siblings. There is no 'use this when' guidance and no prerequisites, leaving the agent to infer the selection context entirely.

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

ideas_repliesThe people who asked for a featureA
Read-only
Inspect

Once a feature built from an idea is live (its PR merged, or verified), the people who asked for it can be told it shipped. Returns the idea, the work recorded for it (with the live link), and the idea's own posts still worth a reply: Reddit threads under 150 days old (Reddit archives at 180), X posts under 28 days, one per thread, 5 at most, none already drafted for by any run. The replies come from ideas_replies_find, which also searches Reddit and X for people asking for it now. Free.

NameRequiredDescriptionDefault
keyYesThe idea's key (IDEA:<slug>)

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true and no destructive behavior, and the description adds substantial context beyond them: the eligibility freshness windows (Reddit <150 days vs 180 archive, X <28 days), one post per thread, a maximum of 5, exclusion of threads already drafted for, and the fact that it is free. It does not discuss permissions, provenance of the 'live' signal, or pagination/refresh behavior, but the added behavioral detail is well above the annotation baseline.

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

Conciseness4/5

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

Front-loads the triggering condition and the outcome, then packs the filtering rules into one dense paragraph. Every clause (eligibility windows, dedup, cap, sourcing) carries information, but the single run-on sentence is somewhat hard to parse.

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

Completeness4/5

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

With no output schema, the description usefully enumerates what comes back (the idea, the recorded work with live link, the candidate posts). Combined with annotations covering the safety profile and full schema coverage of the one parameter, an agent has enough to decide and call it, though the trigger signal ('verified') is left undefined.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and there is a single required parameter (key, IDEA:<slug>) whose format is documented in the schema. The description refers to operating on 'the idea' but adds no syntax or constraints beyond what the schema already conveys. Baseline 3 is appropriate when the schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: it surfaces the people who asked for a feature, once the feature is live, and returns the idea, the recorded work with its live link, and the idea's own posts still worth a reply. It differentiates itself from the sibling ideas_replies_find by explaining what that tool does instead. It stops short of a crisp one-line scope statement (the sentence about what is returned carries the load), so 4 rather than 5.

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

Usage Guidelines4/5

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

Gives a clear precondition for calling it: only once a feature built from an idea is live (PR merged or verified). It also names the related sibling ideas_replies_find and what that one does, which helps route the agent. It does not give explicit exclusions (e.g., when not to call it, or how it relates to ideas_replies_save), so it is clear context without full when/when-not coverage.

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

ideas_replies_findFind and write the replies about a feature that shippedAInspect

Once a feature built from an idea is live: the run behind Assisted posts (the same as reach_find), aimed at this feature, for one platform. The idea's own posts still open for a reply go first, then Reddit's or X's search for people asking for it or stuck on the problem it solves now, ranked and checked the way reach runs are (X a week old at most; Reddit open threads, each subreddit's self-promotion rules). One reply each, written to that post and telling them it shipped, up to 5; never a thread with a draft or a recorded reply already. Runs in the background, about two minutes. Costs 8 credits, charged only when it writes drafts: tell the founder the price and wait for a yes. Returns the link to the drafts. Nothing is posted.

NameRequiredDescriptionDefault
keyYesThe idea's key (IDEA:<slug>)
platformYes

TDQS

A4/5.0
Behavior5/5

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

Annotations only say readOnly=false, openWorld=true, destructive=false; the description goes well beyond them by disclosing runtime (~2 minutes, background), cost (8 credits, charged only when drafts are written), a required human confirmation before charging, ranking/source constraints, and the reassuring 'Nothing is posted.' These are exactly the operational facts an agent needs before invoking.

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

Conciseness3/5

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

It is a single dense block with a broken opening clause ('Once a feature built from an idea is live: the run behind Assisted posts...') that reads awkwardly. It is information-rich and mostly front-loaded, but the two most actionable facts for an agent — the 8-credit cost and the wait-for-approval rule — are buried near the end.

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

Completeness4/5

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

With no output schema, the description does state the return value (link to the drafts) and covers side effects, timing, cost, consent, and eligibility exclusions. The only real gap is what happens on failure or when no eligible posts are found, which is minor for a draft-generation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%: 'key' is documented as IDEA:<slug>, but 'platform' has no schema description. The description partially compensates by implying a single platform ('for one platform') and by explaining platform-specific behavior (X a week old at most, Reddit open threads and self-promotion rules), which adds real semantics to the reddit/x enum.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a concrete verb+resource: find candidate posts and write one reply each about a feature that shipped from an idea, returning draft links. It orients the agent by calling itself 'the run behind Assisted posts (the same as reach_find)', which effectively distinguishes it from the plain ideas_replies sibling. The prose is convoluted, but the scope (this idea, one platform, up to 5 replies) is unmistakable.

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

Usage Guidelines4/5

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

It states a precondition ('Once a feature built from an idea is live'), an explicit exclusion ('never a thread with a draft or a recorded reply already'), and a mandatory consent flow ('tell the founder the price and wait for a yes'). It does not name a direct alternative sibling to route to when the precondition fails, which keeps it short of a 5.

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

ideas_replies_saveSave the replies to the people who askedAInspect

Save replies you wrote yourself to the people who asked for a feature that is now live, to Assisted posts in the results app, one draft per person (ideas_replies_find finds and writes them; use this only when the founder asks you to write one): each url one of ideas_replies' targets, one per thread, the text written to what that person said (X 280 characters as X counts them, links 23). Two replies that say much the same thing are refused. Returns the Assisted posts link, where each draft opens X's reply box filled in, or the Reddit thread to paste it in. The founder posts each one from there; you never open X or Reddit for them. Nothing is posted. Free.

NameRequiredDescriptionDefault
keyYesThe idea's key (IDEA:<slug>)
repliesYes

TDQS

A3.9/5.0
Behavior4/5

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

With annotations already covering the safety profile (readOnlyHint=false, destructiveHint=false), the description adds valuable context: one draft per person, duplicate replies are refused, the character-count rule, and crucially that 'Nothing is posted' and the founder posts each one. This clarifies the non-destructive write more than the annotations alone.

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

Conciseness3/5

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

Single prolonged run-on sentence stacked with parentheticals and nested clauses. It is front-loaded with the verb, but the middle is dense enough that the reader must re-parse the draft/limit/posting rules, hurting scanability.

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

Completeness4/5

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

No output schema exists, and the description fills that gap by explaining the return value (the Assisted posts link that opens X's reply box, or the Reddit thread). Combined with limits, duplicate refusal, and posting behavior, an agent has enough to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

At 50% schema coverage, the description compensates by explaining that each url must be one of ideas_replies' targets (one per thread) and that text is what the person said, bounded by X's 280-character counting with links counted as 23. It adds real constraints beyond the bare schema for the undocumented text field.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Save) and resource (replies you wrote yourself to the people who asked for a live feature), and explicitly distinguishes itself from the sibling ideas_replies_find ('finds and writes them'). The core action is clear, though the dense run-on phrasing makes the boundaries of the task slightly harder to extract than a crisp one-liner would.

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

Usage Guidelines4/5

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

Gives an explicit when-to-use condition ('use this only when the founder asks you to write one') and names the alternative tool (ideas_replies_find) that finds and writes replies instead. It stops short of a full when/when-not matrix but routes the agent to the correct sibling.

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

ideas_runRun a feature ideas studyAInspect

Search Reddit (the last year) and X (the last three months) for people talking about the problem this product solves, read the busiest threads' comments, read this site, and group what at least two different people ask for into features it could add, each with their posts as evidence. In the background, a few minutes; call ideas afterwards. Builder and Growth get one free a week (this runs it free when it is due); otherwise Costs 12 credits, charged only when it returns. Not charged when fewer than 10 posts can be read. At most one paid study a day. State the price before a paid one.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

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

With annotations only declaring readOnly/openWorld/destructive flags, the description carries the real operational burden: background execution, a few-minutes runtime, credit cost charged only on return, no charge under 10 readable posts, a weekly free tier, a daily paid cap, and a requirement to disclose price first. That is exactly the kind of side-effect and billing context annotations cannot convey.

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

Conciseness4/5

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

Front-loaded with the purpose and process, and every clause (sources, timing, pricing, quotas, follow-up) carries information. It is one dense run-on chain that would read better split into labeled sentences on cost and quota, so it is efficient but not maximally structured.

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

Completeness5/5

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

No output schema exists, and the description compensates by telling the agent that results arrive asynchronously via 'ideas'. For a zero-parameter, long-running, credit-consuming job, the description covers runtime, cost, free-tier rules, and how to retrieve results — 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline is 4. The description correctly does not invent parameter detail and instead spends its words on behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb + resource (run a feature ideas study) and enumerates the exact sources and method: Reddit (last year), X (last three months), busiest threads' comments, this site, grouped asks with evidence. An agent can distinguish this from the sibling 'ideas' (which retrieves results) without opening a schema.

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

Usage Guidelines4/5

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

Explicitly routes the agent to the follow-up tool ('call ideas afterwards') and gives the conditions that gate the call (free quota for Builder/Growth, otherwise 12 credits, one paid study a day). It does not state when to avoid the tool or name competing alternatives beyond the retrieval sibling, so it falls short of full when/when-not guidance.

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

ideas_skipLeave a feature idea outAInspect

The founder will not build this idea: it is never offered again, in this study or a later one. With undo, it comes back. Free.

NameRequiredDescriptionDefault
keyYesThe idea's key as ideas gives it (IDEA:<slug>)
undoNotrue to bring back an idea skipped before

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=false and readOnlyHint=false, so safety profile is partly covered. The description adds material behavioral context beyond them: the effect persists across this study and later ones, undo is the escape hatch, and the call is free (implying other actions may cost). It does not discuss permissions or failure modes, but the persistence/reversibility disclosure is genuinely useful.

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

Conciseness5/5

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

Four terse sentences, consequence front-loaded, no filler. 'Free' is the only terse fragment and it earns its place by communicating cost.

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

Completeness4/5

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

For a simple two-parameter, single-required write tool with no output schema, the description covers consequence, reversibility, and cost, and annotations cover safety. What is missing is minor: no error behavior or note on how to obtain the key (left to the schema).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so key (IDEA:<slug>) and undo are already fully documented in the schema. The description's 'With undo, it comes back' reinforces the undo parameter's effect but adds little beyond the schema's own description. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource and the concrete consequence: the founder will not build this idea and it is never offered again. An agent can tell it apart from ideas (which supplies the key) and from unrelated siblings, though the description never names a sibling to contrast against.

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

Usage Guidelines3/5

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

Usage is implied by the framing ('the founder will not build this idea'), which tells the agent the condition under which skipping applies. However there is no explicit when-to-use/when-not guidance and no reference to alternatives such as ideas_run or the sibling *_skip tools for routing.

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

index_statusWhich pages Bing hasAInspect

Reads Bing Webmaster Tools now, for the site's main pages (home and the pages Shipfound shipped, ten at most): whether Bing has each one (crawled with a 2xx), when it last crawled it and the status it got. ChatGPT search reads Bing's index. Needs bing_connect first. Free.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

Adds real context beyond annotations: live read ("now"), an authentication prerequisite, a hard cap of ten pages, and cost ("Free"). It does not say what happens when Bing is unconnected or how results are ordered, and the "Reads" framing sits awkwardly with readOnlyHint=false, though nothing claims mutation.

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

Conciseness4/5

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

Front-loaded with the action and returns, then terse fragments for the prerequisite and cost. Dense and mostly waste-free, though the run-on second clause packs the three returned fields into one long sentence.

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

Completeness4/5

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

With no output schema, the description does the work of explaining return values (indexed status via 2xx crawl, last crawl time, status code) and the prerequisite. Missing only failure behavior when bing_connect hasn't run and whether the cap is configurable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so baseline is 4. The description still usefully explains the implicit data scope (home plus the ten most recently shipped pages), which the empty schema cannot convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and source ("Reads Bing Webmaster Tools") plus the exact scope (home page plus up to ten shipped pages) and the fields returned (indexed?, last crawl, status). It is clearly distinct from siblings bing_connect (auth) and bing_submit (submission).

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

Usage Guidelines4/5

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

"Needs bing_connect first" gives an explicit prerequisite, and the ChatGPT/Bing rationale explains why to call it. It doesn't state exclusions (e.g. when to use visibility or search_positions instead of this Bing view), so not quite a 5.

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

keyword_researchKeyword researchAInspect

For one topic: search volume, CPC and difficulty for it and its related searches, the top 10 Google results (and where you rank), People Also Ask, up to 15 more searches around it (ideas, each with volume and difficulty; winnable is difficulty 30 or under, which a young site can reach the top 10 for), and the pages Perplexity cites with the brands it names. Pick a winnable idea with real volume over a hard one with more. Costs 4 credits, charged only when it returns. Nothing is charged when the data comes back empty.

NameRequiredDescriptionDefault
topicYesA keyword or a buyer question

TDQS

A4.1/5.0
Behavior4/5

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

Annotations give readOnlyHint=false, openWorldHint=true, destructiveHint=false; the description adds crucial cost behavior: 4 credits, charged only on success, nothing charged when data is empty. It also explains the meaning of the 'winnable' flag (difficulty <=30). That goes beyond the annotations, though it does not cover authentication 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.

Conciseness4/5

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

Front-loads the main outputs and keeps the cost model at the end. The single dense sentence is packed but readable; each clause carries information, though the list is long and could be slightly trimmed.

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

Completeness4/5

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

For a one-param read-heavy tool with no output schema and annotations covering safety, the description provides an unusually complete picture of the return payload and billing behavior. It lacks explicit when-to-use vs siblings and any mention of rate limits or auth, keeping it below 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents the single 'topic' parameter (string, 2-200 chars, 'A keyword or a buyer question'). The description reinforces that it is one topic and outlines the returned fields, adding context about what the topic yields, but the parameter itself is fully covered by the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (keyword research) and enumerates the exact outputs: search volume, CPC, difficulty, top 10 Google results, People Also Ask, related ideas, and Perplexity citations. This is unusually specific and distinguishes it from siblings like visibility, search_positions or build_ideas.

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

Usage Guidelines3/5

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

The description implies when to use it (for one topic, to find winnable keywords) and gives a selection heuristic ('Pick a winnable idea with real volume over a hard one with more'), but it does not explicitly compare to sibling tools such as build_ideas, visibility, or search_positions. Usage guidance is present but not framed as when-to-use vs alternatives.

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

landing_checkLanding page check (retired)AInspect

Retired. The home page is now read in full by the convert routine: call funnel_check and follow routines/convert.md (/shipfound:convert). Free; reads nothing.

NameRequiredDescriptionDefault
urlNo
skipNo

TDQS

A4.1/5.0
Behavior4/5

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

The description adds information the annotations do not carry — cost ('Free') and side-effect profile ('reads nothing') — on top of readOnlyHint=false, openWorldHint=true, destructiveHint=false. There is mild tension with readOnlyHint=false, since 'reads nothing' implies a no-op rather than a write, but the description does not affirmatively claim read behavior, so this is not a contradiction.

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

Conciseness5/5

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

Three terse clauses, front-loaded with 'Retired.' so the deprecation is the first thing read, followed by the redirect and the cost note. No sentence is wasted.

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

Completeness5/5

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

For a zero-complexity retired tool with no output schema, the description covers everything an agent needs: that it is unavailable, what to call instead, and that calling it costs nothing. Nothing actionable is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description offers no meaning for 'url' or 'skip'. Normally this would be a hard gap, but the parameters are moot for a retired tool; the deficit is mitigated by the fact that no agent should invoke it with any arguments.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states plainly that the tool is retired and names the replacement path (funnel_check + routines/convert.md). An agent can immediately tell this tool should not be selected, which is the only purpose clarity that matters for a deprecated entry. It stops short of a 5 because it never says what the tool originally did, so the two schema parameters remain semantically orphaned.

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

Usage Guidelines5/5

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

It gives an explicit when-not (do not use this) and an explicit alternative (call funnel_check and follow routines/convert.md / /shipfound:convert). Nothing is left to inference about routing.

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

launch_prepLaunch prep: taking part and the Product Hunt run-upBInspect

Everything before a launch, stored server-side. hnUser: the founder's Hacker News username, kept so the plan reads its karma daily and offers Show HN once it opens. topics: what the founder knows well enough to answer (up to 6), for finding threads. ihPosting: what the Indie Hackers new-post page showed in their Chrome (closed: "You can't create posts yet"). productHuntDay (YYYY-MM-DD): the launch day, which dates the Product Hunt run-up; done: a run-up step id the founder finished. threads (show_hn or indie_hackers): live threads where the founder's experience fits, minus the ones already shown or commented in, with the rules each comment draft keeps. Returns the gates, the run-up with today's step, and the threads. Free. Nothing is posted.

NameRequiredDescriptionDefault
doneNoA Product Hunt run-up step id the founder finished
hnUserNoThe founder's Hacker News username
topicsNoWhat the founder knows well enough to answer, in the words people use
threadsNoFind threads to take part in on this board
ihPostingNoWhat indiehackers.com/new-post showed in the founder's Chrome
productHuntDayNoThe Product Hunt launch day, YYYY-MM-DD, at least 14 days out

TDQS

B3.1/5.0
Behavior4/5

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

Annotations establish readOnlyHint=false, openWorldHint=true, destructiveHint=false, and the description usefully adds that state is kept server-side, the service is 'Free', and 'Nothing is posted' — real behavioral context beyond the structured hints. It omits auth/permission requirements, but the added traits are substantive.

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

Conciseness2/5

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

The body is one long run-on built from parameter fragments rather than a front-loaded statement of purpose, so the reader parses schema fields inside the prose. The information density is high, but the structure is poor for quick selection.

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

Completeness3/5

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

All six parameters are addressed and the return payload is summarized ('gates, run-up with today's step, threads'), which suffices given no output schema. However, the vague operation verb and absent usage guidance leave the agent under-informed for a 6-parameter, open-world write tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so baseline is 3; the description goes further by explaining why each value matters (hnUser drives daily karma reads and a Show HN offer, topics top out at 6, threads excludes already-shown/commented ones, the 'closed' enum means 'You can't create posts yet'). That is genuine added meaning over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening 'Everything before a launch, stored server-side' plus the closing 'Returns the gates, the run-up with today's step, and the threads' conveys a state-persistence-plus-computation tool, but the operative verb is ambiguous (save, fetch, or compute?) and the description never distinguishes it from siblings like launch_targets, plan, or today.

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

Usage Guidelines2/5

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

There is no explicit when-to-use statement and no named alternative. 'Everything before a launch' only implies the lifecycle stage; nothing tells the agent when to prefer this over launch_targets or today, nor any prerequisite ordering.

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

launch_targetsLaunch targetsA
Read-only
Inspect

The launch boards left for this product, only the ones that fit it: Show HN for something technical (pass hnUser, the founder's Hacker News username, and hn says whether Show HN is likely open to their account; a username stored with launch_prep is read without it), Indie Hackers when the buyers are founders (product page, then a launch post), DevHunt for developer tools, Product Hunt for software and apps, minus every step already recorded; notOffered names the ones that do not fit, with why. Each with its steps (where to submit, the fields the form takes, and how to record it), the founder's link with utm tags, what it needs, when to post, the board's rules, and what to do after. gates says which boards are closed to the founder's account (a closed step has closed: true; never fill it); open names the boards with a step open today; productHunt is the run-up, dated, once the day is picked; extras are the moves besides the launch (taking part, today's run-up step). readiness.blockers says what to finish first; readiness.freeTool is a free tool already shipped, the page Show HN links to. Free.

NameRequiredDescriptionDefault
allNoAlso the boards that do not fit this product, only when the founder asks for one by name (DevHunt stays developers only)
hnUserNoThe founder's Hacker News username, to check Show HN is open to it

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover the read-only, open-world, non-destructive profile, and the description adds real behavior: gates marks boards closed to the founder's account with closed: true and an explicit 'never fill it' instruction, hnUser returns a likely-open signal with a launch_prep fallback, and readiness.blockers/freeTool describe upstream prerequisites.

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

Conciseness3/5

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

The output is front-loaded and every clause carries information, but it is one sprawling run-on sentence dense with enumerated fields (gates, open, productHunt, extras, readiness) that is hard to parse on first read. Tighter structure would improve it without losing content.

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

Completeness5/5

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

With no output schema, the description carries the full burden and does so: it enumerates the returned fields, their meaning, the closed-step marker, and the readiness prerequisites. An agent has what it needs to interpret the response without a schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description goes further: it explains that hnUser yields a judgment about whether Show HN is open to that account and is read from launch_prep when omitted, and that `all` is only for founder-requested boards.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific resource and scope: the launch boards that fit this product, minus already-recorded steps. It also implicitly separates itself from launch_prep by explaining that a username stored there is read without needing hnUser. There is no crisp single verb, but an agent can tell what it returns.

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

Usage Guidelines3/5

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

It gives concrete guidance for the `all` parameter (only when the founder asks for a board by name) and when notOffered applies, but never states when to call this versus launch_prep, listing_targets, or today. Usage is implied by the return contents rather than stated.

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

listing_skipSkip a listing for goodAInspect

The founder will not list on this site or list (wrong fit, paid, rejected them): leave it out of listing_targets and today from now on. Takes the target's url, host or key. For a site they already listed on, use record_action instead, so it is checked. Free.

NameRequiredDescriptionDefault
siteYesThe target's url, host or key, e.g. smithery.ai or github.com/owner/repo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations declare the safety profile (write operation, non-destructive, closed-world), and the description adds durable-state context ('for good', 'from now on') plus cost ('Free'). It omits whether the skip is reversible or what gets returned, but it goes beyond the annotations meaningfully.

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

Conciseness4/5

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

Front-loaded with the outcome and the exclusion list, then the accepted parameter forms, then the alternative. Efficient, though the parenthetical '(wrong fit, paid, rejected them)' and slightly fragmented phrasing make it denser than it needs to be.

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

Completeness5/5

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

For a single-parameter, fully-documented mutation tool with no output schema, the description covers what it does, when to use it, when to use the sibling, the persistence of the effect, and the absence of cost. Nothing an agent needs to invoke it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema already documents 'url, host or key' with examples. The description's 'Takes the target's url, host or key' restates that without adding format or syntax detail, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action (permanently skipping a target site for listings) with a concrete scope effect: it will be left out of listing_targets and today from now on. It explicitly distinguishes itself from the sibling record_action, so an agent can route correctly without reading either schema.

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

Usage Guidelines5/5

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

Gives explicit when-to-use conditions (wrong fit, paid, rejected them) and names the alternative plus its triggering condition: for a site already listed on, use record_action so it is checked. Both the positive and negative cases are covered.

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

listing_targetsListing targetsAInspect

The next directories to list the product on: free to list (or free on a condition, stated in the note), open to this kind of product, not already recorded as listed, ranked by how often AI answers cite them, each with where to submit. Review profiles only when asked for in include; launch boards (Product Hunt, DevHunt, Show HN, Indie Hackers) are launch_targets. Costs 4 credits, charged only when it returns. With marketplaces true, instead the MCP registries, plugin lists, extension stores and GitHub awesome lists the product fits and is not recorded on yet. Free.

NameRequiredDescriptionDefault
countNoHow many; default 10
includeNoAlso review profiles (G2, Capterra) with "review". Launch boards are launch_targets; "launch" is kept for older plugins and adds nothing
marketplacesNoThe marketplaces and awesome lists instead of directories

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: the 4-credit cost, that it is charged only when it returns content, and the filtering logic that excludes already-recorded targets. This is meaningful beyond the structured hints.

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

Conciseness4/5

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

Purpose and ranking criteria are front-loaded and every clause carries information (filters, ranking, cost, mode switch). It is dense and somewhat run-on across its two mode sentences, but there is little filler to cut.

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

Completeness4/5

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

With no output schema, the description carries the burden of describing the return, and it does: each target comes with where to submit, and the marketplaces mode describes its own result shape. Minor gaps remain around pagination/count interaction with results, but overall it is sufficient to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real semantics: the marketplaces flag changes the entire result set (MCP registries, plugin lists, extension stores, awesome lists rather than directories), and it clarifies that include="launch" adds nothing while "review" pulls in G2/Capterra profiles.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (next directories to list the product on) with concrete inclusion criteria (free to list, open to this product, not already recorded, ranked by AI citation frequency). It explicitly separates itself from launch boards by naming launch_targets and distinguishes its two modes (directories vs marketplaces). An agent can tell exactly what this returns without opening the schema.

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

Usage Guidelines5/5

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

Gives explicit routing: review profiles only appear when requested via include, launch boards belong to launch_targets, and marketplaces=true switches to registries/plugin lists/extension stores/GitHub awesome lists. It also states the credit cost and that it is charged only on a successful return, so the agent knows the price of calling it.

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

notes_contextBuild in public notes: what to write aboutB
Read-only
Inspect

What a build in public note can be about (a milestone from the site's hard goals, a launch, a feature shipped, a free tool live, a skill published, this week's commits when repoCommits is passed), each source written once; which platforms are open (X every 3 days, Reddit every 14, by the audit); the flagship X Article (article: open every 14 days, whether the account has X Premium, format article or thread without Premium, and the sources it can be about); the founder's voice per platform if learned; and the subreddits that take these posts, with their rules. Free.

NameRequiredDescriptionDefault
featuresNoFeatures the founder shipped in the last 14 days, read from the repo (merged PRs, feat: commits), leaving out Shipfound's own PRs: what it does for the person using the product, the problem it solves when the code or PR says, and the PR link
repoCommitsNoCommits to the product in the last 7 days, leaving out Shipfound's own PRs

TDQS

B3.3/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the bar is lower, and the description still adds real behavioral context: cadence gates ('X every 3 days, Reddit every 14'), a 14-day article window, X Premium gating, per-source write-once semantics, and the cost ('Free'). These are non-obvious constraints that change how an agent should act.

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

Conciseness3/5

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

It opens with the purpose, and most clauses carry genuine information (necessary given there is no output schema), but it is a single sprawling sentence with nested parentheticals that is hard to skim or parse.

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

Completeness4/5

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

With no output schema, the description must describe the return payload, and it does so thoroughly — sources, open platforms with cadence, article rules and format gating, learned voice, and target subreddits with rules. For a two-parameter read tool with read-only annotations, this is close to complete; only explicit routing to sibling tools is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters and baseline is 3. The description does add one linkage by noting the commits source is active 'when repoCommits is passed', but it says nothing beyond the schema about the features array shape or limits.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description enumerates the contents a build-in-public note can draw on (milestones, launches, shipped features, free tools, skills, commits) but never states the verb plainly — it reads as a content dump rather than 'returns the inputs you need to decide what to write about.' No sibling is named, so an agent must infer the difference between this, notes_save, and notes_voice from the name alone.

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

Usage Guidelines3/5

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

Conditions are embedded in parentheticals — 'this week's commits when repoCommits is passed', 'format article or thread without Premium' — which implies when certain sources apply. But there is no explicit when-to-use-this-vs-alternatives guidance and no stated prerequisite for calling it before notes_save.

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

notes_saveSave a build in public noteAInspect

Save one note's drafts to Assisted posts in the results app, for the founder to post: x (one post, 280 characters as X counts them, links 23) and or reddit (a subreddit from notes_context, a title, a body). image is the path of the image you made, for the founder to attach. Or, on its own, the long form: article (a flagship X Article: title under 100 characters, a body of 600 characters or more in Markdown with an image line caption where each image goes, the 5:2 cover and the images) or thread (2 to 12 posts of 280 characters, each with its image or none, for an account without X Premium); premium is what you saw on X's Articles tab. The source is marked written, so it is never offered again (an Article on its own, so a source can have a note and an Article); saving again for the same source revises a draft not posted yet. Returns X's composer, the Articles tab, or Reddit's submit page. Nothing is posted. Free.

NameRequiredDescriptionDefault
xNo
redditNo
sourceYesThe source from notes_context
threadNoThe same story as an X thread, for an account without X Premium, saved on its own
articleNoA flagship X Article, saved on its own
premiumNoWhether the account has X Premium, from X's Articles tab just now

TDQS

A4.3/5.0
Behavior5/5

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

Beyond the annotations it discloses the key side effect — "The source is marked written, so it is never offered again" — plus the re-save-revises-draft rule, the fact that "Nothing is posted", the target destinations, and that the call is free. With destructiveHint/readOnlyHint already set, this adds exactly the state-change context an agent needs before calling.

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

Conciseness3/5

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

Almost every clause carries spec detail, so there is little dead weight, but the content is delivered as one dense run-on paragraph with parenthetical pile-ups, making it hard to scan. Front-loading is acceptable (purpose first), yet a bulleted variant list would have been far more usable.

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

Completeness4/5

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

For a high-complexity tool (6 params, nested objects, no output schema) it covers the variant semantics, the state mutation, and roughly what is returned ("X's composer, the Articles tab, or Reddit's submit page"). Remaining gaps are minor: it does not pin down the exact return payload or how conflicts between supplying x/reddit/article/thread are resolved.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 67% and the schema carries almost no prose (just min/maxLength), so the description does the heavy lifting: 280 characters "as X counts them", links counting 23, reddit needs subreddit+title+body, image is a local path, article title under 100 chars with a 600+ char Markdown body using ![caption](path), 5:2 cover, thread of 2–12 posts. This is meaning well beyond the structured fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ("Save one note's drafts") and enumerates the concrete output variants (x, reddit, article, thread), so an agent can tell what the tool produces apart from siblings like notes_context or notes_voice. It never explicitly contrasts itself with those siblings, and the phrase "Assisted posts in the results app" is vague, which keeps it short of a 5.

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

Usage Guidelines4/5

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

It gives real selection conditions: "on its own, the long form: article ... or thread", thread is "for an account without X Premium", and premium "is what you saw on X's Articles tab just now". It also explains the revise-on-re-save behavior. It stops short of 5 because it never states when NOT to use this tool or how it relates to the other notes_* siblings.

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

notes_voiceSave the founder's voiceA
Destructive
Inspect

Store how the founder writes on one platform, learned from their own posts (X: their profile in their Chrome; Reddit: posts or comments they paste, since Claude cannot open Reddit). Kept and reused for every note; saving again replaces it. Free.

NameRequiredDescriptionDefault
rulesNoDo and do not, one line each: 'all lowercase', 'no emoji', 'no hashtags'
handleNoTheir handle or username
sampleYesHow many of their own posts you read
summaryYesHow they write, in a few lines: length, casing, tone, what they talk about
examplesNoUp to 5 of their own posts, verbatim
platformYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations confirm it is a write with destructiveHint=true, and the description substantively explains the destruction: 'saving again replaces it' tells the agent prior saved voice is overwritten. It also notes persistence ('kept and reused for every note') and cost ('Free'), adding context beyond the annotation flags.

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

Conciseness4/5

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

Three tight sentences, front-loaded with what it does, then the platform caveats, then persistence and cost. The parenthetical platform detail is dense but earns its place; nothing is wasted.

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

Completeness4/5

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

For a 6-param mutation tool with no output schema, the description covers purpose, per-platform sourcing, overwrite behavior, and cost. It lacks only an explicit note on what a first save requires or returns, which is minor given no output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 83%, so the schema already documents most parameters (rules, handle, sample, summary, examples). The description clarifies the platform enum's sourcing behavior but adds no syntax or format detail for the required 'sample'/'summary' fields, so the baseline 3 holds.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Store how the founder writes on one platform'. The purpose (capturing writing voice) is clear and distinct from note-saving siblings like notes_save/notes_context, though it never names a sibling to route the agent explicitly.

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

Usage Guidelines3/5

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

Adds real operational guidance on how to source samples per platform (X profile in Chrome, Reddit paste because Claude cannot open Reddit), but gives no explicit when-to-use vs when-to-skip signals or alternatives among siblings.

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

offer_planFounding offerB
Read-only
Inspect

What a founding offer starts from: the founder's stage (zero: no payment seen yet), signups and payments in the last year, any founding offer already recorded (offer) and the one verified live (live: what a boost leads with), three kinds of offer to propose (a founding price, a lifetime deal, a pre-order) with when each fits, and the rules every offer keeps (the founder sets every number, the cap is enforced by the payment provider, no fake scarcity or urgency). Free.

NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered structurally. The description adds that the call is 'Free' and that the cap is provider-enforced with no fake scarcity, which is useful context, but it doesn't explain return format or how the listed data is delivered.

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

Conciseness3/5

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

Everything is packed into one long run-on sentence with nested parentheticals (stage, offer, live), making it dense and hard to parse. The opening phrase is front-loaded but the parenthetical stacking hurts readability.

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

Completeness3/5

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

There is no output schema, so the description carries the burden of explaining what the agent gets back. It enumerates the subject matter well but never clarifies the returned structure or how the founder stage/offer/live states map to output, leaving a gap for a zero-param read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the rubric this sits at the baseline of 4. The description lists conceptual 'inputs' (stage, signups, payments, offer, live) but these are not real parameters, so there is little parameter semantics to add or omit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description frames the tool as reference material ('What a founding offer starts from') and enumerates the data it covers (founder stage, signups/payments, existing offer, live offer), but never states a clear verb+resource action—it reads more like a topic outline than 'this tool returns/does X'. An agent can guess it surfaces founding-offer context, but the actual operation is vague.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance. The only routing hint is an oblique 'live: what a boost leads with', which gestures at boost_plan but does not name it or state the condition for choosing this tool over that sibling.

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

outbound_targetsPeople with the painAInspect

People who said in public in the last two weeks that they have the problem this product solves, asked for a tool like it, or complained about a tool named in its place: X posts and Hacker News comments, never Reddit (its users stay pseudonymous; reach answers there in the thread). One model call keeps only people who could buy (no vendors, marketers, agencies or bots). For each: the post and its words, why it shows the pain, an angle to open with, and the email they published on their own profile, or a work email found from their name and the site on their profile, only when verified; else a note and the thread to answer in. Never a guessed address. People written to (record_action, meta.type "outbound", meta.person) or skipped never come back. Costs 8 credits, charged only when it returns. for a new batch, charged only when it finds someone new; the last batch comes back free for a week, and a call with skip only records the skips, free.

NameRequiredDescriptionDefault
skipNoPeople the founder will not write to, by person ("x:<handle>", "hn:<user>"). Never offered again.
countNoPeople in a new batch. Default 10
freshNoFind a new batch even when last week's still has people in it

TDQS

A3.8/5.0
Behavior5/5

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

Goes well beyond annotations: specifies 8-credit cost charged only on return, free repeat batch for a week, free skip-only calls, permanent dedupe via record_action, a model-call filter excluding vendors/marketers/bots, and a strict never-guess-email policy. That is exactly the mutation/cost/irreversibility context 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.

Conciseness2/5

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

A dense run-on with an awkward fragment ('Costs 8 credits, charged only when it returns. for a new batch, charged only when it finds someone new') and repetition about charging. The core scope is front-loaded, but the sentence structure makes the cost rules hard to parse.

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

Completeness4/5

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

No output schema exists, yet the description enumerates the return payload per person (post and words, why it shows pain, opening angle, verified email or a note plus the thread). Combined with the cost and dedupe rules, an agent knows what it will get and what it costs; only cross-sibling routing is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so baseline is 3, but the description adds real param meaning: `skip` calls are free and permanent, `fresh` overrides last week's batch, and repeat batches are charged only when new people are found. Adds value over the schema's own descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific outcome: people who publicly said in the last two weeks they have the problem the product solves, on X and Hacker News, never Reddit. That scope and the Reddit exclusion clearly separates it from targets-style siblings. The verb is implied ('people who...') rather than named, keeping 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.

Usage Guidelines3/5

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

Describes when to use `fresh` (find a new batch) and `skip` (record skips free), and that written-to/skipped people never return. But it never names or contrasts the obvious siblings (outreach_targets, launch_targets, reach_find, boost_candidates), so selection among similar tools 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.

outreach_targetsLists AI answers readAInspect

The "best X" and "X alternatives" pages AI engines cite when buyers ask, on other sites and without this product on them, most cited first: for each, the buyer questions it is cited for, the author from the page's own byline, and their work email when one is found and verified. A page with no verified email says why; use the site's contact page in the browser then. Pages already written to (record_action with meta.type "outreach") or skipped never come back. Costs 4 credits, charged only when it returns. for a batch with new pages to look up, and nothing when they all list this product already; pages looked up before come back free, and a call with skip only records the skips and looks nothing up, free.

NameRequiredDescriptionDefault
skipNoPage URLs the founder will not ask: a vendor's own list of its rivals, a dead blog. Never offered again.
countNoPages in this batch. Default 5

TDQS

A3.8/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, openWorldHint=true) it discloses a rich behavioral profile: 4-credit cost charged only on a successful return, free for already-looked-up pages, free/no-op for skip-only calls, and persistent exclusion of written-to/skipped pages. This far exceeds what the annotations convey and matches readOnlyHint=false without contradicting it.

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

Conciseness3/5

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

Information-dense but poorly structured: the leading clause is a long appositive stack with no upfront verb, and the cost sentence breaks mid-thought ("charged only when it returns. for a batch with new pages to look up..."). It earns its length with useful facts but is not front-loaded or cleanly segmented.

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

Completeness4/5

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

With no output schema, the description carries the return-value burden well, enumerating the fields returned (questions, author byline, verified email), the fallback when no email exists, exclusion rules, and billing semantics. Minor gaps remain about exact output shape, but it is substantially complete for a 2-param read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are already documented. The description adds color on skip semantics ("never offered again") and confirms count behavior, but adds little syntax or format detail beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description concretely states what it returns: "best X"/"alternatives" pages that AI engines cite, ordered most-cited-first, with buyer questions, page author, and verified work email. The verb is implicit rather than front-loaded (it's a target/list-finder), but the resource and output content are unambiguous and clearly distinct from sibling finders like reach_find or launch_targets.

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

Usage Guidelines3/5

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

It gives situational rules (pages already written to via record_action or skipped never return; use the site's contact page if no verified email exists) but never states the core when-to-use trigger or contrasts it explicitly with sibling discovery tools. Usage is implied rather than framed as a decision.

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

planThe planB
Read-only
Inspect

The ranked queue for this week, built only from what the latest access audit unlocked: { rank, module, title, why, command, credits, evidence? }, and the founder's stage: zero (no payment seen yet) puts what wins a first customer first. evidence is what an item rests on: a number of the founder's own (signal), the play library's best grade for that kind of move (grade, library) and what it did for this founder before (past). Free. Work it top down; state the credits before running anything priced over 5.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already cover read-only, non-destructive, closed-world behavior. The description adds meaningful context beyond that: it says the tool is 'Free', discloses its dependency on the latest access audit, explains the output structure and evidence semantics, and warns to state credits before running anything priced over 5.

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

Conciseness3/5

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

The core purpose is front-loaded in the first clause, and there is no obvious filler. But the description is a single dense, semicolon-heavy sentence packed with undefined terms, which makes it harder to parse than its length suggests.

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

Completeness3/5

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

With zero parameters and no output schema, the description must carry the burden of explaining what comes back. It lists fields and evidence types, but key terms such as 'module', 'credits', and the founder-stage logic remain cryptic, so an agent gets only a partial mental model of the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters and the schema is empty, so there is no input surface to document. The description instead explains the returned fields and the meaning of 'evidence', which is appropriate for a no-argument tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States that the tool returns 'the ranked queue for this week' built from the latest access audit, which gives a recognizable resource and scope. However, it relies on dense jargon ('module', 'credits', 'founder's stage') and never distinguishes itself from siblings like today or visibility.

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

Usage Guidelines3/5

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

Provides process guidance ('Work it top down') and implies a prerequisite by saying the queue is built only from the latest access audit. It does not state when to call this instead of alternatives such as today or access, nor does it list exclusions.

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

reach_draftsReddit or X draftsA
Read-only
Inspect

The drafts on Assisted posts for one platform: whether the last run is still going or why it found nothing, how many are left to post and posted in the last 30 days, each draft's thread or post, and the link to the page. The founder posts from that page; never post or paste a draft yourself. Free.

NameRequiredDescriptionDefault
platformYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already establish readOnly/openWorld=false/destructive=false, but the description adds real value: it discloses that the tool reports whether the last run is still running or why it found nothing, that counts are windowed to 30 days, and that posting is explicitly out of scope. Pagination and output format are unstated, keeping it from a 5.

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

Conciseness3/5

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

The content is front-loaded and the colon-delimited enumeration is readable, but the whole definition is one sprawling sentence with an orphaned 'Free.' trailing at the end, which adds little and weakens structure.

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

Completeness4/5

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

For a one-parameter read-only tool with no output schema, the description carries the return-value burden well by enumerating the fields an agent will see. The missing piece is any indication of volume/pagination or ordering, but overall it is close to sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% for the single platform parameter, so the description must compensate. It implies scoping via 'for one platform,' which maps to the parameter, but never states the reddit/x values or what 'Assisted' means operationally — only partial compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource (drafts on Assisted posts) and scope (one platform), and enumerates what it returns: run status, counts left/posted in 30 days, each draft's thread/post, and page link. It doesn't name or differentiate against its likely siblings reach_find or reach_mark, so it stops short of 5.

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

Usage Guidelines3/5

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

It gives an explicit behavioral constraint — 'The founder posts from that page; never post or paste a draft yourself' — which tells the agent what not to do with the drafts. However it never says when to call this versus reach_find/reach_mark, so usage guidance is only partly covered.

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

reach_findFind Reddit threads or X conversationsAInspect

Start the run behind Assisted posts in the results app, for the platform the founder asked about. reddit: questions their buyers asked on Reddit this month, searched in the product's own communities first (the exact tool it plugs into, the buyer's exact job) with one broad sub beside them, a reply for each, plus a post of their own where a subreddit allows it, up to six drafts. x: posts from the last couple of days where their buyers talk about the problem the product solves, one reply each, up to five. Runs in the background, about two minutes; a run that finds nothing is not charged. Costs 8 credits, charged only when it finds drafts: tell the founder the price and wait for a yes. Returns the link to the drafts. Nothing is posted.

NameRequiredDescriptionDefault
platformYes

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnlyHint=false, openWorldHint=true, destructiveHint=false) by disclosing that the run is asynchronous (~2 minutes), that a run finding nothing is free, that it costs 8 credits charged only on success, that the agent must quote the price and wait for confirmation, and that nothing is posted. It also states the return value (a link to the drafts). This is exactly the operational context annotations cannot carry.

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

Conciseness4/5

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

Front-loads the action in the first clause and every sentence carries behavioral payload (cost, timing, confirmation gate, no posting). The platform branches are dense run-on sentences with nested parentheticals ('the exact tool it plugs into, the buyer's exact job'), which costs some readability but not information.

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

Completeness5/5

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

For a single-parameter, no-output-schema tool with open-world behavior, the description covers modality, duration, cost and billing trigger, the human-confirmation requirement, the return value, and the side-effect boundary ('Nothing is posted'). Nothing material is left for the agent to guess.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single enum parameter is undocumented in the schema, so the description carries the whole burden — and it does, defining precisely what 'reddit' searches (product communities plus one broad sub, up to six drafts) versus what 'x' searches (recent posts, up to five replies). An agent can choose the enum value from the description alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete action — starting an Assisted-post run in the results app — and spells out the two modes (reddit: buyer questions in the product's own communities plus a broad sub, replies, an optional own post, up to six drafts; x: recent posts about the problem, one reply each, up to five). The phrasing 'start the run behind Assisted posts' is product jargon that a fresh agent must infer, but the platform branches make the resource concrete. It does not explicitly distinguish itself from reach_drafts or reach_mark, which keeps it below a 5.

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

Usage Guidelines4/5

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

Gives an operative selection rule — 'for the platform the founder asked about' — and explains what each enum value will produce, so an agent knows which mode to pick and what to expect. It never says when to prefer this over sibling tools like reach_drafts or ideas_replies_find, so the alternative-selection layer is missing.

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

reach_markMark a Reddit or X draft posted or skippedAInspect

When the founder says they posted a draft (or will not), mark it, the same as the Posted and Skip buttons on Assisted posts, so it leaves the drafts waiting and is never offered again. A posted draft with the link of their reply is recorded as shipped (Claimed). Ids come from reach_drafts. Free.

NameRequiredDescriptionDefault
idYesThe draft's id from reach_drafts
urlNoThe link to the founder's own reply, when posted
statusYes
platformYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations establish this is a mutation (readOnlyHint=false) that is non-destructive and closed-world. The description adds real behavioral context beyond that: the draft leaves the waiting queue, is never offered again, and a posted draft with a reply link is recorded as shipped (Claimed). These consequences are not inferable from the annotations alone.

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

Conciseness4/5

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

Front-loads the trigger condition and effect in dense, purposeful sentences with no filler. The trailing 'Free.' is terse and adds a useful cost signal, though the run-on first sentence is slightly crowded.

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

Completeness4/5

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

No output schema exists, and the description covers the invocation trigger, side effects, and id provenance, which is nearly everything an agent needs for a non-destructive 4-param mutation. Only the platform parameter's meaning is left entirely to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 50% schema description coverage, the description usefully clarifies url semantics ('the link of their reply, when posted') and implicitly the status values. However, the platform enum is never explained and status enum values carry no prose, so it only partially compensates for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (mark) and resource (draft posted/skipped) and describes the effect: 'leaves the drafts waiting and is never offered again' and 'recorded as shipped (Claimed)'. It references reach_drafts as the id source but doesn't explicitly contrast against siblings like reach_drafts or shipped, so it's clear but not fully self-differentiating.

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

Usage Guidelines4/5

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

Gives a concrete trigger: 'When the founder says they posted a draft (or will not), mark it'. This is a clear condition for invocation and points to reach_drafts as the origin of ids. It stops short of naming an outright alternative to use instead, so 4 rather than 5.

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

record_accessStore the access auditAInspect

Store what the access audit found: one entry per area (repo, hosting, gsc, bing, gmail, reddit, x, github, tracking, assets, marketplace) with green, amber or red, what you saw, the one action that turns it green, and facts the plan reads (accountAgeDays, karma, framework). Free. The plan is built only from the latest audit.

NameRequiredDescriptionDefault
repoNo
areasYes
clientNo

TDQS

A4/5.0
Behavior4/5

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

Annotations declare it is a non-read-only, non-destructive, closed-world write. The description goes beyond that: it discloses cost ('Free') and, more importantly, the retention behavior ('The plan is built only from the latest audit'), which tells the agent that older entries are effectively superseded. It does not state auth requirements or exact overwrite semantics.

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

Conciseness4/5

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

Front-loads the core action, then enumerates the areas, then closes with retention and cost. The one-word 'Free.' sentence earns its place as a cost signal. The parenthetical area list mildly duplicates the schema enum but is useful at decision time.

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

Completeness4/5

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

For a nested write tool with no output schema, the description covers what to record, the entry shape, retention, and cost. Annotations handle safety. Minor gaps remain around auth and exact replacement behavior, but the definition is adequate to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the meaning, and it does: it maps each entry to status (green/amber/red), detail ('what you saw'), fix ('the one action that turns it green'), and facts, and names concrete fact keys (accountAgeDays, karma, framework). This meaningfully clarifies the nested entry structure beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Store') and resource ('the access audit found'), and the enumerated area list scopes exactly what gets stored. It is clearly a persistence/write tool, but it does not explicitly name or contrast against the sibling 'access' or 'record_action' tools, so an agent must infer the read-vs-write split.

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

Usage Guidelines4/5

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

Implies the trigger condition ('Store what the access audit found') and adds a key usage constraint: the plan reads only the latest audit, so re-recording supersedes prior data. It stops short of explicit when-not or alternative tooling guidance, but the context is clear.

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

record_actionRecord shipped workAInspect

Report anything you shipped with the founder: a PR (url = the PR, liveUrl = the page once deployed), a live page, a listing (liveUrl = our page it should link to), an index request, a post the founder published, or a Gmail draft. https URLs only. Free. It is stored as Claimed; call verify to check it (1 credit), and Claimed PRs, pages, listings and posts are re-checked daily for free for 30 days. Recording the same URL again updates it. Put fix ids in meta.fixIds for site fixes. A PR in a private repo is confirmed merged by record_merges, which grow runs from today's confirm.prs. A listing: record the listing page once it is live; recorded on the directory's submit or account page it waits as submitted, and the listing page recorded later replaces it.

NameRequiredDescriptionDefault
urlYes
kindYes
metaNo
titleYes
moduleYes
liveUrlNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations only declare it is a non-read-only, non-destructive, closed-world write; the description adds substantive behavior beyond that: items are stored as 'Claimed', re-recording the same URL updates rather than duplicates (upsert semantics), verification costs 1 credit, and Claimed items are re-checked daily for free for 30 days. It does not describe failure modes or what the response returns, but the credit and lifecycle details 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.

Conciseness3/5

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

The purpose is front-loaded in the first clause, but the body is a chain of run-on sentences that mixes artifact typing, credit pricing, re-check cadence, upsert behavior, and cross-tool flows without paragraphing. Nearly all content is useful, yet the density hurts scanability for an agent parsing it.

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

Completeness3/5

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

For a 6-parameter mutation tool with a nested free-form 'meta' object, no output schema, and 0% schema coverage, the description covers lifecycle and cross-tool flow well but leaves module selection and title conventions undocumented. An agent could still call it, but would be guessing on two required parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 6 parameters, so the description carries the burden. It does explain url vs liveUrl per kind and meta.fixIds for site fixes, and implies the kind values by enumerating artifact types. However, the 9-value 'module' enum and 'title' (min 3 / max 200) get no explanation at all, leaving meaningful gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a concrete verb+resource: 'Report anything you shipped with the founder,' then enumerates the accepted artifact types (PR, live page, listing, index request, post, Gmail draft). An agent can tell this is a write/record tool distinct from siblings like 'shipped' or 'verify', though the phrasing is conversational rather than crisp.

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

Usage Guidelines4/5

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

It gives real routing guidance: call verify to check a Claimed item (1 credit), use record_merges to confirm private-repo PR merges, and record listings on the directory submit/account page so they wait as 'submitted'. It stops short of explicit when-not-to-use or prerequisites such as workspace scope, so it is strong but not exhaustive.

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

record_mergesReport merged pull requestsAInspect

The pull requests gh read in the founder's repo (gh pr list --state all --json url,state,mergedAt), for the Claimed PRs Shipfound cannot see (today lists them in confirm.prs). Each merged one is stored as merged and checked at once (its live page, from outside), one closed without merging fails, open ones wait. PRs never recorded are ignored. Free.

NameRequiredDescriptionDefault
prsYes

TDQS

A3.5/5.0
Behavior4/5

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

Annotations (readOnlyHint=false, openWorldHint=true, destructiveHint=false) establish a non-destructive write, and the description adds meaningful behavior beyond that: merged entries are stored and checked against a live external page, closed-without-merge fails, open ones wait, unrecorded PRs are ignored, and it is free. This is solid state-transition disclosure, though it doesn't explain permissions or error output.

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

Conciseness3/5

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

It is a single dense run-on sentence loaded with parentheticals and internal jargon. The behavioral outcomes are front-loaded-ish but readability suffers, and some phrasing ('one closed without merging fails') is ambiguous.

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

Completeness3/5

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

For a write tool with no output schema, it covers per-state behavior adequately, but omits what the tool returns, auth requirements, and how failures surface, leaving real gaps for an agent invoking it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% for the single 'prs' array. The description compensates by naming the source shape (url,state,mergedAt via gh pr list), which conveys the field meanings, but it doesn't restate required fields or item limits.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (record merges) and describes the source data (gh pr list output for claimed PRs). It uses internal jargon like 'Claimed PRs Shipfound cannot see' and doesn't name sibling alternatives, but the core operation is identifiable.

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

Usage Guidelines3/5

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

It implies the context ('for the Claimed PRs Shipfound cannot see', referencing confirm.prs and today), which gives some when-to-use framing, but never explicitly says when to prefer this over siblings like repo_confirm, verify, or shipped.

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

reddit_noticesWhat Reddit said backAInspect

Record the emails from Reddit (noreply@redditmail.com) that grow's confirm.reddit asks you to read in the founder's Gmail: a subreddit removing a post or comment, a ban, or a ban lifted. A removal closes that subreddit to drafts until the founder says to try it again (reopen); a ban closes it for good, and the drafts still waiting there are skipped. Pass an empty list when there are none, so the read counts. reopen: subreddits the founder asked to try again after a removal; a ban cannot be reopened. Free.

NameRequiredDescriptionDefault
reopenNo
noticesYes

TDQS

A3.6/5.0
Behavior4/5

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

Beyond the annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=false), the description discloses real consequences: a removal closes the subreddit to drafts until reopen, a ban closes it for good and skips waiting drafts, and a ban cannot be reopened. This is strong behavioral context a caller could not infer from annotations alone. It does not contradict the annotations.

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

Conciseness3/5

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

The core purpose is front-loaded, and each sentence carries useful information about effects, empty lists, and reopen. But it is a single dense paragraph with run-on phrasing and internal jargon ('grow's confirm.reddit') that reduces readability without adding much value.

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

Completeness4/5

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

For a write tool with no output schema, the description covers purpose, downstream effects, the reopen parameter, and the empty-list convention, which is enough for correct invocation. Minor gaps remain on error behavior and the notices field details, but the nested schema carries those.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description explains the 'reopen' parameter (subreddits the founder asked to retry, bans excluded) and the concept of the notices list including its kinds, adding meaning beyond the top-level schema, which has 0% description coverage. However, the notices array fields (id, url, reason, at, subreddit) are only documented in the nested schema, so the description compensates partially rather than fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (Record) and resource (emails from Reddit's noreply@redditmail.com) and enumerates the notice types (post/comment removal, ban, ban lifted). The purpose is clear, though the internal jargon 'grow's confirm.reddit' forces a re-read and slightly muddies an otherwise precise statement.

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

Usage Guidelines3/5

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

It gives usage context for the empty-list case ('Pass an empty list when there are none, so the read counts') and defines reopen, but never states explicitly when to use this tool versus other paths or any exclusions. Guidance is implied through the confirm.reddit flow rather than spelled out.

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

repo_confirmConfirm the repoAInspect

Whether the repo you are in is this site's code, kept so nobody is asked again. Call it when workspace says the repo is UNCONFIRMED: by agent, yes only, with evidence (the file and line where you found the site's domain); by founder, their yes or no. The founder's answer always stands over yours. Free.

NameRequiredDescriptionDefault
byYesagent: you found the domain in the deploy or site config. founder: they answered you.
repoYesThe same `repo` you passed to workspace.
answerYes
productNoAnother of the account's products this repo is the code for: its id from workspace's `products` (or its domain). The answer is kept for that product and this session moves to it. Leave out for this session's own product.
evidenceNoWith by agent: the file and line that shows the domain, e.g. vercel.json: "alias": ["acme.com"]

TDQS

A4.2/5.0
Behavior4/5

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

Annotations tell the agent this is a write that is not destructive and not open-world. The description goes beyond that, disclosing that the answer is persisted ('kept so nobody is asked again'), that it is Free, and that founder input overrides agent input. It does not describe side effects on the session or what confirmation unlocks, so it falls 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.

Conciseness4/5

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

Three compact sentences with the trigger condition front-loaded after the purpose. Every sentence carries information (purpose, trigger, per-role usage, precedence, cost). The first sentence is somewhat dense and could be clearer, but there is no padding.

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

Completeness4/5

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

No output schema exists, and for a mutation-confirmation tool the description covers purpose, trigger, role-specific behavior, precedence, and cost. It does not spell out what changes after confirmation (e.g., session moving to the `product`), which the schema's product description partly covers, leaving a modest gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 80%, so most parameters are documented in-schema. The description supplements this by clarifying `by` semantics (agent requires evidence, founder gives a yes/no) and describing evidence content ('the file and line where you found the site's domain'). It adds real meaning over the schema for the agent's evidence path.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource — recording whether the current repo is this site's code — and the title 'Confirm the repo' reinforces it. It distinguishes itself from the `workspace` sibling by describing its role relative to workspace's UNCONFIRMED state. The lead sentence is slightly indirect ('Whether the repo you are in is this site's code'), which keeps it from a 5.

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

Usage Guidelines5/5

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

Explicit trigger: 'Call it when `workspace` says the repo is UNCONFIRMED.' It names the alternative path for agent versus founder ('by agent, yes only, with evidence...; by founder, their yes or no') and states a precedence rule ('The founder's answer always stands over yours'). The when-to-use condition is fully specified.

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

researchPeer study, latestB
Read-only
Inspect

The latest study of up to 8 products a step ahead of this one, each found through a lens (peers[].lens) or named by the founder (via "founder"; named lists the ones kept for every study): same_job (AI answers name it in this product's place), same_buyers (its buyers also pay for it), same_shape (sold and installed the same way). What each shows in public today (the first screen, the way to signup, pricing, free tools, launches, listings, top X posts) and how it started (read.early: its home page in the Wayback Machine's first captures, its launches with points, its early posts), and the patterns: today (two or more do it and this site does not) or early (an early move, one product enough when it has outside proof), each with the products' pages, their own words, a first step for this product, its key and the move it becomes. Patterns already done (recorded with meta.research) and products removed with research_skip are left out. Also whether one is running, when the next free one is, and the price of one now. Free.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior4/5

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

Annotations already declare read-only, non-destructive, and non-open-world behavior. The description adds useful context beyond that: it excludes patterns already recorded with meta.research and products removed via research_skip, and states the study is free and reports current run status.

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

Conciseness2/5

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

The definition is a single dense paragraph with nested parentheses and jargon such as 'same_job', 'meta.research', and 'the move it becomes'. It front-loads the resource but then becomes difficult to parse; restructuring into shorter sentences or bullets would preserve the content with far less cognitive load.

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

Completeness3/5

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

For a complex research tool with no output schema and zero parameters, the description does cover substantial return content: peer lenses, public evidence, early history, patterns, exclusions, run status, and pricing. Still, it does not clarify the shape or ordering of the returned study, leaving an agent unsure how to consume the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero input parameters, so the baseline is 4. References to peers[].lens, founder, meta.research, and research_skip are stored-data fields rather than call parameters, so no additional parameter semantics are required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies a specific resource: the latest peer study of up to 8 products, scoped by lenses and pattern types. However, the core action is implied rather than stated with a clear verb, and the dense noun-heavy phrasing makes it harder to distinguish from siblings such as research_run.

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

Usage Guidelines2/5

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

There is no explicit instruction on when to call this tool versus research_run or research_skip. The note that it reports whether a study is running, when the next free one is, and its price hints at pre-run checks, but the agent must infer the decision rule.

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

research_runRun a peer studyAInspect

Find up to 8 products a step ahead of this one (the same job, the same buyers, sold the same way), read what each shows in public today and how it started, read this site the same way, and find what it can learn from them, each with evidence, a first step and the move it becomes. In the background, a few minutes; call research afterwards. Needs a finished AI visibility check. Builder and Growth get one free a week (this runs it free when it is due); otherwise Costs 12 credits, charged only when it returns. Not charged when fewer than 2 such products can be read. At most one paid study a day. State the price before a paid one. domains: products the founder has in mind, by domain or URL; they are studied first in this study and every one after it (at most 5 kept, the newest last).

NameRequiredDescriptionDefault
domainsNoProducts the founder named when asked which ones they have in mind, by domain or URL. Leave out when they named none.

TDQS

A4.1/5.0
Behavior5/5

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

With annotations already declaring a non-destructive, open-world, write-style async operation, the description adds substantial behavioral detail: runs in the background for a few minutes, costs 12 credits charged only on return, free when fewer than 2 products can be read, weekly free tier for Builder/Growth, and one paid study per day. These are exactly the traits an agent needs before invoking a costly async job.

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

Conciseness3/5

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

The whole definition is a single dense run-on paragraph that packs purpose, cost, gating, and parameter semantics into one block, which hurts scanability. Most sentences carry real information, but pricing and tier rules could be broken out or tightened.

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

Completeness4/5

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

There is no output schema, but the description tells the agent to call research afterwards for results, and it covers async timing, cost, gating, and the sole parameter's persistence. That is nearly complete for an agent deciding and calling the tool; only the exact return shape is left implicit, which is acceptable given the explicit retrieval step.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description earns extra by explaining that domains are studied first and persist into every later study, with at most 5 kept newest-last, adding persistence and ordering semantics the schema does not convey. It also clarifies to leave it out when none were named.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verbs and resources — find up to 8 products a step ahead, read what each shows publicly and how it started, read this site, and surface learnings with evidence and a first step. An agent can tell this is the 'deep peer study' tool. It doesn't name sibling alternatives (e.g. research_skip) explicitly, though 'call research afterwards' implicitly distinguishes the retrieval step.

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

Usage Guidelines4/5

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

Explicit prerequisites and constraints: 'Needs a finished AI visibility check', 'call research afterwards', 'At most one paid study a day', and 'State the price before a paid one.' This gives clear when-to-call and gating context. It lacks an explicit statement of when NOT to use it versus siblings like research_skip.

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

research_skipLeave a product out of peer studiesAInspect

Remove a product the founder says is not like them (sells to other buyers, is far bigger, is not a product at all) from this study's patterns and from every study after it, by its domain or a URL on it. With undo, it can be studied again. Free.

NameRequiredDescriptionDefault
undoNotrue to bring a product back that was removed before
domainYesThe product's domain as research gives it (peers[].domain), or any URL on it

TDQS

A3.9/5.0
Behavior4/5

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

Annotations declare this is a non-readOnly, non-destructive, closed-world write, so the safety profile is partly covered. The description adds the non-obvious behavioral facts annotations cannot convey: the removal is persistent across every future study, it is reversible via undo, and it is free. Return/response behavior is left unstated.

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

Conciseness4/5

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

The core action and its scope are front-loaded in the first sentence, and the two short trailing sentences cover reversibility and cost. The long parenthetical of examples is dense but earns its place as selection criteria.

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

Completeness4/5

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

For a two-parameter mutation with no output schema, the description covers what is removed, the scope of the effect, how to identify the target, and how to reverse it, with annotations carrying the safety profile. Only the response shape is unspecified, which is minor here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema, including that domain accepts 'any URL on it'. The description's 'by its domain or a URL on it' and 'With undo, it can be studied again' restate the schema rather than extend it, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('Remove a product... from this study's patterns and from every study after it') and even names the identifying handle (domain or URL on it). It is clearly the research-side skip tool and not confusable with research/research_run, though it never names a sibling to route against.

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

Usage Guidelines4/5

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

It supplies concrete when-to-use criteria ('sells to other buyers, is far bigger, is not a product at all'), which is exactly the judgment call an agent needs to make the skip. It does not state when NOT to use it or name an alternative path (e.g. listing_skip for non-product entities).

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

search_positionsSearches your site almost winsAInspect

The Google searches this site ranks in the top 20 for (US), from an index of Google results that is refreshed every few weeks: targets are the ones at 4 to 20, most searched first, each with its page, monthly searches and difficulty; changes is what moved since the last check. Lift one target per PR on the page that already ranks. Costs 2 credits, charged only when it returns. Nothing is charged when the site ranks for nothing yet.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

Beyond the annotations, it discloses the credit model (2 credits, charged only on a successful return, free when the site ranks for nothing), the US-only geographic scope, and the index refresh cadence ('every few weeks'). That is genuinely useful operational context; it stops short of explaining auth needs or exactly what fields `changes` carries.

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

Conciseness4/5

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

A single dense paragraph, front-loaded with the resource and scope before moving to output shape and cost. Every clause carries information, though the colon-heavy listing of output fields makes it slightly harder to scan than a short structured breakdown.

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

Completeness4/5

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

With no parameters and no output schema, the description correctly shoulders the burden of explaining what comes back (targets, changes, their fields) plus cost and cadence. The main gap is the absence of when-to-use guidance against overlapping visibility/keyword siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. The description usefully spends its space on output semantics instead, naming the `targets` and `changes` keys and the sub-fields (page, monthly searches, difficulty), which partially compensates for the absence of an output schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource and scope: 'The Google searches this site ranks in the top 20 for (US)', and further splits the output into `targets` (ranks 4–20) and `changes`. This is far more specific than sibling names like `visibility` or `keyword_research` and lets an agent tell what the tool returns without opening anything.

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

Usage Guidelines3/5

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

It gives a follow-up action ('Lift one target per PR on the page that already ranks'), which implies the tool's role in a workflow, but never states when to prefer it over overlapping siblings such as `visibility`, `visibility_run`, or `keyword_research`. Usage is implied rather than routed.

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

seo_crawlCrawl the site's pagesAInspect

Read every page in the sitemap, the ones search shows most first, up to 60: what each returns, noindex and canonicals, titles (too long, shared, the page's best search not at the start), H1s, thin pages, links that lead nowhere, Core Web Vitals for the top pages, and which of the pages AI answers lean on the site has (a "what is" page, an AI info page, comparisons, integrations, use cases). Free; kept for seo_set.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations set readOnlyHint=false, openWorldHint=true and destructiveHint=false; the description earns credit for explaining the non-read-only flag via 'kept for seo_set' (results are persisted), and for disclosing the free/cost profile and the 60-page cap. It omits crawl duration, caching/re-run behavior, and failure handling for unreachable sites.

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

Conciseness4/5

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

Front-loaded with the core action and scope before the long extraction list, and it is a single efficient sentence. The middle enumerative clause is dense and reads like a checklist, but each item adds real signal about what the crawl checks.

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

Completeness4/5

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

For a no-parameter, no-output-schema crawl tool, the description carries nearly the full weight and does so by enumerating the outputs an agent would otherwise have to guess. Remaining gaps are runtime expectations and exactly how the stored results are consumed by seo_set.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so the baseline is 4. The description consistently implies the target site comes from the workspace/record context rather than an argument, which is useful, but it never states this explicitly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read every page in the sitemap') plus a precise scope cap ('up to 60', prioritized by search visibility). It then enumerates exactly what is extracted (status codes, noindex/canonicals, title/H1 issues, thin pages, broken links, CWV, AI-answer page coverage), making it unmistakable versus siblings like seo_read or index_status.

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

Usage Guidelines4/5

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

Signals when it fits into the workflow — 'Free; kept for seo_set' tells the agent this is the free collection step whose results feed a later setter. It does not explicitly state when NOT to use it or name seo_read as the lighter alternative, so it falls short of full routing guidance.

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

seo_programmatic_checkCheck a programmatic page setA
Read-only
Inspect

Before a set of pages from one template ships: every page must carry its own data (a data field whose value repeats on no more than a fifth of the pages), Search Console must show people search the pattern (three searches or more), and the set goes out at most one page a day. Google's 2026 spam and core updates hit templated pages that only swap a name. Free.

NameRequiredDescriptionDefault
pagesYes
patternYesThe search pattern, {field} for the varying part: "{tool} integration for {app}"
dataFieldsYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish read-only, closed-world, non-destructive behavior. The description adds concrete thresholds (data repetition <= 1/5, >= 3 searches, <= 1 page/day) and cost ('Free'), but does not explain what the check returns or how failures are reported.

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

Conciseness4/5

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

The criteria are front-loaded after a clear trigger clause, and the rationale/cost sentence is compact. The phrasing is dense but not padded.

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

Completeness3/5

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

No output schema exists, so the description should ideally say what a caller gets back; instead it only lists the pass criteria. It is sufficient to understand the check's intent but incomplete for interpreting results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is low (33%), with only pattern described in the schema. The description conveys what dataFields are used for (uniqueness threshold) and what pattern represents (search demand), but it does not explain the pages array shape or how dataFields map to page fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource (a set of pages from one template) and the three validation criteria, making clear this is a pre-ship check. It does not explicitly contrast with sibling checkers like check_content or landing_check.

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

Usage Guidelines4/5

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

It gives a clear trigger: use before a set of pages from one template ships. No exclusions or named alternatives are provided, so it stops short of full 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.

seo_readRead the site's search dataAInspect

Read what Google and Bing already show for the site, last 28 days against the 28 before: per search and page, clicks, impressions, click rate and position. Google from rows the agent read in the founder's browser, where they are signed in to Search Console (Performance, 28 days: each top page's searches), and prev (each page's clicks the 28 days before); without rows, Shipfound's own Search Console read where it already has access. Bing through its stored key. Free; the reads are kept for seo_set and grow.

NameRequiredDescriptionDefault
prevNo
rowsNoRead in the founder's browser

TDQS

A3.8/5.0
Behavior2/5

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

The description details specific access behaviors (Founder's browser SCons vs. Shipfound's stored key), which is highly valuable. However, it contradicts the provided `readOnlyHint: false` annotation, as this is fundamentally a read/retrieval operation, causing a major inconsistency in tool behavior disclosure.

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

Conciseness3/5

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

While effective, the description is overly verbose. The necessity of explaining the complex data acquisition methods (browser sessions vs. stored keys) bloats the structure, sacrificing conciseness for necessary operational context.

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

Completeness4/5

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

It is highly complete regarding the mechanics of the read operation. Even without an output schema, the description explains exactly what is being pulled and where the data comes from, providing sufficient context for an agent to execute the function correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Given the 50% schema description coverage, the description adds substantial semantic value by explaining that `rows` and `prev` represent two different time windows and data sources (Search Console performance metrics vs. historical clicks/impressions). This bridges the gap left by the sparse schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The purpose is extremely clear: to read and compare site search data across Google and Bing. It precisely defines the metrics and the comparison logic (28 days against the preceding 28 days), distinguishing itself from sibling tools like `seo_set`.

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

Usage Guidelines4/5

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

It clearly indicates the specific performance metrics (clicks, impressions, CTR, position) and the scope (Google and Bing). It guides the user on the comparison timeframe, making it easy to know *when* to invoke it for performance review.

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

seo_setThis week's SEO and AI search workA
Read-only
Inspect

The week's set, picked from the stored search reads (seo_read), the crawl (seo_crawl) and the latest AI visibility run, so the founder does not choose item by item: title rewrites with the most clicks to win back, lifts onto page one, internal links anchored in each target's own best search, a refresh of a page that lost clicks, a new page for a search no page owns, the site fixes, a "what is" page and an AI info page when missing, AI answers lost with their gap, and Bing. Each action says its routine step and what to record (record_action meta), so it is read at 28 and 56 days against the whole site. Also the reads of changes shipped before. Free.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false), so the bar is lower; the description still adds real context: each action carries its routine step and a record_action meta note so results are read at 28 and 56 days against the whole site, that previously shipped changes are included, and that the call is 'Free'. It does not describe ordering of the set or output volume, but the behavioral picture is substantially richer than the annotations alone.

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

Conciseness3/5

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

Purpose is front-loaded in the opening clause and there is no filler boilerplate, but the entire description is one long run-on sentence whose mid-section is an eight-item enumeration of output contents. Some of that list earns its place because there is no output schema, yet the density makes it hard to scan quickly.

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

Completeness5/5

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

With no parameters, no output schema and annotations covering safety, the description carries the full burden of explaining what comes back — and it does: sources, action categories, per-action step and record_action meta, the 28/56-day evaluation window, prior shipped-change reads, and cost. An agent has enough to call it correctly and know what to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. There is nothing parameter-level for the description to compensate for, and it introduces no confusing implicit inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description makes clear this tool assembles the week's prioritized SEO/AI-search action set, drawn from seo_read, seo_crawl and a visibility run — which distinguishes it from those sibling source tools. However, it is written as a noun phrase with no explicit verb ('the week's set'), so the agent must infer that this is a read that produces a curated work list.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: 'so the founder does not choose item by item' hints this is the default entry point instead of picking tasks manually, and it names its upstream sources. But there is no explicit 'use this when…, use X instead when…' guidance, and the many sibling tools (today, plan, seo_read, site_fixes) are never addressed as alternatives.

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

shippedShipped workB
Read-only
Inspect

Every recorded action with its state (CLAIMED, VERIFIED, FAILED) and what the last check saw. Free.

NameRequiredDescriptionDefault
stateNo
moduleNo

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds two useful behavioral facts: the enumerated action states and that it reports 'what the last check saw', plus a 'Free' cost disclosure. It does not cover pagination or result shape, so it sits at a solid 3 against the annotation baseline.

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

Conciseness4/5

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

Two short, front-loaded sentences with no padding; the content of the result is stated first. The 'Free.' fragment is terse and slightly cryptic but still informative.

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

Completeness3/5

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

For a no-required-param read tool this is mostly adequate: it says what is returned and the possible states. However, with no output schema and 0% schema coverage, the unexplained module filter and the vague 'what the last check saw' leave gaps an agent would want filled.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry parameter meaning. It echoes the state enum (CLAIMED/VERIFIED/FAILED), which is already structured data and earns no credit, while the module filter and its nine enum values are never explained. Filtering semantics remain undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description conveys a clear resource — recorded actions with their states and last-check observations — so an agent understands this is a read/list tool. The verb is implicit ('Every recorded action'), and it does not distinguish itself from siblings like record_action or verify, but the resource is specific enough to act on.

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

Usage Guidelines2/5

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

No when-to-use, when-not-to-use, or alternative is named. The trailing 'Free' hints at cost but gives no selection guidance relative to the many sibling query tools (record_action, verify, tracking_check).

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

sign_inSign inAInspect

Sign this session in to Shipfound from the chat. Signed out, the first call returns a link and a code: open the link in the founder's browser and print it too, ask them to check the code matches, pick the site and choose Allow, then call sign_in again. Each later call waits up to 40 seconds for their answer. Pass device (the hash the plugin's device script prints) and the same Allow signs in this machine for every later session too. Signed in, it says which site this session works on. Free.

NameRequiredDescriptionDefault
clientNoWho is asking, shown on the approval page. Default: claude-code
deviceNoSHA-256 (hex) of this machine's device secret, from the plugin's device script. Never the secret itself.

TDQS

A4.1/5.0
Behavior5/5

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

Adds substantial behavior beyond the annotations, which only mark it non-read-only/non-destructive/non-open-world. The description discloses a blocking wait of up to 40 seconds, a two-phase link/code approval flow, the persistent side effect that passing device plus Allow signs in the machine for all later sessions, and what is returned when already signed in. That is rich, decision-relevant context.

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

Conciseness4/5

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

Front-loaded with the core purpose, then walks the flow in order. It is dense with run-on clauses ('...pick the site and choose Allow, then call sign_in again') but nearly every clause carries procedural information. Minor redundancy in the Signed out / Signed in framing, but no filler.

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

Completeness4/5

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

For a 2-param tool with no output schema, the description covers the flow, the blocking behavior, the return contents (link, code, and which site the session works on), and the persistence side effect. It is essentially complete for calling correctly, with the only real omission being the client parameter's role.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description reinforces device (the hash the plugin's device script prints) and adds the consequence that passing it signs in the machine for every later session, which goes slightly beyond the schema. However it never mentions the client enum parameter at all, so the added value over the schema is modest.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a concrete verb+resource: 'Sign this session in to Shipfound from the chat.' It is clearly a session-authentication tool, readily distinguishable from sibling reads like access, record_access, and workspace. It stops short of explicitly naming how it differs from those siblings, so it lands at 4 rather than 5.

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

Usage Guidelines4/5

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

Gives clear invocation sequencing: the first call returns a link and code, the agent should have the founder approve, then call sign_in again; subsequent calls block up to 40 seconds. That is strong when/how guidance for a multi-step flow. It does not name alternatives or state when NOT to call it, so not a 5.

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

site_fixesSite fixesAInspect

Audit the live site the way AI crawlers and Google read it (robots rules for AI crawlers, firewall, rendering, indexing, canonicals, page titles and descriptions, structured data, sitemap, llms.txt, internal links to key pages, share images, answer pages) and return fix specs { id, theme, page, issue, evidence, fix } grouped by theme, one PR per theme, minus fixes already shipped. Costs 6 credits, charged only when it returns. Nothing is charged when it finds nothing to fix. When you record the PR, put the fix ids in meta.fixIds so they are not suggested again. The robots fix is the whole corrected robots.txt, with a note on each crawler it changes for the PR. Training crawlers (GPTBot, ClaudeBot, CCBot...) are the founder's call: while they have not answered, that fix carries fix.choices, the whole file for allow, block and keep; ask, use the one they pick, and put their answer in the PR's record as meta.training so later checks follow it.

NameRequiredDescriptionDefault
urlNoA page on this workspace's site. Default: the homepage
trainingNoThe founder's answer on training crawlers: allow (let them in), block (keep them out), keep (leave robots.txt as it is for them). Kept for later checks; left out, the last answer stands

TDQS

A4.1/5.0
Behavior5/5

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

The description goes well beyond annotations by disclosing credit cost, that charging only occurs when fixes are returned, idempotency behavior around already-shipped fixes, the PR-per-theme model, and the special workflow for training crawler choices. This adds substantial operational context without contradicting the annotations.

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

Conciseness4/5

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

The description is long but appropriately dense for a complex audit tool, and the main purpose and return shape are front-loaded. It could be more scannable, but most sentences carry operational value rather than repetition.

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

Completeness5/5

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

There is no output schema, so the description must explain return values and side effects; it does so by describing the fix-spec shape, grouping by theme, PR-per-theme behavior, and filtering of already-shipped fixes. It also covers cost, persistence, and training-crawler follow-up, making it complete for an agent to call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema documents both parameters. The description still adds useful semantics for training by explaining that the answer is persisted and affects later checks, and clarifies the default URL behavior indirectly through the audit context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: audit the live site as AI crawlers and Google read it, then return structured fix specs. The enumerated checks make the tool's scope clear, but it does not explicitly distinguish itself from adjacent tools such as check_content or index_status.

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

Usage Guidelines3/5

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

It implies the tool is used to produce fix specs and gives workflow guidance for recording PRs and training-crawler answers. However, it does not explicitly say when to use this instead of sibling audit or check tools, nor does it state when not to use it.

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

todayTodayCInspect

What /shipfound:grow shows: what happened since the founder's last session (AI visits, AI crawler hits, conversions, what got verified or failed), what is due (tests with a verdict, shipped work to verify), the one move to offer, the next two (after), every other move with work behind it (more), and every other kind of move Shipfound makes (catalog, with ready false and what it needs when something comes first), so a founder can reach any of it. focus is what holds the product back this week, read from its numbers, and the three choices go after it. Each move's why is the reason to do it for this product today, chosen and written over the founder's own results, the people who asked, the peer study and the play library (what it does is in does when why is that reason); gets is who it reaches and the first sign to watch for; then is what it leads to once its own work is done; rests is what it rests on in one line. It looks first, from stored data: a move is offered only when there is concrete work behind it (checks still failing on the live site, directories not listed yet, the page worth writing with its volume), and not the same move two days running. Logs the offer. Free.

NameRequiredDescriptionDefault
featuresNoFeatures the founder shipped in the last 14 days, read from the repo (merged PRs, feat: commits), leaving out Shipfound's own PRs: what each does for the person using the product, the problem it solves when the code or PR says, and the PR link. Lets today offer a post or an X Article about one.
repoCommitsNoCommits to the founder's product in the last 7 days, read from their repo, leaving out Shipfound's own PRs (branches named shipfound/...). Lets today offer a build in public note on the week's work. Leave out when there is no repo.

TDQS

C2.4/5.0
Behavior3/5

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

The description usefully explains the non-readOnly annotation: "Logs the offer" clarifies that calling it has a write side effect, and it discloses that selection is data-driven and de-duplicated across days. That said, the behavior is buried in jargon, and there is no mention of cost, latency, or what a caller gets back at the top level. No contradiction with annotations.

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

Conciseness2/5

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

Roughly 200 words delivered as one sprawling run-on sentence with nested parentheticals, and it is not front-loaded: the reader gets a list of outputs before learning what the tool is. Substantial length is spent on undefined internal terminology rather than decision-relevant information.

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

Completeness3/5

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

With no output schema, the description does carry the burden of describing return content, and it attempts this thoroughly (what's due, the offer, the next two, the catalog, plus per-move fields). However, the field names used ("why", "gets", "then", "rests") are opaque enough that an agent cannot reliably consume the structure, so the coverage is nominal rather than usable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (`features`, `repoCommits`) carry detailed, self-sufficient descriptions including filtering rules and omission guidance. The prose never references either parameter, so it adds nothing beyond the schema — the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with "What /shipfound:grow shows" and then enumerates output sections in private vocabulary ("the one move", "every other move", "catalog", "rests", "gets") without ever stating the plain action, e.g. "returns today's growth briefing for a product." An agent must reverse-engineer the verb from a list of unknown nouns, and it is not distinguishable from siblings like `plan`, `grow_answer`, or `ideas` on the evidence given.

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

Usage Guidelines2/5

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

There is no statement of when to call this instead of `plan`, `grow_answer`, `ideas`, or `shipped`. The only conditional sentences ("a move is offered only when there is concrete work behind it", "not the same move two days running") describe the tool's internal selection logic, not caller guidance.

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

tracking_checkCheck trackingB
Read-only
Inspect

Whether the live site is sending events, crawler hits and goals, and what is still missing, in plain words. Tracking turns green when all three have arrived. Free.

NameRequiredDescriptionDefault
siteIdNo

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare readOnly, non-destructive, closed-world. The description adds real context beyond them: results are returned 'in plain words', the success condition is defined ('turns green when all three have arrived'), and it notes the operation is 'Free'. It omits auth needs and 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.

Conciseness4/5

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

Short and front-loaded with the purpose in the first clause, followed by the success semantics and cost note. Sentence fragments ('Free.') are terse but readable; nothing is wasted.

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

Completeness3/5

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

For a simple read-only tool this covers the purpose and the pass condition, and no output schema exists to explain. However it leaves the sole parameter undocumented and gives no sense of the response shape beyond 'plain words', so it is adequate rather than complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single siteId parameter has 0% schema description coverage, and the description never mentions it. The description does not compensate for the coverage gap, leaving the only parameter's meaning and expected format unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific check: whether the live site is sending events, crawler hits, and goals, plus what is missing. That is distinguishable from tracking_install (which sets up rather than verifies), though no sibling is named explicitly.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: an agent can infer this is the tool to call to verify tracking status. There is no explicit when-to-use, when-not, or routing to tracking_install or funnel_check for related workflows.

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

tracking_installInstall trackingA
Destructive
Inspect

Set up tracking for the site: the site key, the secret (shown only the first time, or with rotateSecret), the tracking.js script tag, the AI crawler middleware for the stack (nextjs, astro, nuxt, sveltekit, cloudflare; static sites get a log shipper note), and the default goals and funnel. Free on every plan; Free and Builder track 1 site, Growth 3. Ship it as the first PR and never commit the secret.

NameRequiredDescriptionDefault
domainYesThe site's hostname, e.g. example.com
frameworkYesThe stack from the access audit; cloudflare for a Worker in front of a static site
identityModeNocookieless (default) or attribution (needs consent where the law requires it)
rotateSecretNoIssue a new secret; the old one stops working
activationEventNoThe founder's activation event for the default funnel, e.g. first_project_created

TDQS

A3.6/5.0
Behavior4/5

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

Beyond the annotations, it discloses important behavioral facts: the secret is shown only the first time (or via rotateSecret), plan-based site limits, per-stack middleware handling, and the 'never commit the secret' handling warning. This adds real context the structured fields do not. It slightly undersells the destructiveHint=true surface (rotateSecret invalidating the old secret), which keeps it from a 5.

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

Conciseness3/5

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

The action is front-loaded, but the first sentence is an extremely long run-on enumerating five outputs. Pricing/plan sentences ('Free on every plan; Free and Builder track 1 site, Growth 3') are tangential to invoking the tool and dilute the definition, though the closing handling advice is useful.

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

Completeness4/5

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

With no output schema, the description usefully tells the agent what it receives back (site key, secret, script snippet, middleware, default goals/funnel). For a mutation tool with annotations, this is largely complete; only details like idempotency on re-run and a fuller return-format description are missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all five parameters including the framework enum and identityMode. The description echoes the framework values and mentions rotateSecret and activationEvent but adds little meaning beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear verb+resource ('Set up tracking for the site') and enumerates the concrete artifacts produced: site key, secret, tracking.js script tag, AI crawler middleware, default goals and funnel. It is highly specific about scope. It does not, however, explicitly name a sibling (e.g. tracking_check) to distinguish itself from, so it stops short of a 5.

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

Usage Guidelines3/5

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

'Ship it as the first PR' gives a timing/ordering hint, and the plan sentences tell the agent who may use it. But there is no explicit when-to-use vs when-not, and no reference to the alternative tracking_check or to prerequisites. Usage is only implied.

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

verifyVerify shipped workAInspect

Check one recorded action from the outside: a PR's state on GitHub and its live page, a page live and naming the product, a listing linking to the site (with its rel), a post still up (X through its embed endpoint; Reddit removals are detected when Reddit lets the check through, otherwise the recorded link counts). Costs 1 credit, charged only when it returns. Index requests and drafts cost nothing: a Bing index request is checked in Bing once Bing is connected (bing_connect); other index requests and drafts cannot be verified by us.

NameRequiredDescriptionDefault
actionIdYes

TDQS

A3.5/5.0
Behavior4/5

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

Goes well beyond the annotations by disclosing the credit cost model ('1 credit, charged only when it returns') and real failure modes (Reddit removals only detected when Reddit lets the check through, otherwise the recorded link counts; X checked via embed endpoint). This is exactly the kind of external-dependency and cost context annotations cannot convey.

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

Conciseness3/5

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

Front-loaded with the core action, but the body is a single dense run-on sentence with nested parentheses that is hard to parse. Every clause carries information, yet the structure could be broken into clearer statements of purpose, cost, and exclusions.

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

Completeness3/5

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

With no output schema, the description should describe what a verify returns. It hints at outcomes (PR state, page live, listing rel, post still up) but not the response shape or status values, leaving a gap for a check tool whose result is the whole point.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% for the single actionId parameter, so the description must compensate. It implies actionId identifies 'one recorded action' tied to a 'recorded link', connecting it to record_action/shipped siblings, but never states the format or explicitly where to obtain the ID.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Check') and resource ('one recorded action from the outside') and enumerates the concrete things it can verify: a PR's state on GitHub, a live page naming the product, a listing's rel link, a post's liveness. This is distinguishable from siblings like index_status or check_content, though it never names them directly.

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

Usage Guidelines3/5

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

Provides useful negative guidance — index requests and drafts cannot be verified, and Bing index requests route to bing_connect — but does not say when to prefer this over sibling checks such as check_content, landing_check, or index_status, leaving the agent to infer the boundary.

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

visibilityAI visibility, latest checkA
Read-only
Inspect

The latest finished full check: every question and engine pair with its stability label ("named in 3 of 4 runs"), the brands named in your place, and the pages the answers cite instead of you (most cited first, each with its type, whether you are on it, and the command that gets you there). Free. Named means: Your product appears in at least 2 of 4 runs, on at least one engine, for at least one of your tracked questions.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish that this is a read-only, non-destructive, closed-world operation. The description adds useful behavioral context beyond that: it is free, returns cited pages in order, explains the stability label format, and defines the 'named' threshold of at least 2 of 4 runs.

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

Conciseness4/5

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

The purpose is front-loaded in the first clause, followed by a compact list of returned content. The final definition of 'named' is useful, though the overall sentence is dense and could be split for readability.

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

Completeness4/5

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

With no output schema, the description carries the burden of explaining return values and does so in detail: question/engine pairs, stability labels, competing brands, cited pages, their order, type, whether the user is on them, and action commands. It does not cover edge cases such as no finished check or freshness timestamps, which keeps it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so there are no parameter semantics to document; the baseline for zero-parameter tools is 4. The description correctly does not invent parameter meanings and focuses on the returned data instead.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource as the latest finished full AI visibility check and enumerates its contents: question/engine pairs, stability labels, competing brands, and cited pages. It implies the distinction from visibility_run via 'latest finished,' but it does not explicitly name that sibling or use a direct retrieval verb.

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

Usage Guidelines3/5

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

Usage is implied by 'latest finished full check' and 'Free,' suggesting this is a no-cost read of completed results rather than a new run. However, it does not explicitly say when to use this instead of visibility_run or what to do if no finished check exists.

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

visibility_runRun the AI visibility checkAInspect

Ask 10 buyer questions on every engine, 4 runs each, in the background (about 10 minutes); call visibility afterwards. The first check is the baseline, day 0 on the proof page, and is free on every plan. After that a re-check needs Builder or Growth and costs 15 credits, at most one a day; Builder and Growth also re-check weekly on their own. State the price before a re-check.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, openWorldHint=true and destructiveHint=false, so the mutation/open-world profile is known. The description adds significant behavior beyond that: asynchronous background execution with a ~10 minute duration, credit consumption, plan entitlement, a one-per-day cap, and automatic weekly re-checks. It stops short of describing progress/status reporting or what happens if a run fails, so a 4 rather than a 5.

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

Conciseness4/5

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

Front-loaded with the action and duration, then the sequencing instruction, then the cost/plan rules. Every sentence carries load-bearing information, but the pricing sentence is dense and comma/semicolon-chained, which makes it slightly harder to scan than an ideal definition.

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

Completeness5/5

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

With no parameters, no enums and no output schema, the description supplies everything the agent needs: trigger semantics, duration, follow-up tool, plan entitlement, credit cost, rate limit, and an explicit pre-call message requirement. Nothing an agent needs before invoking it appears to be missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there are no parameter semantics to explain and the schema cannot be contradicted or supplemented; baseline 4 applies. The description correctly conveys that everything (engine set, question count, runs) is fixed by the tool rather than configurable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete action (run the AI visibility check) with exact scope: 10 buyer questions on every engine, 4 runs each, in the background for about 10 minutes. It clearly distinguishes itself from the sibling visibility tool by telling the agent to call visibility afterwards.

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

Usage Guidelines5/5

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

Explicitly sequences the workflow ('call visibility afterwards'), states plan gating (first check free on every plan; re-checks need Builder or Growth), the cost (15 credits), the rate limit (at most one a day), and an interaction requirement ('State the price before a re-check'). When-to-use and when-not are both covered.

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

workspaceThis workspaceA
Read-only
Inspect

The product this key belongs to: name, URL, plan, credits left, the access summary, tracking state, and the links to the results app and proof page, plus whether the repo you are in is this site's code. Free. Call this first, with repo.

NameRequiredDescriptionDefault
repoNoThe founder's project you are working in: the output of `git remote get-url origin` there, or the folder name when it has no remote. Credentials in the URL are dropped, never stored.

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, non-destructive, closed-world), so the bar is lower. The description adds real behavioral context beyond them: it declares the call is Free and should be the first call, and the schema notes credentials in the URL are dropped and never stored. It doesn't describe response format or pagination, but neither is expected for a small context read.

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

Conciseness4/5

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

A single tight sentence enumerating the payload, followed by a short actionable directive ("Free. Call this first, with `repo`"). The enumeration is dense but every listed item is information the agent would otherwise lack, so little is wasted.

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

Completeness4/5

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

With no output schema, the description carries the burden of describing what comes back, and it does so thoroughly by listing the returned fields. It is complete enough to call correctly; only the response's structure/nesting is left unspecified, which is minor for a flat context call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and there is only one optional parameter, so baseline is 3. The description adds a bit more by instructing the agent to supply `repo` on the call, clarifying intended usage of a parameter the schema marks optional.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description enumerates exactly what the tool surfaces about the current workspace: product name, URL, plan, credits, access summary, tracking state, results-app/proof-page links, and whether the current repo is this site's code. That is a clear resource-and-contents statement, though it never states a verb (read/describe) and doesn't explicitly contrast itself with similarly-named siblings like access or record_access.

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

Usage Guidelines4/5

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

"Free. Call this first, with `repo`" gives explicit ordering and cost guidance, which is strong when-to-use context. It does not name alternatives or when-not-to-use conditions, so it stops short of a 5.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updates
    • Addedconvert_pages
    • Addedseo_crawl
    • Addedseo_programmatic_check
    • Addedseo_read
    • Addedseo_set
  2. 12 tool updates
    • Addedapp_countries
    • Changedapp_cpp_create1 field changed
      • addedInput schema / properties / screenshots / items / properties / proof
        Added value: +{
        +  "const": "rating",
        +  "description": "A proof line with the app's own App Store rating, filled from the public listing; refused under 4.5 stars or 20 ratings",
        +  "type": "string"
        +}
    • Addedapp_event_create
    • Addedapp_events
    • Changedapp_experiment_create1 field changed
      • addedInput schema / properties / treatments / items / properties / screenshots / items / properties / proof
        Added value: +{
        +  "const": "rating",
        +  "description": "A proof line with the app's own App Store rating, filled from the public listing; refused under 4.5 stars or 20 ratings",
        +  "type": "string"
        +}
    • Addedapp_nomination_create
    • Addedapp_prices
    • Addedapp_purchases
    • Addedapp_purchases_stage
    • Addedapp_ranks
    • Changedapp_screenshots2 fields changed
      • addedInput schema / properties / appId
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / screenshots / items / properties / proof
        Added value: +{
        +  "const": "rating",
        +  "description": "A proof line with the app's own App Store rating, filled from the public listing; refused under 4.5 stars or 20 ratings",
        +  "type": "string"
        +}
    • Addedapp_screenshots_apply
  3. 1 tool update
    • Addedapp_keywords
  4. 1 tool update
    • Changedboost_plan2 fields changed
      • changedInput schema / properties / optimize / description
        Previous value: -"What the campaign optimises for, as the founder confirmed from ads_setup's recommend; default that recommendation"New value: +"What the campaign optimises for, as the founder confirmed from ads_setup's recommend; default that recommendation. Not for a Reddit post ad: it runs on Traffic, optimised for clicks"
      • changedInput schema / properties / posts / items / properties / body / description
        Previous value: -"Reddit post ad (format post): the body under its title, 80 to 2000 characters, no link (the tagged link is the ad's destination)"New value: +"Reddit post ad (format post): the body under its title, 80 to 2000 characters, no link (the plan adds the tagged link as its last line, returned in brief.copy)"
  5. 2 tool updates
    • Changedboost_plan3 fields changed
      • addedInput schema / properties / format
        Added value: +{
        +  "description": "Reddit only. video (default): a headline over the product video. post: a text-only ad written like a post to the community, a title (text) and a body, comments on; no video or image",
        +  "enum": [
        +    "video",
        +    "post"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / posts / items / properties / body
        Added value: +{
        +  "description": "Reddit post ad (format post): the body under its title, 80 to 2000 characters, no link (the tagged link is the ad's destination)",
        +  "maxLength": 2000,
        +  "type": "string"
        +}
      • changedInput schema / properties / posts / items / properties / text / description
        Previous value: -"X: the post's text, for the Promoted-only copy. Meta: the ad's primary text. Reddit: the ad's headline"New value: +"X: the post's text, for the Promoted-only copy. Meta: the ad's primary text. Reddit: the ad's headline, or a post ad's title"
    • Addedreddit_notices
  6. 1 tool update
    • Changedads_review1 field changed
      • addedInput schema / properties / targetCostPerStart
        Added value: +{
        +  "description": "The founder's target cost per trial (or per subscription when the app has no trial), in the account's currency; turned into a cost per install with the share of downloads that start one. targetCpi wins when both are given",
        +  "exclusiveMinimum": 0,
        +  "type": "number"
        +}
  7. 3 tool updates
    • Changedads_setup2 fields changed
      • changedInput schema / properties / platform / enum
        Previous value: -[
        -  "x",
        -  "meta",
        -  "reddit"
        -]New value: +[
        +  "x",
        +  "meta",
        +  "reddit",
        +  "google"
        +]
      • changedInput schema / properties / record / properties / account / properties / adAccountId / description
        Previous value: -"X: in the ads.x.com/manager/<id> URL. Meta: act= in Ads Manager's URL. Reddit: in the ads.reddit.com account URL"New value: +"X: in the ads.x.com/manager/<id> URL. Meta: act= in Ads Manager's URL. Reddit: in the ads.reddit.com account URL. Google: the customer ID, 123-456-7890"
    • Changedboost_plan10 fields changed
      • addedInput schema / properties / devices
        Added value: +{
        +  "description": "As the founder confirmed; default from the first step",
        +  "enum": [
        +    "all",
        +    "desktop",
        +    "split"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / firstStep
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Once per product, after the founder confirmed it; kept for later plans",
        +  "properties": {
        +    "evidence": {
        +      "description": "What the first step is and where you read it, in one line",
        +      "maxLength": 300,
        +      "type": "string"
        +    },
        +    "phone": {
        +      "description": "A phone can take the product's first step",
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "phone",
        +    "evidence"
        +  ],
        +  "type": "object"
        +}
      • changedInput schema / properties / platform / enum
        Previous value: -[
        -  "x",
        -  "meta",
        -  "reddit"
        -]New value: +[
        +  "x",
        +  "meta",
        +  "reddit",
        +  "google"
        +]
      • addedInput schema / properties / posts / items / properties / descriptions
        Added value: +{
        +  "description": "Google: its descriptions, 2 to 4, each up to 90 characters",
        +  "items": {
        +    "maxLength": 90,
        +    "type": "string"
        +  },
        +  "maxItems": 4,
        +  "type": "array"
        +}
      • addedInput schema / properties / posts / items / properties / headlines
        Added value: +{
        +  "description": "Google: the search ad's headlines, 3 to 15, each up to 30 characters",
        +  "items": {
        +    "maxLength": 30,
        +    "type": "string"
        +  },
        +  "maxItems": 15,
        +  "type": "array"
        +}
      • addedInput schema / properties / posts / items / properties / keywords
        Added value: +{
        +  "description": "Google: the searches this ad answers, phrase match (\"keyword\") unless written [exact]",
        +  "items": {
        +    "maxLength": 80,
        +    "type": "string"
        +  },
        +  "maxItems": 20,
        +  "type": "array"
        +}
      • addedInput schema / properties / question
        Added value: +{
        +  "description": "What the founder wants the budget to answer, from sizing; sets the budget when budgetUsd is not given",
        +  "enum": [
        +    "clicks",
        +    "signups"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / retargetOf
        Added value: +{
        +  "description": "Retarget this earlier boost's visitors who did not sign up (optional, only on the founder's yes)",
        +  "maxLength": 40,
        +  "type": "string"
        +}
      • addedInput schema / properties / searchVolumes
        Added value: +{
        +  "description": "Google: each keyword's searches a month and cost per click, from keyword_research",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "cpcUsd": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "keyword": {
        +        "maxLength": 80,
        +        "type": "string"
        +      },
        +      "monthly": {
        +        "type": "integer"
        +      }
        +    },
        +    "required": [
        +      "keyword",
        +      "monthly"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 100,
        +  "type": "array"
        +}
      • addedInput schema / properties / targeting / properties / negativeKeywords
        Added value: +{
        +  "description": "Google: searches the ads never show on",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedboost_record2 fields changed
      • addedInput schema / properties / posts / items / properties / device
        Added value: +{
        +  "description": "A split boost's ad group: ad <n> desktop or ad <n> phone",
        +  "enum": [
        +    "desktop",
        +    "phone"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / posts / maxItems
        Previous value: -3New value: +6
  8. 2 tool updates
    • Changedgrow_answer3 fields changed
      • addedInput schema / properties / from
        Added value: +{
        +  "description": "Where the move was when the founder picked it: \"first\" (the first question), \"more\" (the next five), \"all\" (the full list), \"typed\" (they named it in their own words).",
        +  "enum": [
        +    "first",
        +    "more",
        +    "all",
        +    "typed"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / said
        Added value: +{
        +  "description": "The founder's own words when they typed an answer instead of picking, as they wrote them.",
        +  "maxLength": 1000,
        +  "type": "string"
        +}
      • addedInput schema / properties / seen
        Added value: +{
        +  "description": "Keys of the moves printed on the next-five screen that the founder did not pick.",
        +  "items": {
        +    "maxLength": 2000,
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 10,
        +  "type": "array"
        +}
    • Changedresearch_run2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / domains
        Added value: +{
        +  "description": "Products the founder named when asked which ones they have in mind, by domain or URL. Leave out when they named none.",
        +  "items": {
        +    "maxLength": 300,
        +    "minLength": 3,
        +    "type": "string"
        +  },
        +  "maxItems": 5,
        +  "type": "array"
        +}
  9. 4 tool updates
    • Addedbing_connect
    • Addedbing_submit
    • Addedindex_status
    • Changedsite_fixes1 field changed
      • addedInput schema / properties / training
        Added value: +{
        +  "description": "The founder's answer on training crawlers: allow (let them in), block (keep them out), keep (leave robots.txt as it is for them). Kept for later checks; left out, the last answer stands",
        +  "enum": [
        +    "allow",
        +    "block",
        +    "keep"
        +  ],
        +  "type": "string"
        +}
  10. 1 tool update
    • Addedrecord_merges
  11. 2 tool updates
    • Changedfunnel_check1 field changed
      • changedInput schema / properties / skip / description
        Previous value: -"Finding ids the founder will not fix: never shown again"New value: +"Finding ids (convert:...) or plays (play:<id>) the founder will not do: never shown again"
    • Addedoutbound_targets
  12. 2 tool updates
    • Changedanalytics1 field changed
      • changedInput schema / properties / report / enum
        Previous value: -[
        -  "overview",
        -  "realtime",
        -  "channels",
        -  "ai_search",
        -  "sources",
        -  "landing_pages",
        -  "pages",
        -  "shipped_work",
        -  "ai_crawlers",
        -  "conversions",
        -  "errors",
        -  "timeseries"
        -]New value: +[
        +  "overview",
        +  "realtime",
        +  "channels",
        +  "ai_search",
        +  "sources",
        +  "landing_pages",
        +  "pages",
        +  "shipped_work",
        +  "ai_crawlers",
        +  "conversions",
        +  "errors",
        +  "timeseries",
        +  "funnels",
        +  "page_flow"
        +]
    • Addedfunnels_save
  13. 1 tool update
    • Addedideas_replies_find
  14. 2 tool updates
    • Addedideas_replies
    • Addedideas_replies_save
  15. 6 tool updates
    • Addedideas
    • Addedideas_run
    • Addedideas_skip
    • Changednotes_context1 field changed
      • addedInput schema / properties / features
        Added value: +{
        +  "description": "Features the founder shipped in the last 14 days, read from the repo (merged PRs, feat: commits), leaving out Shipfound's own PRs: what it does for the person using the product, the problem it solves when the code or PR says, and the PR link",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "problem": {
        +        "maxLength": 300,
        +        "type": "string"
        +      },
        +      "title": {
        +        "maxLength": 160,
        +        "minLength": 3,
        +        "type": "string"
        +      },
        +      "url": {
        +        "maxLength": 500,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "title"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 5,
        +  "type": "array"
        +}
    • Changednotes_save3 fields changed
      • addedInput schema / properties / article
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "A flagship X Article, saved on its own",
        +  "properties": {
        +    "body": {
        +      "maxLength": 40000,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "cover": {
        +      "maxLength": 500,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "images": {
        +      "items": {
        +        "maxLength": 500,
        +        "type": "string"
        +      },
        +      "maxItems": 8,
        +      "type": "array"
        +    },
        +    "title": {
        +      "maxLength": 200,
        +      "minLength": 1,
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "title",
        +    "body",
        +    "cover"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / premium
        Added value: +{
        +  "description": "Whether the account has X Premium, from X's Articles tab just now",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / thread
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "The same story as an X thread, for an account without X Premium, saved on its own",
        +  "properties": {
        +    "posts": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "image": {
        +            "maxLength": 500,
        +            "type": "string"
        +          },
        +          "text": {
        +            "maxLength": 2000,
        +            "minLength": 1,
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "text"
        +        ],
        +        "type": "object"
        +      },
        +      "maxItems": 12,
        +      "minItems": 2,
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "posts"
        +  ],
        +  "type": "object"
        +}
    • Changedtoday1 field changed
      • addedInput schema / properties / features
        Added value: +{
        +  "description": "Features the founder shipped in the last 14 days, read from the repo (merged PRs, feat: commits), leaving out Shipfound's own PRs: what each does for the person using the product, the problem it solves when the code or PR says, and the PR link. Lets today offer a post or an X Article about one.",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "problem": {
        +        "maxLength": 300,
        +        "type": "string"
        +      },
        +      "title": {
        +        "maxLength": 160,
        +        "minLength": 3,
        +        "type": "string"
        +      },
        +      "url": {
        +        "maxLength": 500,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "title"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 5,
        +  "type": "array"
        +}

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Perplexity for social: ask what competitors are running across social and get answers grounded in real ad and creative data, not guesses.
    2
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
    16
    18 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources