Skip to main content
Glama

Server Details

Let your AI read live public pages it is locked out of (TikTok, Instagram, Amazon) and watch them.

Ownership verified
Status
Healthy
Uptime
85.0% over the last 24 hours
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
–

TDQS

B3.1/5.0

Scored across 90 tools

Disambiguation2/5

The 90-tool surface has many overlapping boundaries: run_workflow duplicates most standalone background jobs (competitor_report, product_ad_pack, trend_to_video, ugc_ad, etc.), the generic read tool overlaps specialized readers, and find_places/find_leads/maps_rank all target local-business data. Descriptions are detailed, but an agent still has to decide between several plausible tools for the same intent.

Naming Consistency3/5

All names are lowercase snake_case and generally readable, but conventions are mixed: many are verb_noun (find_jobs, read_comments, compare_stores), while many others are noun phrases (account_report, company_brief, market_quotes, subscription_prices). There are also semantically close pairs such as ai_recommends vs get_recommended_by_ai, which weakens predictability.

Tool Count1/5

Ninety tools is far beyond a well-scoped MCP surface and reflects a sprawling multi-domain toolkit rather than a coherent set. The count makes selection and maintenance difficult, and several tools exist mainly to wrap or retrieve results from other tools.

Completeness4/5

For a broad research/data toolkit, coverage is extensive: search, reading, reviews, pricing, travel, jobs, real estate, media generation, watches, pagination via more_results, and pending-job retrieval are all represented. There are gaps around write/update operations and some workflow paths are only available as duplicative background jobs, but most agent workflows have an available path.

Available Tools

90 tools
account_reportAccount reportAInspect

A report on a public TikTok or Instagram account: followers, typical views or likes, and standout posts. Counts toward account limits and saves the report in Puley history. Unavailable source data is not inferred.

NameRequiredDescriptionDefault
platformYes
usernameYes

TDQS

A3.8/5.0
Behavior4/5

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

Beyond the annotations, the description discloses a quota cost ('Counts toward account limits'), a persistence side effect ('saves the report in Puley history') that explains why readOnlyHint is false, and a data-fidelity rule ('Unavailable source data is not inferred'). It does not cover failure behavior for private or nonexistent accounts, which keeps it below a 5.

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

Conciseness5/5

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

Two sentences, front-loaded with the purpose and then the operational caveats. Every clause carries information an agent needs; nothing is redundant with the 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?

For a two-parameter tool with no output schema, the description covers what is returned, the cost, the persistence effect, and the no-inference rule. The remaining gap is error handling and accepted input formats, which is minor but not negligible.

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 required parameters, so the description must compensate. It partially does by implying the platform values ('TikTok or Instagram') and restricting username to public accounts, but it gives no format guidance such as whether a leading '@' or URL is accepted.

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 and resource ('A report on a public TikTok or Instagram account') and enumerates the returned metrics: followers, typical views or likes, and standout posts. That distinguishes it from sibling tools like find_channels, search_posts, and read_with_account, 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 by the 'public account' constraint and the note that it counts toward account limits, which signals a costlier operation than a simple read. However, there is no explicit when-to-use/when-not guidance and no named alternative for cases where a cheaper lookup would suffice.

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

ai_recommendsDoes AI recommend you?AInspect

Whether AI assistants recommend a business: asks OpenAI's and Google's models, with web search on as ChatGPT and Gemini answer people, 3 questions a buyer asks about what the business sells, and shows who each answer recommends first, whether the business is named, and the sites the answers quoted. what: what is sold (CRM for small businesses, dentist in Austin TX). business: its name or website. questions: the person's own questions instead (up to 3). Saved in the user's Puley history.

NameRequiredDescriptionDefault
whatYes
countryNoUS
businessNo
questionsNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already flag a non-read-only, open-world, non-destructive call, and the description usefully explains why: results are 'Saved in the user's Puley history', disclosing the persistence side effect. It also describes the return content (top recommendation, whether the business is named, quoted sites), valuable since there is no output schema. It omits latency/cost implications of querying two external models.

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, but the body is a single sprawling sentence with awkward phrasing ('with web search on as ChatGPT and Gemini answer people') and parameter notes tacked on inline. Every element is relevant, yet the packaging 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 four-parameter tool with no output schema, the description covers what the tool does, what it returns, and the persistence side effect, which is close to complete. The gaps are the undocumented 'country' parameter and the absent comparison with 'get_recommended_by_ai'.

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?

With 0% schema description coverage the description must carry all parameter meaning, and it largely does: 'what' gets concrete examples (CRM for small businesses, dentist in Austin TX), 'business' is name or website, and 'questions' substitutes the user's own questions capped at three. Only 'country' (default US) is left 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 gives a concrete verb chain and resource: it asks OpenAI and Google models (with web search) three buyer-style questions and reports who is recommended first, whether the business is named, and which sites were quoted. That is far more specific than the name alone. It does not, however, distinguish itself from the very similar sibling 'get_recommended_by_ai', leaving an agent unsure which of the two to call.

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 scenario (a business owner checking AI visibility), and 'questions: the person's own questions instead' hints at a variant mode. But there is no explicit when-to-use, when-not-to-use, or comparison against the nearly identical 'get_recommended_by_ai' sibling, forcing the agent to infer.

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

amazon_price_historyAmazon price historyAInspect

Whether an Amazon price is a good deal right now: the product's price history from camelcamelcamel, with the lowest ever and highest ever (and when), the average and the current price, for Amazon itself, third-party new and used. product: an Amazon link (amazon.com, .co.uk, .ca, .de, .fr, .es, .it, .com.au, .co.jp) or a 10-character ASIN. Uses one read and saves the result in the user's Puley history.

NameRequiredDescriptionDefault
productYes

TDQS

A4.1/5.0
Behavior4/5

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

The description resolves the puzzle left by readOnlyHint=false on an otherwise read-shaped tool: 'Uses one read and saves the result in the user's Puley history.' That discloses both a credit cost and a persistent side effect the annotations only flag abstractly. It is consistent with the annotations (no contradiction) but does not cover failure modes or what happens on an unsupported domain.

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 and the returned fields are front-loaded in the first sentence, with the parameter format and side effect following. It is dense but every clause carries information; the only cost is that the first sentence is long and would read better split.

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 one parameter, no output schema and no enum constraints, the description supplies everything an agent needs: what it answers, what it returns, accepted input formats, and the cost/side-effect of calling it. Nothing material is left to inference for a tool of this complexity.

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 description coverage is 0%, so the description carries the full burden and does so: it specifies accepted inputs as an Amazon link across nine explicit domains or a 10-character ASIN. That is exactly the format detail an agent needs to construct a valid call, and it is unavailable anywhere in 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 names a specific resource and source ('the product's price history from camelcamelcamel') and enumerates exactly what it returns (lowest/highest ever and when, average, current, split across Amazon/third-party new/used). That is far more specific than a restated name. It stops short of 5 because it never differentiates from near-neighbour siblings such as resale_prices or should_i_sell, which an agent could plausibly confuse it with.

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

Usage Guidelines3/5

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

The opening framing ('Whether an Amazon price is a good deal right now') implies the decision-support use case, so the agent can infer when to reach for it. However, there is no explicit when-not guidance, no mention of alternatives, and no prerequisites stated. 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.

app_chartsApple chartsAInspect

Apple's charts right now for any country, from Apple's own feed: top-free-apps, top-paid-apps, top-songs (most played on Apple Music), top-albums, top-podcasts, top-free-books, top-paid-books or top-audiobooks. Each entry's rank, name, developer or artist, genres, release date and link. country: two-letter code (us, gb, za, jp, br...). limit: up to 100. Uses one read and saves the result in the user's Puley history.

NameRequiredDescriptionDefault
chartNotop-free-apps
limitNo
countryNous

TDQS

A3.6/5.0
Behavior3/5

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

The description adds real context beyond annotations: it explains the credit cost ('uses one read') and the write side effect ('saves the result in the user's Puley history'), which justifies the readOnlyHint=false. However it omits other behavioral traits such as error handling for unknown chart values, freshness/latency, or what the saved history entry 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?

Two dense sentences, front-loaded with the resource and followed by the parameter semantics; every clause carries information. The long comma-separated enumeration of chart values is slightly hard to scan but earns its place given the absence of an enum in the schema.

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 3-parameter, no-output-schema tool, the description covers what is fetched, the fields returned per entry, all three parameters, and the credit/history side effect. It stops short of defaults and refresh timing, which is a minor gap rather than a blocking one.

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

Parameters4/5

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

With 0% schema description coverage the description carries the whole burden and mostly succeeds: it documents country as a two-letter code with examples (us, gb, za, jp, br), limit as capped at 100, and chart via the enumerated chart names. Only depth is missing — the numeric default of limit and default country are not restated, and it does not say what happens if an unsupported chart string is passed.

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 exact resource (Apple's chart feed) and enumerates the concrete chart types plus the fields returned per entry. It is clearly distinguishable from feeds like best_sellers or netflix_top10, though it never explicitly contrasts itself with those siblings.

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 resource ('right now' charts, any country) but there is no explicit when-to-use or when-not-to-use guidance, and no sibling is named as an alternative. An agent must infer that this is the Apple-specific chart tool rather than a general best-seller lookup.

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

best_sellersAmazon Best SellersAInspect

Amazon's Best Sellers right now for a department in any Amazon country: each product's rank, name, star rating, number of ratings, price and link. department: kitchen, home, electronics, beauty, toys, books, fashion, baby, pets, sports, tools, office, health, grocery, video games, automotive, garden, crafts, phones, computers, appliances or everything. country: the Amazon store (us, gb, de, ca, au, in, jp, fr, it, es, mx, br, za, ae...). Shows what's selling, for gift ideas or product research. Uses one read and saves the result in the user's Puley history.

NameRequiredDescriptionDefault
limitNo
countryNous
departmentNoeverything

TDQS

A3.8/5.0
Behavior4/5

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

The description adds real behavioral context beyond the annotations: 'Uses one read and saves the result in the user's Puley history' explains why readOnlyHint is false despite the read nature, and 'right now' is consistent with openWorldHint=true. No permissions, rate limits, or failure modes are covered, so it stops 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?

The core purpose and return fields are front-loaded, and the long department/country lists earn their space because the schema has no enums. The prose is somewhat run-on with embedded lists that could be formatted more scannably.

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 correctly lists the fields a result contains and discloses the history side effect, which is enough to call it confidently for a simple three-parameter read tool. The unexplained 'limit' parameter and lack of pagination/maximum guidance are the remaining gaps.

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?

With 0% schema description coverage and no enums, the description carries the parameter burden well by enumerating valid department values (kitchen, home, electronics ... everything) and country store codes (us, gb, de, ca, au, in, jp, fr, it, es, mx, br, za, ae...). The 'limit' parameter is never explained, leaving the number of returned products to inference.

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 ('Amazon's Best Sellers right now for a department in any Amazon country') and enumerates the returned fields (rank, name, star rating, number of ratings, price, link). It does not distinguish itself from plausible siblings such as amazon_price_history, search_marketplace or resale_prices, 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 Guidelines3/5

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

It offers use-case guidance ('Shows what's selling, for gift ideas or product research'), which implies when to reach for it. However, there are no exclusions, prerequisites, or named alternatives among the many price/marketplace siblings, leaving the agent to infer when another tool is a better fit.

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

check_siteCheck a websiteAInspect

Facts to judge whether an online shop or company is trustworthy before buying: when its domain was first registered (from the public registry) and its Trustpilot record (TrustScore, review count, share of 1-star reviews, Trustpilot's own summary, consumer alerts, latest reviews). Gives signals, not a verdict. website: a domain such as example.com, or a link. Uses one read and saves the result in the user's Puley history.

NameRequiredDescriptionDefault
websiteYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations declare readOnlyHint=false and non-idempotent, which would otherwise be puzzling for what looks like a read; the description resolves this by stating 'Uses one read and saves the result in the user's Puley history,' explaining the write side effect and the cost of each call. It also discloses the external open-world sources (public registry, Trustpilot) and sets the interpretive frame that the output is signaling rather than adjudication.

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?

The content is front-loaded: the purpose and full list of returned facts lead, followed by the verdict caveat, the parameter format, and the side-effect note. The parenthetical source attributions are dense but each earns its place by telling the agent where the facts come from.

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 returns, and it lists the Trustpilot fields and registry fact in enough detail for an agent to plan around. It does not describe behavior on domains with no Trustpilot profile or an unregistered site, nor the response shape, which leaves a modest gap for a single-input tool of this kind.

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 description coverage is 0%, so the description carries the full burden, and it does: 'website: a domain such as example.com, or a link' tells the agent both accepted input forms and gives a concrete format example. That is meaningfully more than the bare 'Website' string property in 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 names a concrete deliverable and enumerates its two data sources precisely: domain first-registration date from the public registry and a Trustpilot record (TrustScore, review count, 1-star share, summary, alerts, latest reviews). An agent knows exactly what comes back. It does not explicitly route away from overlapping siblings such as is_it_real, read_reviews, or company_brief, so it falls short of the top of the scale.

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?

'Facts to judge whether an online shop or company is trustworthy before buying' gives a clear situational trigger and set expectations with 'gives signals, not a verdict.' There is no explicit when-not guidance and no named alternative for cases where the agent wants reviews-only or company-level data, which keeps it below a 5.

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

check_watch_nowCheck a watch nowA
Destructive
Inspect

Run a requested manual check of an active watch. A successful check uses one read and a detected change may send an email. Does not resume paused watches. Requires watch-management permission.

NameRequiredDescriptionDefault
watch_idYes

TDQS

A4.4/5.0
Behavior5/5

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

Adds substantial behavior beyond the annotations: one read is consumed, a detected change may send email, paused watches are not resumed, and watch-management permission is required. These details clarify side effects, cost, and authorization for a non-read-only operation.

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 short sentences with no wasted wording, and the core action is stated first. The permission and paused-watch exclusions follow naturally.

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 the important operational context: cost, side effects, permissions, and the paused-watch exclusion. It leaves the return value and watch_id lookup slightly implicit, but no output schema exists and the core invocation requirements are present.

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 single watch_id parameter has no schema description, and the description only implies it must identify an active watch. It does not explain the integer format or how to obtain the ID, though the parameter name itself is fairly self-explanatory.

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 a manual check of an active watch. It also distinguishes the action from resuming a paused watch, so an agent can separate it from get_watch, pause_watch, and resume_watch.

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?

Makes the triggering context clear: a requested manual check of an active watch. It includes an explicit exclusion for paused watches, though it does not name specific sibling alternatives such as resume_watch or get_watch.

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

comment_insightsSort the commentsAInspect

The comments under a TikTok, YouTube or Instagram post, sorted into the questions people ask, complaints, products they compare it with, what they love and what they ask for, with counts and quotes. link: the post. limit: 20 to 200 comments. Saved in the user's Puley history.

NameRequiredDescriptionDefault
linkYes
limitNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and openWorldHint=true, and the description adds the reason: results are 'Saved in the user's Puley history', which explains the write side effect. It also discloses the shape of the return payload (categories with counts and quotes). It does not cover latency, cost, or failure behavior for unsupported links, but the key non-obvious side effect is disclosed.

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, followed by compact parameter notes. Slightly awkward phrasing ('products they compare it with') but no wasted sentences and no repetition of the annotations.

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 correctly spends words on the return structure — category names, counts, and quotes — which is exactly what an agent needs to decide whether the tool answers its question. Missing pieces are platform/link acceptance rules and any indication of how many comments must exist for categories to be meaningful.

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 parameter meaning and it largely does: link is defined as 'the post', and limit is given a usable range of 20 to 200 comments. The default of 100 is left to the schema, and the format of 'link' (full URL vs. shortcode) remains ambiguous, which keeps it below a 5.

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 verb+resource: it takes the comments under a TikTok/YouTube/Instagram post and sorts them into named categories (questions, complaints, compared products, loved features, requests) with counts and quotes. That is far more specific than the title 'Sort the comments'. It does not, however, distinguish itself from the sibling read_comments, so an agent must infer the difference between raw comment retrieval and this categorized analysis.

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: the output categories signal this is for analyzing audience sentiment/questions rather than fetching raw comments, which is the natural alternative (read_comments). There is no explicit 'use this when...' clause, no exclusion naming the sibling, and no note about which platforms/URL forms are accepted.

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

company_briefCompany briefAInspect

A company before a sales call: what it does, its industry, how many people, its website and LinkedIn, and its latest news, in one brief. company: its name or website (acme.com). country: the news edition. Saved in the user's Puley history.

NameRequiredDescriptionDefault
companyYes
countryNoUS

TDQS

A4.1/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, which could puzzle an agent for a research tool; the description resolves this by stating the result is 'Saved in the user's Puley history', explaining the write side effect. It also enumerates the content returned and implies open-web lookup via 'latest news', though it says nothing about latency, cost, or failure modes.

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

Conciseness5/5

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

Two compact sentences: the first front-loads the use case and the payload, the second handles both parameters plus the side effect. Nothing is repeated from the title and there is 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?

With only two parameters and no output schema, the description needs to preview return contents, and it does so field by field. The remaining gap is minor: no statement of expected depth or freshness of the news component.

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 carries the load and does: 'company' accepts a name or a domain (example acme.com), and 'country' selects the news edition. That is enough to format inputs correctly despite the bare schema, though it does not say what happens if country is omitted or invalid.

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 resource and scope: a single-company brief containing what the company does, industry, headcount, website, LinkedIn and latest news. That is specific enough to separate it from competitor_report or account_report, although it never names a sibling explicitly.

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?

The opening clause 'A company before a sales call' gives a clear usage context, so an agent knows this is pre-meeting research rather than a comparison or account-level report. It stops short of exclusions or pointing to alternatives for multi-company or existing-account needs.

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

compare_countriesCompare prices in other countriesAInspect

Read the same product page from inside other countries (two-letter codes like US, GB, JP) and compare the local price, converted to US dollars, with stock and where each read came from. Cheapest first. Apple and LEGO links find each country's store. plan: the exact subscription plan and billing period, or the product variant; without it, the main product or the standard individual monthly subscription is used. When the prices are not for the same option, comparable is false, comparison_note says why, and no cheapest country is given. Each country counts toward the user's read limit; the comparison is saved in their history. Failed reads are marked.

NameRequiredDescriptionDefault
linkYes
planNo
countriesYes

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 that each country consumes the user's read quota, that the comparison is persisted to their history, and that failed reads are flagged. It also explains the partial-result contract: comparable=false, a comparison_note explaining why, and no cheapest country. Only auth requirements and any rate-limit specifics are left unsaid.

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 the cheapest-first ordering, and nearly every sentence carries information about behavior or output. The mid-sentence 'plan:' fragment is slightly awkward and interrupts the flow, but nothing is redundant.

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 still conveys return shape: per-country local price converted to USD, stock, source of each read, cheapest-first ordering, a comparable flag, and a comparison_note on non-comparable results. For a three-parameter, non-idempotent, open-world tool, an agent has everything needed to call and interpret it.

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

Parameters4/5

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

Schema coverage is 0%, so the description has to carry all three parameters, and it does: countries are two-letter codes like US/GB/JP, plan is the exact subscription plan or billing period and maps to a product variant, and link is the product URL whose format determines store resolution. Missing only concrete examples of accepted plan strings or a country-count 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 gives a concrete verb and resource: read the same product page from inside other countries and compare local price converted to USD, cheapest first, including stock and read source. That is far more specific than the title alone. It does not name the near sibling compare_stores or subscription_prices, so an agent still has to infer which 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?

Implied usage is clear (Apple and LEGO links resolve to each country's store), and the plan parameter's default behavior is spelled out. But there is no explicit when-to-use or when-not-to-use guidance versus compare_stores, subscription_prices, or plain read for a single country, and no stated prerequisites.

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

compare_storesCompare storesAInspect

Search a country's big stores for the same product and list each store's results side by side, as a shopper there sees them: product name, price in the store's currency, was-price, rating, reviews, stock where shown, units sold where shown, and link. country (two letters, default US) picks the stores: US Amazon, Walmart and Target; IN Amazon and Flipkart; BR and MX Amazon and Mercado Libre; AR, CO and CL Mercado Libre; JP Amazon and Rakuten; GB Amazon and Currys; DE, FR, IT and ES Amazon and idealo (Europe's price comparison: each product's lowest price across shops and how many shops sell it); AT idealo; JP also Kakaku.com and BR also Zoom (their price comparison; Japanese sites match Japanese search words best); AU Amazon and Bunnings; ZA Takealot and Makro; and Amazon alone in CA, NL, SE, PL, BE, IE, AE, SA, EG, TR and SG. stores (optional) narrows or adds: 'amazon', 'walmart', 'target', 'flipkart', 'mercadolibre', 'rakuten', 'currys', 'idealo', 'kakaku', 'zoom', 'bunnings', 'coles' (Australian groceries, with unit prices), 'tesco', 'sainsburys' and 'asda' (UK groceries), 'woolworths' with country AU (Woolworths Australia), 'kroger' (US groceries), 'takealot', 'makro', 'woolworths', 'mrprice', and 'aliexpress' (US-dollar prices, discount and units sold, for "is it cheaper on AliExpress?"). per_store: up to 12. Results are each store's own order and can include accessories or other models; product names show which is which. Shipping and tax are not included. Uses one read per store that answers; saved in the user's Puley history.

NameRequiredDescriptionDefault
queryYes
storesNo
countryNo
per_storeNo

TDQS

A4.4/5.0
Behavior4/5

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

Beyond the annotations it discloses cost ('uses one read per store that answers'), persistence ('saved in the user's Puley history'), and important result caveats: results follow each store's own ordering and may include accessories or other models, and shipping and tax are excluded. That is meaningful context the annotations (readOnlyHint false, openWorldHint true) do not convey. The phrase 'one read per store' sits slightly awkwardly against readOnlyHint=false, but it reads as a credit/consumption concept rather than a claim of read-only semantics, so it is not a real 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?

It is front-loaded and every clause carries information, but the body is a single dense paragraph of country and store enumerations that is hard to scan. Much of the length is unavoidable given no enums in the schema, yet the content would be far more usable as a list rather than a run-on sentence.

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, and the description fills that gap by naming the returned fields (name, price in local currency, was-price, rating, reviews, stock, units sold, link). Combined with the region-to-store mapping and the per_store cap, an agent has everything needed to call it correctly and interpret the response.

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 description coverage is 0% and all four parameters are bare in the schema, so the description carries the full burden — and does: country is defined as two letters with default US plus an exhaustive per-country store mapping, stores is effectively enumerated with every accepted value and its region, per_store is bounded ('up to 12'), and query is implied by 'same product'. This is exactly the compensation the low coverage demands.

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 sentence states a specific verb and resource ('Search a country's big stores for the same product and list each store's results side by side, as a shopper there sees them') and enumerates the returned fields. It is clearly distinct from siblings like search_marketplace, best_sellers or resale_prices because the defining scope is cross-retailer price comparison within a country.

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?

The description gives strong operational guidance: country drives which stores are queried, stores can 'narrow or add', per_store caps results, and specific use cases are called out (AliExpress for 'is it cheaper on AliExpress?', coles for unit prices, idealo as a price comparison). It stops short of naming an explicit alternative sibling or a 'do not use when' condition, so it is clear context without full routing.

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

competitor_keywordsCompetitor's Google searchesAInspect

The Google searches a website pays for with ads (kind=paid: search, searches a month, cost a click, advertisers), or the searches it ranks for (kind=organic: its position, clicks a month, the page). website: the competitor's site. country: two-letter code. limit: 5 to 50. Saved in the user's Puley history.

NameRequiredDescriptionDefault
kindNopaid
limitNo
countryNoUS
websiteYes

TDQS

A3.9/5.0
Behavior4/5

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

The final sentence 'Saved in the user's Puley history' explains the otherwise puzzling readOnlyHint=false on what looks like a pure lookup, which is genuine value beyond the annotations. The 5-to-50 limit range is also disclosed, though nothing is said about what happens when a site has fewer results than the limit or about failure modes.

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

Conciseness5/5

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

The core capability is stated first, then per-parameter notes in a compact labeled form. Despite being a dense single paragraph, every clause carries information and nothing is redundant.

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 listing the fields returned for each kind (searches/month, cost per click, advertisers, position, clicks, page). Combined with the history-persistence note, an agent has enough to call it correctly; only error and empty-result behavior is 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 description coverage is 0%, so the description must carry the parameters, and it does: kind (paid vs organic with the returned metrics for each), website, country as a two-letter code, and limit as a 5-50 range. It omits the defaults (paid, 15, US) that the schema declares, which is a minor remaining 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 names the resource precisely (the Google searches a competitor site pays for or ranks for) and splits it into two explicit modes, paid and organic, each with the fields returned. It does not distinguish itself from close siblings like keyword_research, competitor_report, or find_ads, so an agent cannot route between them from this text 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?

Usage is only implied: the 'website: the competitor's site' phrasing signals this is a competitor-lookup tool, and the kind split hints at choosing paid vs organic. There is no explicit when-to-use, when-not-to-use, or named alternative such as keyword_research for one's own domain.

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

competitor_reportCompetitor reportAInspect

Runs once, in the background: reads a competitor's live ads and website and writes what they push, how they sell and the gaps to use, saves the report in the person's Puley history and emails it to them. competitor: its name or website. The same request again returns its progress or the finished report.

NameRequiredDescriptionDefault
competitorYes

TDQS

A4/5.0
Behavior4/5

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

Annotations only say it is not read-only, is open-world and not destructive; the description adds the details that matter: work happens asynchronously in the background, results are persisted to the person's Puley history, and an email is sent. Those are real side effects an agent must warn about before invoking. The re-call behaviour is disclosed too, though it sits slightly oddly against idempotentHint=false (a repeat call returning the existing run reads as deduplicated).

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 background/one-shot nature, then the parameter hint, then the polling rule. Every clause carries information. Minor awkwardness in the run-on phrasing of the first sentence slightly hurts 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?

With no output schema, the description steps up by naming what the report contains and how the result reaches the user (history plus email). Combined with the polling note and the parameter hint, an agent has enough to invoke it correctly. Only the delivery timing and failure behaviour remain unspecified.

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 single parameter has zero schema description coverage, so the description must carry the meaning — and it does, stating that 'competitor' accepts either a name or a website. That is exactly the disambiguation an agent needs to pass a valid value. It could go further on domain/format expectations, but the core gap is filled.

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 concrete verb chain and a concrete artifact: it reads a competitor's live ads and website, then writes what they push, how they sell and the gaps to use. That is far more specific than the name 'competitor_report' alone. It does not name the neighbouring tools an agent might confuse it with (company_brief, account_report, find_ads, read_site), so sibling differentiation is only implicit.

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 frames the operating context — 'Runs once, in the background' — and tells the agent how to follow up: repeating the same request yields progress or the finished report. That is genuinely actionable polling guidance. It stops short of explicit exclusions or named alternatives for when a lighter tool would be better.

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

copy_how_they_grewCopy how they grewAInspect

Runs once, in the background: reads a brand's live ads, the videos creators make about it, what people post, its news and the Google searches it pays for, and writes the growth moves a smaller business could copy, each with its evidence. Saves the result in the person's Puley history and emails it. brand: its name or website. The same request again returns its progress or the finished result.

NameRequiredDescriptionDefault
brandYes
countryNoUS

TDQS

A3.6/5.0
Behavior4/5

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

With readOnlyHint=false and openWorldHint=true already declared, the description still adds real behavior: it is an asynchronous background job, results persist into the person's Puley history, an email is sent, and re-issuing the same request acts as a status check. It does not say how long a run takes or what happens on failure. There is mild tension with idempotentHint=false, since re-requesting sounds like it returns existing state rather than starting a new run, but it is not a direct contradiction.

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 and the async/persistence behavior are front-loaded, and no sentence is pure filler. The first sentence is long and strings five data sources together, which makes it slightly dense, but it earns its length by describing scope.

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 an open-world, non-read-only background job with no output schema, the description covers the data sources, the deliverable, persistence, email delivery and polling. It still omits expected runtime, cost or quota implications, and any description of the returned result's shape beyond 'growth moves with evidence', and it ignores the second parameter.

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. It partially does, clarifying that 'brand' accepts either a name or a website, which is real added meaning. The 'country' parameter (default US) is never mentioned, leaving half the inputs 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 a concrete verb and deliverable: it reads a brand's live ads, creator videos, social posts, news and paid search, then writes copyable growth moves with evidence. That is far more specific than the sibling names (competitor_report, company_brief) suggest on their own, though it never explicitly contrasts itself with those nearby tools.

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 context is implied through the audience framing ('the growth moves a smaller business could copy'), and there is a genuinely useful polling instruction ('The same request again returns its progress or the finished result'). However, there is no statement of when to prefer this over competitor_report or company_brief, and no guidance on preconditions such as a connected account.

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

creator_checkCheck creatorsAInspect

Up to 10 creators side by side before paying them: followers, typical views or likes on their recent posts, typical as a share of followers, engagement and recent breakout posts. creators: usernames, comma-separated. platform: instagram, tiktok or youtube. Saved in the user's Puley history.

NameRequiredDescriptionDefault
creatorsYes
platformNoinstagram

TDQS

A3.7/5.0
Behavior4/5

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

The annotations declare readOnlyHint=false on what looks like a pure lookup, and the description resolves that apparent oddity by stating results are 'Saved in the user's Puley history' — a genuine side effect the agent could not infer from the annotation alone. It also discloses the 10-creator cap and that it reaches external platforms (matching openWorldHint=true). It stops short of noting idempotency behaviour or what happens on invalid handles.

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 short and the batch limit is front-loaded, but it is written as a run-on fragment with no clear sentence boundaries, and the metric list ('typical as a share of followers') is compressed to the point of ambiguity. Information density is high, yet the phrasing costs 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 only two parameters, no output schema, and annotations covering the safety profile, the essential information is present: inputs, the metrics returned, the batch cap, and the persistence side effect. Missing pieces — return format, behaviour beyond the 10-creator limit, error handling — are minor for a tool this simple.

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 carries the full burden and largely does: 'creators' is defined as comma-separated usernames, and 'platform' is constrained to instagram, tiktok or youtube — a constraint the schema does not encode as an enum. It omits accepted handle formats (with or without '@', URLs) and case sensitivity, leaving a small 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 names the resource (creators) and enumerates the exact payload returned: followers, typical views/likes on recent posts, typicals as a share of followers, engagement, and recent breakout posts. That is far more than the vague verb 'check' conveys on its own. It does not differentiate itself from near neighbours such as viral_outliers, comment_insights, or find_channels, so it falls short of a 5.

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

Usage Guidelines3/5

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

'Up to 10 creators side by side before paying them' implies a vetting/decision-support use case and states a hard batch limit of 10. However, it never says when to prefer this over viral_outliers or find_channels, nor what to do when more than 10 creators must be evaluated. 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.

customers_and_openersCustomers and first messagesAInspect

Runs once, in the background: lists the businesses of a kind in a place with their phone, email and website, and drafts a short first message for each one about what the person sells (offer), for the person to review and send themselves. Puley sends nothing to the businesses. The list is saved in the person's Puley history and emailed to the person. business: the kind of business (dentists). place: a city or area with its country. The same request again returns its progress or the finished list.

NameRequiredDescriptionDefault
offerNo
placeYes
businessYes

TDQS

A3.8/5.0
Behavior4/5

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

With readOnlyHint=false and openWorldHint=true already declared, the description adds the crucial reassurance that 'Puley sends nothing to the businesses' — the drafting is for human review, not automated outreach — and that results persist in history and are emailed. It also discloses the async pattern and the repeat-call polling behavior, which annotations alone would not convey. There is a mild tension with idempotentHint=false (a repeated identical request is described as returning existing progress rather than starting a new job), but it is a nuance about job reuse rather than a claim that the tool is read-only.

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 first sentence front-loads the whole flow (list, then draft, for the person to review), and the delivery facts ('saved in history', 'emailed') and polling rule follow in a sensible order. It is dense and slightly run-on, with the parameter glosses appended inline rather than separated, but almost every clause carries information an agent needs.

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 3-parameter background job with no output schema, the description covers what it produces (a list with contact details plus drafted messages), where results land (history and email), and how to retrieve them (re-issue the request). What is missing is scope or cost expectations — rough runtime, breadth limits on the business list, or credit implications — which an agent would want before firing an open-world job.

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 carries the full burden, and it does: business is glossed as 'the kind of business (dentists)', place as 'a city or area with its country', and offer as 'what the person sells'. That resolves the two genuinely ambiguous inputs and the formatting expectation for place. It still leaves offer's default empty-string behavior and length/format expectations unstated.

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 chain and resource: list businesses of a kind in a place with phone/email/website, then draft a short first message per business from the user's offer. That is far more specific than the title 'Customers and first messages' and an agent can picture the output. It does not, however, distinguish itself from close siblings such as find_leads or find_contact, which an agent would plausibly weigh against it.

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: 'Runs once, in the background' plus 'The same request again returns its progress or the finished list' tells the agent how to poll, which is real guidance for an async job. But there is no explicit when-to-use or when-not-to-use statement, and no pointer to an alternative tool for a narrower lookup (e.g. a single contact or plain lead search).

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

delete_watchDelete a watchA
DestructiveIdempotent
Inspect

Permanently remove one watch and its check history. Earlier alerts remain. An ID that is not one of the user's watches is refused with a message. Requires watch-management permission.

NameRequiredDescriptionDefault
watch_idYes

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, yet the description adds real substance beyond them: exactly what is destroyed (the check history), what survives ('Earlier alerts remain'), how invalid/foreign IDs are handled, and the permission needed. That is precisely the data-loss and error-behavior context an agent needs before calling a destructive tool.

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

Conciseness5/5

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

Four short sentences, front-loaded with the destructive nature and the scope of deletion, then the retention note, the error case, and the permission requirement. Nothing is repeated from the annotations and no sentence is 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?

For a single-parameter destructive tool with no output schema, the description covers consequences, retention, error behavior and authorization, which is close to sufficient. It stops short of routing the agent to list_watches for ID discovery or to pause_watch for the reversible case, which is the main remaining gap.

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

Parameters3/5

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

Schema description coverage is 0%, so watch_id is undocumented in the schema. The description partially compensates by constraining it to an ID that must belong to the user's watches (and implying refusal otherwise), but it never says how to obtain a valid ID, nor adds type or format guidance beyond the integer type in 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 and resource ('Permanently remove one watch') plus the scope of removal ('its check history'), which separates it cleanly from get_watch, list_watches, pause_watch and resume_watch in the sibling list. An agent can tell exactly what this does 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 Guidelines3/5

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

Usage is only implied: the word 'Permanently' hints that pause_watch is the reversible alternative, but that sibling is never named and there is no explicit when-not-to-use guidance. The refusal rule for foreign IDs is the closest thing to a precondition, and the permission requirement covers the access side.

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

drug_pricesDrug pricesAInspect

What a prescription drug costs without insurance at Cost Plus Drugs (Mark Cuban's US mail-order pharmacy), from its published price list: each strength and form, the price for 30, 60 and 90 pills with the pharmacy fee, the total with shipping, and whether it's in stock. drug: generic or brand name (atorvastatin, Lipitor). strength: e.g. 10mg. Says so when Cost Plus doesn't sell it. Prices only, not medical advice. Uses one read and saves the result in the user's Puley history.

NameRequiredDescriptionDefault
drugYes
strengthNo

TDQS

A4.4/5.0
Behavior4/5

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

The annotations declare readOnlyHint=false on what looks like a pure lookup, and the description resolves that apparent oddity by explaining it 'Uses one read and saves the result in the user's Puley history' — a side effect the agent would otherwise not anticipate. It also discloses the not-carried case ('Says so when Cost Plus doesn't sell it'). It does not mention auth, rate limits, or freshness of the published price list.

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 answer (what the drug costs without insurance, and the source), then the returned fields, then the caveats. The long enumeration sentence is dense but each clause maps to a distinct output field. Slightly tighter punctuation and a shorter history note would make it cleaner, but nothing is padding.

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 fully carries the return contract: per strength and form, 30/60/90-pill pricing including the pharmacy fee, shipping-inclusive total, and in-stock status. Combined with the source, the miss behavior, and the history-write note, an agent has everything needed to call this correctly and interpret 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?

With 0% schema description coverage and only bare titles, the description compensates by defining both parameters semantically: drug accepts generic or brand names with concrete examples (atorvastatin, Lipitor), and strength is shown as '10mg'. It leaves one gap: strength defaults to empty and the description never says what omitting it does (presumably return all strengths).

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 — the out-of-pocket cost of a prescription drug at Cost Plus Drugs, sourced from its published price list — and enumerates what is returned (strength/form, 30/60/90-pill prices with pharmacy fee, total with shipping, stock status). This clearly separates it from the price siblings (gas_prices, ticket_prices, subscription_prices, resale_prices) without needing to name them.

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?

The scope phrase 'without insurance at Cost Plus Drugs' tells the agent when this applies and implicitly when it does not (insurance pricing, other pharmacies), and 'Says so when Cost Plus doesn't sell it' sets expectations for misses. 'Prices only, not medical advice' is a useful exclusion. It stops short of explicitly routing to any alternative for non-Cost-Plus pricing queries.

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

employee_reviewsEmployee reviewsBInspect

What it's like to work at a company: its newest Glassdoor reviews with rating, the good, the bad, role, current or former staff and date. company: its name or its Glassdoor reviews link. Saved in the user's Puley history.

NameRequiredDescriptionDefault
limitNo
companyYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, openWorldHint=true, and destructiveHint=false. The description adds useful behavioral context by stating results are 'Saved in the user's Puley history' and by listing the returned review fields, but it does not explain pagination, rate limits, or how the limit parameter affects retrieval.

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 compact and front-loaded, using two sentences with no filler. The field list is somewhat dense but still purposeful.

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 tool with no output schema, the description covers purpose, returned fields, the accepted company identifier, and the history-saving side effect. The main gap is that limit behavior is not described.

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 does clarify that company can be a name or a Glassdoor reviews link, which is valuable, but it does not document the limit parameter or its default of 15.

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: it returns a company's newest Glassdoor reviews, including rating, pros, cons, role, staff status, and date. It is clear enough to distinguish from tools like salaries or company_brief, but it does not explicitly name or contrast with close siblings such as read_reviews.

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, and no alternative tool is named. The only usage cue is implicit: supply a company name or Glassdoor reviews link to get newest reviews.

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

find_adsFind public adsAInspect

Search Meta Ad Library (Facebook/Instagram) or Google Ads Transparency. For Meta, query searches keywords; advertiser targets a Facebook Page URL/id/name. For Google, the advertiser name, website or ID is used. A website keyword is not a verified Page identity. Returns a bounded sample with source ad links, copy, advertiser IDs and destination links when supplied. An access error or an empty filtered sample is not proof that no ads exist. One read allowance per nonempty request; results are bounded by the account allowance, up to 20 ads, and saved in the user's Puley history. Does not create or change advertisements.

NameRequiredDescriptionDefault
limitNo
queryNo
statusNoactive
countryNoALL
platformNometa
advertiserNo

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 quota mechanics (one read allowance per nonempty request), result bounds (account allowance, up to 20 ads), persistence to the user's Puley history, and a false-negative caveat that an access error or empty sample is not proof of no ads. This is genuinely additive context not present in readOnlyHint/openWorldHint. It does not state authentication or per-country filtering behaviour, so it stops 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?

The content is dense but every sentence contributes: platform routing, identity caveat, return contents, false-negative warning, quota/bounds, and the no-mutation statement. The only structural weakness is the mid-sentence line break and a slightly run-on flow that could be split into clearer clauses.

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 summarises what comes back (ad links, copy, advertiser IDs, destination links) and covers quota, bounds, and the read-only-in-spirit caveat. It remains incomplete for a 6-parameter open-world tool because limit, status, country, and platform values are never described.

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 burden, and it explains only 'query' and 'advertiser' semantically, plus an implicit platform split. It says nothing about 'limit', 'status', 'country' (including the 'ALL' default), or the accepted 'platform' values, leaving half the parameters undocumented anywhere.

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 opens with a specific verb and resource — searching the Meta Ad Library (Facebook/Instagram) or Google Ads Transparency — and names the two distinct advertiser-targeting modes. That is enough to separate it from neighbouring tools such as search_posts, google_results, or product_ad_pack 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 gives concrete routing guidance per platform: for Meta, query searches keywords while advertiser targets a Page URL/id/name; for Google, the advertiser name, website or ID is used. It also cautions that a website keyword is not a verified Page identity, which steers correct input choice. What it lacks is explicit when-to-use/when-not guidance relative to siblings or named alternatives.

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

find_carsFind carsAInspect

Cars for sale, cheapest first: in South Africa on Cars.co.za (country ZA, the default), in the US on CarGurus (country US; dealer and private listings nationwide with CarGurus' deal rating; Carvana's online stock for a make without a model; max_km is miles there), in India on CarDekho (country IN; province takes a city such as Mumbai or Delhi), in Brazil on Webmotors (country BR; province takes a city such as São Paulo or Campinas, SP), in Canada on AutoTrader.ca (country CA; province such as Ontario or BC), in the UK on AutoTrader (country GB; max_km is miles; province takes a postcode for distances, e.g. M1 1AE; each car's AutoTrader price verdict and dealer rating) or in Germany, Austria, Belgium, Spain, France, Italy, Luxembourg or the Netherlands on AutoScout24 (country DE, AT, BE, ES, FR, IT, LU or NL; prices in euros). Each car's price, year, mileage, town, fuel, gearbox, power or body, and seller (dealer name, or private), with links. make: e.g. Toyota, VW, BMW. model: e.g. Hilux, Golf, 3 Series. max_price in the local currency; min_year; max_km; province (e.g. Gauteng) or town. Uses one read and saves the result in the user's Puley history.

NameRequiredDescriptionDefault
makeYes
modelNo
max_kmNo
countryNoZA
min_yearNo
provinceNo
max_priceNo

TDQS

A3.9/5.0
Behavior3/5

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

The most valuable disclosure is 'Uses one read and saves the result in the user's Puley history,' which explains why readOnlyHint is false on what looks like a search — that is real context beyond the annotations. It also discloses the exact fields each car returns. It stops short of stating result limits, pagination, or empty-result behavior, so a 3 rather than higher.

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 key scoping facts ('cheapest first', country default) are front-loaded, and nearly every clause carries distinct information. However, the core content is delivered as one enormous sentence with deeply nested parentheticals, making it hard to scan and easy to mis-parse despite its density being roughly justified by eight marketplaces.

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 still specifies the returned fields (price, year, mileage, town, fuel, gearbox, power/body, seller, links) and notes the single-read cost plus history persistence. It omits how many results come back and what happens when nothing matches, which leaves a modest gap for a query tool spanning eight sources.

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?

With 0% schema description coverage across 7 parameters, the description carries the full burden and does: make/model examples, max_price in the local currency, min_year, and the crucial clarification that max_km is interpreted as miles in the US and UK. Province is given per-market meaning — a city in India/Brazil, a region in Canada/South Africa, a postcode in the UK — which the schema cannot convey at all.

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 — 'Cars for sale, cheapest first' — then enumerates the eight marketplaces and their country codes, so an agent knows exactly what this surfaces. It never names the overlapping siblings (search_classifieds, search_marketplace, resale_prices), so differentiation from those relies on inference from the car-specific scope.

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 operational routing: country ZA is the default, each country maps to a distinct marketplace, and province/town semantics differ per market. What it lacks is any statement of when NOT to use it or which sibling to reach for instead, so the guidance is contextual but not exclusive.

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

find_channelsFind YouTube channelsAInspect

Find YouTube channels about a topic: YouTube's own channel results with name, handle, subscribers, verified badge, description and link. Useful for finding creators in a niche. limit: up to 20. Uses one read and saves the list in the user's Puley history.

NameRequiredDescriptionDefault
limitNo
topicYes

TDQS

A4.1/5.0
Behavior4/5

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

The description adds real context beyond the annotations: it costs one read (explaining readOnlyHint=false) and persists the result list into the user's Puley history, a durable side effect the annotations only hint at. It does not cover failure modes or auth requirements, but the credit-cost and side-effect disclosure is the important part.

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, then return fields, then cost/limit/history notes. It is dense and slightly run-on, but every clause carries information; nothing is 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 two-parameter tool with no output schema, the description covers return shape, cost, and persistence, which is most of what an agent needs. It stops short on edge behavior such as what happens when limit exceeds 20 or whether results are deduplicated.

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?

With 0% schema description coverage, the description carries the load and does address both parameters: 'topic' is defined as the subject of the search, and 'limit' gains the ceiling 'up to 20' that the bare schema lacks. The default of 10 and any topic-format guidance remain undocumented, keeping it short of a 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 ('Find YouTube channels about a topic') and immediately enumerates the returned fields (name, handle, subscribers, verified badge, description, link), which cleanly separates it from siblings like find_videos or google_results.

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?

Offers one implied scenario, 'Useful for finding creators in a niche,' but gives no when-not guidance and never names an alternative tool (e.g., find_videos or google_results) for adjacent intents, leaving the agent to infer boundaries from the name alone.

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

find_contactFind who to contactAInspect

The person to contact at a company and their work email, checked: give the company (name or website) and the role (head of marketing) or the person's name. People's contact details need the account owner to turn them on in Puley's settings first; otherwise this says so. Saved in the user's Puley history.

NameRequiredDescriptionDefault
nameNo
roleNo
companyYes

TDQS

A3.7/5.0
Behavior4/5

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

With readOnlyHint=false and openWorldHint=true, the description supplies the missing context: results are 'checked,' contact details are gated behind an account-owner setting in Puley, and the tool reports that state rather than failing silently. It also explains the non-read-only annotation by noting results are 'Saved in the user's Puley history' — a genuinely useful disclosure that annotations alone would not convey. It stops short of describing how verification is performed or what a partially matched result 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.

Conciseness3/5

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

The three sentences each carry information, and the return value is front-loaded. But the opening is a noun phrase rather than a verb, the colon after 'checked' reads awkwardly, and 'otherwise this says so' is vague filler that could have been stated concretely as the returned message.

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, so the description correctly spends effort on the return: a person, their work email, a verification claim, and the fallback message when contacts are disabled. For a three-parameter lookup this covers what an agent needs, with only the multi-match case and result shape left unstated.

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 load, and it largely does: 'company (name or website)' clarifies the accepted format, 'role (head of marketing)' gives a concrete example of the expected phrasing, and 'the person's name' is identified as an alternative targeting path. What it omits is the interaction rule between name and role and what happens when neither is supplied.

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 outcome: 'The person to contact at a company and their work email, checked,' which tells an agent this returns a named contact plus a verified email, not a company profile or a lead list. It does not explicitly distinguish itself from near-neighbours like find_leads or company_brief, so the boundary with siblings is left 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?

It gives the input recipe ('give the company ... and the role ... or the person's name'), which implies when the tool applies. However it never states when to prefer find_leads or company_brief instead, nor whether role and name are mutually exclusive or can be combined, leaving real selection ambiguity.

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

find_eventsFind eventsAInspect

What's on near a place, from Eventbrite: concerts, comedy, classes, markets, festivals, meetups and more, with the date and time, venue, lowest ticket price (or free), whether it's selling fast or sold out, and the link. place: a town or city ('Austin, TX', 'London') or 'online'. country: two-letter code of the place (US, GB, CA, AU, ZA, IE, DE...). query: what kind ('comedy', 'jazz', 'yoga', 'kids'); empty for everything. when: any, today, tomorrow, this weekend, this week, next week, this month, next month, or dates like 2026-11-07 to 2026-11-09. Up to 20 events. Uses one read and saves the result in the user's Puley history.

NameRequiredDescriptionDefault
whenNoany
limitNo
placeYes
queryNo
countryNoUS
free_onlyNo

TDQS

A4.1/5.0
Behavior4/5

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

The description earns its keep by explaining the surprising annotation: readOnlyHint=false makes sense because it 'Uses one read and saves the result in the user's Puley history.' It also caps expectations with 'Up to 20 events' and previews the return payload. Missing only things like failure modes or what happens when the read budget is exhausted.

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 purpose is front-loaded in the first clause and every subsequent clause maps to a parameter or an output field, so density is justified. It reads as one long run-on paragraph rather than structured lines, which costs a little scannability.

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-parameter, no-output-schema tool this covers the essentials: what is searched, what comes back, the result cap, and the side effect on the user's history. Only free_only is left entirely undefined, which is the one real hole.

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 load, and it largely does: it defines place with concrete examples ('Austin, TX', 'London', or 'online'), country as a two-letter code with examples, query with kind examples, and when with a full enumerated value list plus a date-range syntax. The gaps are limit (only hinted at via 'Up to 20 events') and free_only, which is never mentioned.

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?

Opens with a concrete verb+resource framing ('What's on near a place, from Eventbrite') and enumerates the exact content types covered (concerts, comedy, classes, markets, festivals, meetups). This clearly separates it from siblings like find_places, showtimes, ticket_prices and where_to_watch without needing 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 Guidelines3/5

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

The 'what's on near a place' framing plus the query guidance ('empty for everything') implies when to reach for it, but there is no explicit when-not guidance and no sibling is named as an alternative. An agent can infer usage but is not routed.

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

find_flightsFind flightsAInspect

Live fares from Google Flights for a route and dates: each flight's price, airline, stops, departure and arrival times, length and layovers, cheapest first, and Google's own view of whether prices are low, typical or high right now. origin/destination: a city or airport code. depart/return_date: YYYY-MM-DD (no return_date for one way). currency: e.g. USD, ZAR, GBP. Uses two reads and saves the result in the user's Puley history.

NameRequiredDescriptionDefault
departYes
originYes
nonstopNo
currencyNoUSD
destinationYes
return_dateNo

TDQS

A4.1/5.0
Behavior4/5

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

The annotations declare readOnlyHint=false and openWorldHint=true, and the description explains why: 'Uses two reads and saves the result in the user's Puley history', which accounts for the non-read-only profile and the double cost. It also conveys data recency ('live', 'right now'), but does not cover rate limits, quotas, or failure 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?

Content is front-loaded on what is returned, then parameter semantics, then the side effect. It is dense but each clause adds information; the colon-separated parameter notes are slightly run-on, which costs a point.

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 adequately enumerates the fields an agent would receive and notes sorting and price-level assessment. The only substantive gap for a 6-parameter tool is the undocumented 'nonstop' flag and no indication of result limits.

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 carries the full burden and mostly does: it defines origin/destination as a city or airport code, gives the YYYY-MM-DD format for depart/return_date, explains the one-way omission, and gives currency examples. The 'nonstop' boolean is the one parameter left undefined.

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 (live fares from Google Flights for a route and dates) plus the exact returned fields: price, airline, stops, times, duration, layovers, sorting and Google's price-level verdict. This clearly separates it from siblings like flight_status (status of a specific flight) or find_cars/find_stays (other travel verticals).

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 the parameter-level guidance ('no return_date for one way'), which tells the agent how to handle one-way searches. However, it never states when to prefer this over a sibling such as flight_status, ticket_prices or find_stays, nor are any exclusions or prerequisites given.

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

find_homesFind homesAInspect

Homes for sale or rent, newest first: Zillow in the US (city and state such as Austin, TX, or a ZIP), Rightmove in the UK (a town, London area or postcode such as Clapham or SW4; set country to GB), Daft in Ireland (a city or county such as Cork City or Galway; country IE), Trade Me in New Zealand (a city or region such as Christchurch or Wellington; country NZ), MagicBricks in India (a locality and city such as Andheri West, Mumbai, or a city; country IN), ZAP Imóveis in Brazil (a city, with its state for smaller ones such as Campinas, SP; country BR), Inmuebles24 in Mexico (a neighbourhood or city such as Polanco or Guadalajara; country MX), immowelt in Germany (a city such as Berlin or München; country DE; rooms, not bedrooms), Domain in Australia (a suburb and state such as Bondi, NSW; country AU; rents per week; slower, about 30-50 s), Zolo in Canada (a city, or a neighbourhood and city such as Annex, Toronto; country CA; Quebec places such as Montréal or Laval go to Centris), Fotocasa in Spain (a city such as Madrid or Marbella; ES), SeLoger in France (a city, or a town and department such as Annecy, 74; FR; slower), Immobiliare.it in Italy (a city such as Milano or Roma; IT; slower), Funda in the Netherlands (a city such as Amsterdam or Utrecht; NL; about a minute), SUUMO in Japan (a Tokyo ward such as Shinjuku, a big city's ward such as Kita, Osaka, or a town and prefecture such as Kamakura, Kanagawa, in English; country JP; rent shows each room, buy shows resale condos) and Property24 in South Africa (a suburb and city such as Sea Point, Cape Town; set country to ZA). Each listing's price, beds, baths, size, address, when it was listed or reduced and, on Zillow, its Zestimate and rent estimate, with links. mode: buy or rent. max_price in the local currency, 0 for any. Uses one read and saves the result in the user's Puley history.

NameRequiredDescriptionDefault
modeNobuy
placeYes
countryNo
min_bedsNo
max_priceNo

TDQS

A3.8/5.0
Behavior4/5

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

Adds real context beyond the annotations: it explains the readOnlyHint=false by disclosing that the call 'uses one read and saves the result in the user's Puley history', and it flags latency for several portals (Domain about 30-50 s, Funda about a minute, SeLoger and Immobiliare slower). It also describes the listing payload (price, beds, baths, size, address, listed/reduced dates, Zestimate on Zillow) which is valuable given there is no output schema. Error behavior and failure modes are not covered.

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 and nearly every clause carries routing information an agent needs, but the sixteen portal entries are delivered as one dense semicolon-separated block rather than a scannable list or table. The repeated 'country XX' pattern and per-portal examples make it long and hard to parse in a single pass.

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 five-parameter open-world aggregation tool with no output schema and no annotation-level detail, this is close to complete: input formats, currency handling, return fields, latency warnings, and the history side effect are all stated. The gaps are min_beds semantics and any mention of failure or empty-result behavior.

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 parameter burden. It covers place in depth (per-country formats and examples), country via the per-portal ISO codes, max_price ('in the local currency, 0 for any'), and mode ('buy or rent'). It never explains min_beds, and only hints at it obliquely ('rooms, not bedrooms' for immowelt), leaving one of five parameters undefined.

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?

A specific verb+resource ('Homes for sale or rent, newest first') with an exhaustive enumeration of the source portals per country, so an agent knows exactly what corpus is searched. It never names a sibling (find_stays, find_cars, search_classifieds, search_marketplace) to draw the boundary, so sibling differentiation is left implicit rather than stated.

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

Usage Guidelines4/5

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

Strong conditional guidance: it tells the agent which portal applies to which country, what location format each expects (e.g. 'Bondi, NSW' for Domain, 'Annex, Toronto' for Zolo, 'SW4' for Rightmove), and routes Quebec places to Centris. It stops short of stating exclusions — nothing says when to prefer find_stays or search_classifieds instead — so it is clear context without explicit negative routing.

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

find_jobsFind jobsAInspect

Jobs for a search and place: title, company, location, pay where listed, job type, when posted and a snippet, with links. Read from a national job board for au and nz (Seek), za (PNet), gb (Totaljobs), de and at (StepStone) and ca (Job Bank), and from Indeed for us, in, ie and other countries, with company ratings where shown. country: two-letter code. board: 'upwork' for freelance work instead (worldwide; budget, experience level, skills). days: any, 1, 3, 7 or 14 (posted within). sort: relevance or date. limit: 5 to 50. Uses one read and saves the result in the user's Puley history.

NameRequiredDescriptionDefault
daysNoany
sortNorelevance
boardNo
limitNo
queryYes
countryNous
locationNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations mark this as openWorldHint=true, destructiveHint=false and readOnlyHint=false, and the description explains the surprising part of that profile: 'Uses one read and saves the result in the user's Puley history', which clarifies why a search is not read-only and implies a cost/credit model. That is genuine added context beyond the annotations, though it stops short of stating failure modes, rate limits, or 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.

Conciseness4/5

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

The return fields and data sources are front-loaded before the parameter list, and each sentence carries information. The parameter run-on is dense and slightly telegraphic ('days: any, 1, 3, 7 or 14'), but no sentence 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 seven parameters, no output schema, and zero schema descriptions, the description supplies the return field list, the per-country board mapping, allowed parameter values, and the side effect of history-saving. What remains thin is how location interacts with country and what the query string is matched against.

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 carries the full burden and mostly delivers: it gives allowed values for days (any, 1, 3, 7, 14), sort (relevance or date), limit range (5 to 50), the format of country (two-letter code) and the special board value 'upwork' with its distinct return fields. Only query and location are left undefined, which keeps it below a 5.

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 ('Jobs for a search and place') and enumerates the returned fields (title, company, location, pay, job type, posted date, snippet, links), which makes the output shape unambiguous. It does not explicitly differentiate itself from adjacent find_* siblings such as find_leads or search_classifieds, but the job-board framing is distinctive enough to route correctly.

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 the country/board coverage map and the in-tool alternative 'board: upwork for freelance work instead', which is a useful routing rule. However there is no explicit when-to-use or when-not guidance against sibling tools, and no stated prerequisites for the country/board combination.

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

find_leadsFind leadsAInspect

Local businesses to sell to, in one call: the businesses Google Maps lists for a kind of business in a place, each with its rating, reviews, phone number, business email, WhatsApp, website and social profiles from its own website, as one table. what: the kind of business (dentists, solar installers, wedding venues). where: a city or area with its country. count: up to 60 a call (60 take about a minute). min_rating: 0 for any, or 3, 3.5, 4 or 4.5. Contact details are each business's own published ones. The result is saved in the user's Puley history, with a link that downloads the table as a spreadsheet.

NameRequiredDescriptionDefault
whatYes
countNo
whereYes
min_ratingNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare non-read-only, open-world, non-idempotent, non-destructive behavior, and the description adds genuinely new context beyond that: latency expectations (~1 minute for 60), side effects (results persisted in the user's Puley history with a spreadsheet download link), and provenance (contact details are each business's own published ones). It does not cover failure modes or what happens with zero results, but the added context is meaningful.

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 opening sentence is long and clause-heavy, cramming the return shape, provenance, and table format into one breath before the parameters are addressed. Later sentences become telegraphic fragments ('what: the kind of business', 'count: up to 60 a call'), which are efficient but inconsistent in register with the opener.

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 describes the result shape (one table of businesses with named fields) and where it lands (Puley history plus spreadsheet link). For a 4-parameter, open-world scraping tool it is nearly complete; only edge behavior such as empty results or what happens beyond 60 leads is unaddressed.

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 description coverage is 0%, so the description carries the full burden and does so: 'what' is explained with concrete examples (dentists, solar installers, wedding venues), 'where' specifies a city or area with its country, 'count' gives the ceiling (60) and timing, and 'min_rating' enumerates the accepted values (0, 3, 3.5, 4, 4.5). This is information the schema lacks entirely.

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 resource and enumerates what each record contains (rating, reviews, phone, business email, WhatsApp, website, social profiles), which is far more specific than the bare name. It stops short of explicitly distinguishing itself from near-siblings like find_places or maps_rank, which also deal with places/business data.

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 ('Local businesses to sell to, in one call'), which signals a lead-generation intent, and the parameter notes give practical constraints (up to 60 per call, ~1 minute). However there is no explicit when-to-use / when-not-to-use guidance and no named alternative among the many find_* siblings.

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

find_newsFind newsAInspect

The latest news about something, newest first, as a country's edition shows it: each article's headline, publisher, time, summary and the publisher's own link. country: two-letter code (US, GB, ZA, AU, IN...). period: any, hour, day, week or month. limit: up to 30. Uses one read and saves the result in the user's Puley history.

NameRequiredDescriptionDefault
limitNo
queryYes
periodNoany
countryNoUS

TDQS

A3.8/5.0
Behavior4/5

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

The annotations declare readOnlyHint=false and openWorldHint=true, and the description usefully explains why: it 'saves the result in the user's Puley history', which reconciles a read-looking tool with a non-read-only hint. It also discloses a cost signal ('uses one read'), which is exactly the kind of quota context annotations cannot carry; it stops short of saying whether history entries can be removed or whether repeated calls are deduplicated.

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 the tool returns before dropping into compact per-parameter notes; nearly every clause carries information. The telegraphic colon-list style is efficient but slightly dense, and the return-field enumeration overlaps with what an output schema would normally cover.

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 four parameters, no output schema and open-world scope, the description covers return shape, ordering, edition semantics, all enum-like values and a side-effect/cost note. The remaining gaps — defaults, history retention, and how results differ from google_results — are modest for a tool of this complexity.

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 carries the full burden and largely does: it gives country as two-letter codes with examples (US, GB, ZA, AU, IN), enumerates the legal period values (any, hour, day, week, month), and caps limit at 30. It omits the defaults (limit 12, period 'any', country 'US') and leaves query undescribed beyond 'about something', which keeps it from a 5.

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 and scope: latest news for a query, newest-first ordering, rendered as a country edition, with the exact fields returned listed. It is clearly distinct from siblings like find_videos or search_posts by virtue of the 'news' framing, but it never names a near-neighbour such as google_results or search_trends to say which to prefer.

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 by the resource name — an agent can infer 'use this to look up current news' but there is no explicit when-to-use, when-not, or alternative-naming guidance. No prerequisites (auth, plan, quota tier) are stated.

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

find_pinsSearch PinterestAInspect

Pinterest's top pins for a search, as Pinterest ranks them: each pin's title, description, the site it links to, the creator and their followers, its board, likes, when it was saved and its picture, plus the sites linked most. Good for ideas and inspiration (decor, recipes, outfits, weddings, crafts) and for seeing which sites and creators rank on Pinterest for a topic. limit: up to 25. Uses one read and saves the result in the user's Puley history.

NameRequiredDescriptionDefault
limitNo
queryYes

TDQS

A3.9/5.0
Behavior3/5

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

The description usefully explains the surprising annotation combination: readOnlyHint=false and non-idempotent are accounted for by 'uses one read and saves the result in the user's Puley history', which the agent could not infer from the annotations alone. It also discloses the limit ceiling of 25. It says nothing about cost, rate limits, or what happens on subsequent identical calls despite idempotentHint=false.

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

Conciseness4/5

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

Front-loaded with the core statement and free of filler; the returned-field enumeration earns its space because there is no output schema. The sentence is long and dense, but nothing is redundant.

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, describing the returned fields and the linked-sites summary is exactly the needed compensation, and the history side effect is disclosed. Gaps remain around query formatting and whether a follow-up call (e.g. more_results) is needed to go past 25.

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 both parameters. It adds real meaning for limit ('up to 25', matching the schema default but revealing the cap) and implies query is a topic/search string. It gives no query syntax guidance (keywords vs phrases, language, locale), leaving the main required parameter underspecified.

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 ('Pinterest's top pins') plus scope ('for a search, as Pinterest ranks them') and enumerates what each result carries. It is readily distinguishable from sibling search tools such as find_videos, search_posts, and google_results.

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 frames when this applies ('good for ideas and inspiration... and for seeing which sites and creators rank on Pinterest for a topic'), which steers the agent well. It does not name an alternative tool or state when not to use it, so it falls 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.

find_placesFind placesAInspect

List the businesses or places Google Maps shows for a search, such as 'coffee shops' in 'Austin, TX': name, category, rating, review count, address, public phone, website, whether it is open now and its Maps link. limit: up to 60; uses one read per 20 places, and the list is saved in the user's Puley history. Business listings only; never people. Meant for research, not bulk marketing messages.

NameRequiredDescriptionDefault
limitNo
queryYes
locationNo

TDQS

A4.6/5.0
Behavior5/5

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

Adds substantial behavior beyond the annotations: a credit/cost model ('uses one read per 20 places'), a persistent side effect ('saved in the user's Puley history'), and a hard output cap ('up to 60'). The history-saving disclosure is especially valuable because it explains why readOnlyHint is false despite this being a lookup, so the agent will not assume the call is free of side effects.

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 front-loaded: the resource and return fields come first, then cost/limit, then scope exclusions. It is a single run-on block rather than structured lines, but no sentence is filler and each clause carries operational 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 three-parameter tool with no output schema, the description supplies the return shape, the cost model, the result cap, the persistence side effect, and the scope boundary. An agent has everything needed to decide whether to call it and what to expect back.

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?

With 0% schema description coverage the description has to carry the parameter burden, and it mostly does: query is illustrated with a concrete 'coffee shops' in 'Austin, TX' shape, and limit is bounded ('up to 60') against the schema's bare default of 20. The location parameter is only implied by the example format rather than described directly, leaving a small gap.

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 ('List the businesses or places Google Maps shows for a search') and enumerates the returned fields (name, category, rating, review count, address, phone, website, open-now, Maps link). It also draws a hard boundary against the nearest sibling category with 'Business listings only; never people', separating it from find_leads and find_contact.

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 when-not guidance: 'Business listings only; never people' and 'Meant for research, not bulk marketing messages', which steers the agent away from lead-gen/outreach use. It stops short of naming a specific alternative tool to use instead for people or bulk messaging, 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.

find_staysFind places to stayAInspect

Places to stay on Airbnb and Booking.com for a place and dates, side by side: each stay's price for the dates and a night, rating, area, room and free cancellation, with links that open those dates. checkin/checkout: YYYY-MM-DD (missing dates are assumed two weeks out for two nights and flagged). max_per_night: in the currency, 0 for any. sort: price or rating. sites: airbnb, booking (default both). Uses one read and saves the result in the user's Puley history.

NameRequiredDescriptionDefault
sortNoprice
placeYes
sitesNo
adultsNo
checkinNo
checkoutNo
currencyNoUSD
max_per_nightNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, openWorldHint=true, and idempotentHint=false, and the description supplies the missing 'why': it 'uses one read and saves the result in the user's Puley history,' which explains the non-read-only flag and discloses a persistent side effect. It also discloses the silent default behavior for omitted dates ('assumed two weeks out for two nights and flagged'), which is exactly the kind of 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?

The purpose and return shape are front-loaded in the first clause, followed by compact per-parameter notes; nearly every phrase carries information. It is a dense run-on sentence rather than cleanly structured lines, which costs a little readability but not content.

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 an 8-parameter, no-output-schema, open-world search tool, the description covers result contents, defaults, filtering conventions, and the history-write side effect, so an agent could call it correctly without opening the schema. Remaining gaps are minor: guest count semantics, result volume/pagination, and any failure behavior when a site returns nothing.

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?

With schema description coverage at 0% across 8 parameters, the description carries the burden and largely meets it: it documents checkin/checkout format and default behavior, max_per_night units and the 0-means-any convention, sort values (price or rating), and sites values (airbnb, booking, default both). The gaps are adults (default 2) and currency (only indirectly referenced via 'in the currency'), so coverage is strong but not complete.

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 and resource ('places to stay on Airbnb and Booking.com ... side by side') and enumerates the returned attributes (price for the dates and a night, rating, area, room, free cancellation, links). It does not, however, distinguish itself from near-neighbors in the sibling list such as find_homes or find_places, leaving an agent to guess which lodging 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?

Usage is implied rather than stated: an agent can infer this is the tool for accommodation searches with a place and dates. There is no explicit when-to-use/when-not framing and no routing guidance against find_homes, find_places, or find_cars, so the choice among travel-search siblings is left to inference.

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

find_toolFind a tool for a jobA
Read-onlyIdempotent
Inspect

Search a catalogue of about 4,000 data tools by the job to be done: keyword search volumes and ideas, backlinks and site metrics, Google, Bing, news and maps results, TikTok, Instagram, YouTube, X, Reddit, Facebook and Threads profiles, posts, comments and hashtags, ad libraries, company search and company data, Amazon, app store and product data, stock prices and more; people's work emails and phone numbers when the account has turned that on. Each tool found comes with its id, what it does, the inputs it takes and about how many reads one call uses. Searching uses no reads.

NameRequiredDescriptionDefault
jobYes
limitNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the description's job is to add context — and it does, disclosing catalogue size (~4,000 tools), exactly what each result record contains (id, description, inputs, approximate read cost), and that the search itself consumes no reads. Only the result-set behavior (ranking, pagination, what happens on zero matches) 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 cost hint are front-loaded in the first clause, and the closing sentence about result contents and zero read cost earns its place. The long middle enumeration of data categories is defensible for query matching but is a laundry list that could be 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?

With no output schema, the description correctly compensates by describing the shape of each returned record and the read-cost field. Combined with the free-search disclosure, an agent has enough to call it correctly, though the missing `limit` semantics and the unstated hand-off to use_tool leave small gaps.

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 clarifies that `job` is a natural-language job-to-be-done rather than a keyword or tool name, which is genuinely useful. But the `limit` parameter (default 8) is never mentioned, leaving half the parameters undocumented in both schema and description.

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 — "Search a catalogue of about 4,000 data tools by the job to be done" — which unambiguously identifies this as a meta/discovery tool, distinct from every sibling that performs the actual data work (keyword_research, find_news, check_backlinks, etc.). The category enumeration further pins down the scope of what is searchable.

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?

Clear context is given: search by job description, and "Searching uses no reads" tells the agent this is a free pre-step. However, it never names the natural follow-on (use_tool) or states when NOT to search — an agent must infer the two-step discover-then-invoke flow from the phrase "Each tool found comes with its id."

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

find_videosFind videosAInspect

Find videos about a topic: YouTube's own search results (title, channel, views, length, how long ago, link), or, with platform 'tiktok', the videos TikTok lists under a hashtag, or, with platform 'instagram', the popular reels under an Instagram hashtag (plays, creator, caption). sort: relevance, date or views (YouTube). uploaded: any, today, week, month or year (YouTube). limit: up to 20. Uses one read and saves the list in the user's Puley history.

NameRequiredDescriptionDefault
sortNorelevance
limitNo
queryYes
platformNoyoutube
uploadedNoany

TDQS

A4/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and openWorldHint=true; the description supplies the reason by disclosing "Uses one read and saves the list in the user's Puley history", which explains the cost and the side effect of a saved history entry. It also previews the returned fields per platform in the absence of an output schema. It does not cover failure modes 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-loaded with the core purpose, then per-platform return fields, then per-parameter constraints; almost no filler. The prose is a single run-on block with line-wrapped parentheticals, so the constraint list takes a second pass 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?

For a 5-parameter open-world search with no output schema, the description covers platform behavior, result shapes, sort/filter scope and the credit cost, which is close to everything an agent needs to call it correctly. Pagination and error behavior are the only notable omissions.

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 description coverage is 0% and no enums are declared, so the description carries the full burden and largely discharges it: it gives the accepted values for sort, uploaded and platform, scopes sort and uploaded to YouTube only, and caps limit at 20. Defaults are left to the schema, but every parameter gains meaning the raw schema lacks.

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 ("Find videos about a topic") and immediately enumerates what each platform variant returns, so the agent knows this is a social-video search rather than a web search. It does not name a sibling to contrast with (e.g. google_results, find_news, watch_video), so the differentiation is implicit rather than explicit.

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

Usage Guidelines3/5

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

The description makes the platform choice clear (youtube default, tiktok hashtag, instagram reels under a hashtag) and lists the sort/uploaded options, which implies when to pick each. However, it never says when to prefer this over sibling tools like google_results or find_channels, nor does it give prerequisites or exclusions.

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

flight_statusFlight statusAInspect

Where a flight is right now, from FlightAware: whether it's on time, delayed, in the air, landed, cancelled or diverted, with departure and arrival times (local), gates and terminals, the aircraft, and the same flight on other days. flight: the flight number, e.g. BA117, UA 1, DL1. Uses one read and saves the result in the user's Puley history.

NameRequiredDescriptionDefault
flightYes

TDQS

A4/5.0
Behavior4/5

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

The description adds real context beyond the annotations: it discloses the cost ('Uses one read') and a persistence side effect ('saves the result in the user's Puley history'), which usefully explains why readOnlyHint is false for a lookup-style tool. It also attributes the upstream data source (FlightAware), implying open-world, externally-dependent results. It stops short of covering failure modes or staleness of the live data.

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 answer content is front-loaded in the first clause and the enumerated status list is efficient. The single sentence is dense and slightly run-on with its long series of returned fields, but no sentence is filler.

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 one-parameter tool with no output schema, the description covers the return value in detail (status category, local times, gates, terminals, aircraft, other days), notes the cost and the history write, and explains the input format by example. What remains — date anchoring and unknown-flight behavior — is minor relative to a tool this simple.

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 parameter's meaning, and it does add value by naming it ('flight: the flight number') and giving varied format examples with and without spaces (BA117, UA 1, DL1). It does not clarify whether the lookup is anchored to today's date or how the 'same flight on other days' return is keyed, leaving a genuine ambiguity given the single free-text parameter.

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 precise resource and scope: real-time status of one flight from FlightAware, enumerated as on time/delayed/in the air/landed/cancelled/diverted, plus the specific data returned (local departure and arrival times, gates, terminals, aircraft, same flight on other days). This is clearly distinguishable from the search-oriented sibling find_flights, which locates flights rather than reporting one flight's current state.

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 'Where a flight is right now' — the agent can infer this is for looking up a known flight number, not for discovering flights. However, there is no explicit when-to-use versus find_flights, no note about when the answer would be ambiguous (e.g. multiple days or unknown flight numbers), and no exclusions.

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

gas_pricesGas pricesAInspect

The cheapest gas near a US or Canadian ZIP or postal code or a town ('78701', 'Austin, TX', 'M5V 2T6'), from GasBuddy: each station's price per gallon, address and how long ago the price was reported, cheapest first, plus the state's and country's average today. fuel: regular, midgrade, premium or diesel. Uses one read and saves the result in the user's Puley history.

NameRequiredDescriptionDefault
fuelNoregular
placeYes

TDQS

A4.2/5.0
Behavior4/5

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

The description explains the otherwise puzzling readOnlyHint=false annotation by disclosing the side effect: the result is saved to the user's Puley history. It also adds cost/quota context ('uses one read'), the upstream source, result ordering, and freshness metadata (how long ago each price was reported) that no annotation conveys.

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?

Content is front-loaded with purpose, then output shape, then parameters, with no filler sentences. It reads as one dense run-on paragraph, which slightly hurts scannability but costs no wasted words.

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, no-output-schema lookup tool, it covers source, region, return fields, ordering, quota cost, and the history side effect. Minor gaps remain, such as whether Canadian prices are per gallon or per litre and what error behavior looks like for unsupported locations.

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 description coverage is 0%, so the description must carry the parameters, and it does: it gives three concrete place formats for the required 'place' argument and enumerates the fuel options (regular, midgrade, premium, diesel) that the schema leaves as a bare string with only a default. This is meaning the schema does not provide.

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 and resource ('the cheapest gas near a ... ZIP or postal code or a town'), names the data source (GasBuddy), and enumerates the payload (price per gallon, address, report age, cheapest first, plus state and country averages). It is unambiguously distinct from price siblings such as drug_prices, resale_prices, or subscription_prices.

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?

Input examples ('78701', 'Austin, TX', 'M5V 2T6') imply the intended calling context and the geographic scope is US/Canada only, which is implicit guidance. However, there is no explicit statement of when to prefer this tool over a sibling lookup or what happens outside those regions, so usage is 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.

get_watchWatch detailsA
Read-onlyIdempotent
Inspect

Read one of the user's watch IDs and its recent check history, last success, retry schedule and delivery state. Does not run a check.

NameRequiredDescriptionDefault
watch_idYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover safety (readOnlyHint, idempotent, non-destructive, closed-world), so the description's job is to add context — and it does: it discloses the returned data surface and pre-empts the main confusion by stating the call does not execute a check. It stops short of saying what happens for an unknown or non-owned watch_id.

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, zero filler, returned fields front-loaded and the negative constraint placed last where it functions as a boundary. Every clause earns its place.

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 one parameter and no output schema, the description compensates well by naming the response fields. The remaining gap is provenance of the watch_id and error behavior, minor for a read-only single-record fetch.

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 single watch_id parameter carries 0% schema description coverage, and the description only clarifies that it is 'one of the user's watch IDs' — useful ownership scoping but no hint on how the ID is obtained or what an invalid value yields.

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 ('Read ... watch') and enumerates exactly what comes back: recent check history, last success, retry schedule, delivery state. The closing clause 'Does not run a check' carves it apart from check_watch_now, though it never names that sibling 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?

The 'Does not run a check' line implies usage (inspect state rather than trigger execution), but there is no positive guidance such as 'use list_watches first to obtain a watch_id' and no exclusions against pause_watch/resume_watch/delete_watch, which all take the same identifier.

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

google_resultsGoogle resultsAInspect

The results Google shows for a search, in order (title, site, snippet, link), as a searcher in that country sees them, and where a site ranks among them. query: the search. site: a website to find in the results (optional). limit: 3 to 30. Saved in the user's Puley history.

NameRequiredDescriptionDefault
siteNo
limitNo
queryYes
countryNoUS

TDQS

A3.6/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and openWorldHint=true, and the description usefully explains why: results are 'Saved in the user's Puley history,' disclosing the write-like side effect the annotations hint at. It also discloses that results are country-localized and ordered, which is behavior beyond the structured fields, though rate limits or freshness/caching behavior remain 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 capability and return fields are front-loaded in the first clause, and every subsequent fragment adds a parameter or scope detail. The sentence is somewhat run-on, but there is no filler or redundant restatement of the title.

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 the right thing by enumerating the returned fields and their ordering. It nonetheless leaves gaps an agent would hit in practice: no pagination path (the more_results sibling exists but is never referenced), no site-parameter format, and no indication of what an empty or failed lookup 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 0%, so the description must carry parameter meaning. It does clarify query, site ('a website to find in the results'), the 3–30 range for limit, and implicitly the country parameter via 'as a searcher in that country sees them.' It still leaves the site format (domain vs URL) and default behavior unnamed, so compensation is partial.

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 (Google results for a search) and specifies the returned shape in order (title, site, snippet, link), plus the rank-tracking angle. It is clearly distinct from generic siblings like read_site or find_news, though it never explicitly contrasts itself with the closest alternative, more_results.

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 'as a searcher in that country sees them, and where a site ranks among them' — i.e., use this for localized SERP inspection and rank checks. However, there is no explicit when-not guidance, no mention of when to switch to more_results for pagination, and no prerequisites stated.

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

is_it_realIs it real?AInspect

Check whether the books, songs, albums, films, shows, papers or citations, people, quotes, places or products named in an answer really exist: each comes back Real (with its real details and a link), Different details (exists, but with another author, artist, year or speaker), Misattributed or Disputed (quotes), Closed (places), Not found, or Couldn't confirm. People come with their description and dates, so it also settles whether someone has died. Sources: Open Library and Apple Books, Apple Music and Deezer, JustWatch, OpenAlex and Crossref, Wikidata, Wikiquote, Google Maps, Amazon US. Up to 15. Uses one read and saves the result in the user's Puley history.

NameRequiredDescriptionDefault
thingsYes

TDQS

A4.3/5.0
Behavior5/5

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

With readOnlyHint=false and no output schema, the description carries the burden well: it explains why the call is not read-only ('Uses one read and saves the result in the user's Puley history'), discloses the batch cap, lists the upstream sources consulted (Open Library, Deezer, JustWatch, OpenAlex, Wikidata, Google Maps, Amazon US), and enumerates the possible verdicts (Real, Different details, Misattributed/Disputed, Closed, Not found, Couldn't confirm). That is substantive behavior beyond the annotations, consistent with openWorldHint=true.

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 purpose and the verdict list are front-loaded in the first sentence, with sources and cost shoved to the back, which is the right ordering. The middle sentence is dense – a long comma-separated source roster – but each element is informative for trust assessment rather than 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 moderate-complexity, open-world lookup tool with no output schema, the description covers what to send (kinds, cap), what comes back (six verdict types plus link/details), and what it costs. It does not say how partial or per-item failures appear when only some of the 15 items resolve, which is the main remaining gap.

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

Parameters3/5

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

The top-level `things` array is undocumented in the description beyond the '15' cap, and the reported schema coverage is 0% (though the nested Thing properties do carry their own field descriptions). The description adds the batch constraint and clarifies that quotes are checked as words and people come back with description/dates, which is useful but limited relative to the ten-value `kind` enum and the `by`/`year`/`place` disambiguators.

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 opens with a specific verb + resource: 'Check whether the books, songs, albums, films, shows, papers or citations, people, quotes, places or products named in an answer really exist.' It enumerates the exact entity kinds it handles, which matches the `kind` enum in the schema, so an agent can distinguish it from look-alike siblings such as check_links, google_results, or find_news 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 implies the trigger context strongly ('named in an answer' – i.e. fact-checking a draft or response) and gives a hard operating limit ('Up to 15') plus a cost note ('Uses one read'). It does not explicitly name an alternative tool or state when NOT to use it, so it falls short of a 5, but the usage context is unambiguous.

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

keyword_researchKeyword researchAInspect

How many people search Google for something each month, what advertisers pay per click, whether interest is rising or falling, and the related searches people type, in one table. keywords: up to 10 searches, comma-separated (standing desk, standing desk converter). country: two-letter code. Numbers are Google's own (Google Ads data). Saved in the user's Puley history.

NameRequiredDescriptionDefault
countryNoUS
keywordsYes

TDQS

A4/5.0
Behavior4/5

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

With readOnlyHint=false declared, the description supplies the reason: results are 'Saved in the user's Puley history', explaining why a lookup tool is not read-only. It also discloses the data provenance ('Numbers are Google's own (Google Ads data)') and a hard input limit (up to 10 keywords) that the annotations do not cover. It stops short of describing rate limits, failure modes, or how the history entry behaves.

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 payoff (the four metrics in one table), then parameter formats, then provenance — a sensible order with little waste. The opening is a long clause chain rather than a crisp summary sentence, which slightly slows scanning.

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 naming the returned columns ('in one table') and the data source, plus the 10-keyword limit. Missing are the table's actual column layout for multi-keyword input and any error or partial-failure behavior, but nothing essential to making the call is absent.

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 description coverage is 0%, so the description carries the full burden and does: keywords is comma-separated with a concrete two-term example and a 10-item cap, and country is specified as a two-letter code. That is meaningfully more than the bare string types in 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 enumerates the exact outputs (monthly search volume, cost-per-click, trend direction, related searches) delivered 'in one table', so an agent can tell what resource it gets back. The verb is only implicit ('gives you this data'), and it never distinguishes itself from the sibling search_trends, which plausibly also covers 'whether interest is rising or falling'.

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 by the tool's subject matter; there is no statement of when to prefer it over search_trends, google_results, or find_ads, and no exclusions or prerequisites (e.g., account connection, quota). An agent can infer intent but must guess at boundaries.

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

linkedin_tiktok_adsLinkedIn and TikTok adsBInspect

An advertiser's ads on LinkedIn (from LinkedIn's Ad Library: headline, text, type, start date) or TikTok (its ads and boosted posts with views and likes). platform: linkedin or tiktok. advertiser: the company's name, or its website (needed for TikTok). Saved in the user's Puley history.

NameRequiredDescriptionDefault
limitNo
countryNoALL
platformYes
advertiserYes

TDQS

B3.2/5.0
Behavior3/5

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

The annotations declare readOnlyHint=false with destructiveHint=false and openWorldHint=true; the description usefully explains the write side by noting results are 'Saved in the user's Puley history', which reconciles the non-read-only hint. It also sketches what each platform returns. It does not disclose coverage limits, rate behavior, or what happens when an advertiser isn't found, which matters for an open-world lookup.

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 the tool returns before the parameter hints. The parenthetical source attribution and field list are dense but earn their place; minor run-on quality from stacked parentheses.

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 only four flat parameters, the description covers the core of what an agent needs: what comes back per platform and how to specify platform/advertiser. The remaining gap is the undocumented limit and country parameters, which could change result sets silently.

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 four parameters, so the description must carry the load; it explains 'platform' (linkedin or tiktok) and 'advertiser' (company name, or website required for TikTok), which is genuinely additive. It says nothing about 'limit' or 'country' (default 'ALL'), 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 resource (advertiser ads on LinkedIn's Ad Library or TikTok's ad/boosted-post inventory) and the fields returned (headline, text, type, start date; views and likes), so an agent can distinguish it from generic siblings like find_ads. It would be a 5 if it explicitly contrasted itself with those siblings.

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?

It states the accepted values for platform and how to identify the advertiser, but gives no guidance on when to pick this tool versus find_ads, ugc_ad, or product_ad_pack. There are no exclusions or prerequisites mentioned.

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

list_connected_accountsList connected website accountsA
Read-onlyIdempotent
Inspect

List this user's saved website connections that are explicitly enabled for AI reading. Sign-in and risk consent happen only in Puley, at manage_url; Puley never takes passwords or codes through chat. Does not connect accounts or change permissions.

NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so safety framing is covered. The description still adds substantive context beyond them: the result set is filtered to connections explicitly enabled for AI reading, and credentials are never collected in chat — behavior an agent could otherwise get wrong by attempting a sign-in flow.

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 sentences, front-loaded with what is listed, then the consent location, then the exclusion. The security reassurance about passwords and codes is defensible because it prevents a wrong action, though the opening phrase partly restates the 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?

For a parameterless read tool with no output schema, this covers what is returned, what is excluded, and where the user-side consent happens. It doesn't indicate what a connection record contains or what an empty result means, but neither is essential to calling 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?

The tool takes zero parameters, so the schema has nothing to explain and the description has nothing to compensate for. Baseline 4 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?

Names a specific verb and resource ('List this user's saved website connections') and narrows scope to those 'explicitly enabled for AI reading'. The distinction from the sibling read_with_account (which presumably performs the reading) is left implicit, so an agent must infer the relationship rather than being told it.

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 when-not ('Does not connect accounts or change permissions') and routes the sign-in/consent step to manage_url in Puley. It stops short of naming a sibling to call instead when the agent's real goal is reading content through one of these connections.

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

list_modelsList the modelsA
Read-onlyIdempotent
Inspect

The models that make pictures (kind=image), voice-overs (voice), music or videos (video), with about how many reads one file uses, whether a video model can start from a picture and has sound, and what each is good for. photo=true lists only the ones that start from or edit a picture. Uses no reads.

NameRequiredDescriptionDefault
kindNovideo
photoNo

TDQS

A3.7/5.0
Behavior4/5

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

The annotations already establish read-only, idempotent, non-destructive, closed-world behavior. The description adds non-schema context: the call consumes no reads and the results include read costs, video image-start/sound support, and model strengths, though it does not discuss auth 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.

Conciseness3/5

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

The content is dense and mostly front-loaded, with little wasted wording, but the first sentence is awkward and run-on ('with about how many reads one file uses'), making the capabilities harder to parse than necessary.

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 listing tool with no output schema, it discloses what the result set contains: model categories, read cost, video capabilities, and what each model is good for. It does not specify output shape or default behavior, but it gives enough context to invoke 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?

With 0% schema description coverage, the description carries the parameter burden. It supplies the key kind values (image, voice, video) and explains photo=true as filtering to image-start/edit models; it does not restate defaults, but it adds the missing semantic mapping.

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 as models for generating pictures, voice-overs, music, or videos and says it returns read costs and capabilities. It is clear what the tool lists, though it does not explicitly distinguish itself from sibling tools such as make_media.

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 useful filter guidance: kind=image, voice, or video, and photo=true filters to models that start from or edit a picture. It also notes 'Uses no reads,' implying discovery before generation, but it does not explicitly say when to use this versus make_media or another sibling.

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

list_watchesList your watchesA
Read-onlyIdempotent
Inspect

List the user's existing watches with IDs, schedules, errors and email queue status. No checks or charges. next_offset gives the next page.

NameRequiredDescriptionDefault
limitNo
offsetNo

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description does add real value with 'No checks or charges' (it does not trigger a check run) and the next_offset pagination behavior, but says nothing about result size or ordering.

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 short sentences, front-loaded with the core action and return fields, followed by the one operational caveat. 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?

With no output schema, the description carries the burden of describing returns and does so by naming the fields returned. The main residual gap is the unmentioned limit/default and ordering behavior.

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% and both limit/offset carry no descriptions, so the description must compensate. It explains that next_offset yields the next page, which clarifies offset semantics, but leaves limit's meaning and default (50) unaddressed.

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 ('List the user's existing watches') and enumerates the returned fields (IDs, schedules, errors, email queue status), which cleanly separates it from get_watch (single) and check_watch_now (triggers a 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?

'No checks or charges' implicitly steers the agent away from check_watch_now when it merely wants to inspect watches, and the pagination hint tells it how to continue. It stops short of naming the alternatives explicitly, 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.

local_stockIn stock near meAInspect

Whether a product is on the shelf at Target stores near a US ZIP code, from Target's own store check: each nearby store's stock, quantity, pickup, distance, address, phone and today's hours, and the price. product: a Target product link, or the product's name (the best Target match is used). radius: miles, 5 to 100. Uses one read and saves the result in the user's Puley history.

NameRequiredDescriptionDefault
radiusNo
productYes
zip_codeYes

TDQS

A4.1/5.0
Behavior4/5

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

Adds real context beyond the annotations: it enumerates the per-store payload (stock, quantity, pickup, distance, address, phone, hours, price) and discloses both the cost model ('uses one read') and the side effect ('saves the result in the user's Puley history'), which explains the readOnlyHint=false. It stops short of stating failure behavior (no nearby stores, no product match) or what happens when the product name is ambiguous.

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?

Roughly sixty words, front-loaded with the core question and with no filler. The middle clause stacking returned fields ('stock, quantity, pickup, distance, address, phone and today's hours, and the price') is a run-on that would read better as a short list, but every element 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?

There is no output schema, so the description correctly spends space describing what comes back, and it covers all three parameters plus the read-cost and history side effect. Missing only edge-case behavior and result-limit/pagination details, which are minor for a single-shot lookup 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 description coverage is 0%, so the description must carry all meaning, and it largely does: product accepts a link or a name with best-match resolution, radius is in miles bounded 5 to 100, and zip_code is a US ZIP. The zip_code parameter itself gets no explicit definition beyond being implied by 'near a US ZIP code'.

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 question ('whether a product is on the shelf'), a specific retailer (Target), and a specific scope (stores near a US ZIP code), with the data source named ('Target's own store check'). An agent can immediately distinguish this from siblings like compare_stores, search_marketplace, or resale_prices.

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 'near me' plus the US-ZIP requirement, and the product input rule (link or name, best match used) guides invocation. However, no sibling is named as an alternative and no when-not condition is given (e.g., non-Target retailers, non-US locations, or when a general price lookup such as amazon_price_history would be preferable).

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

make_mediaMake a picture, voice-over, music or videoAInspect

Make a file from a description. kind=image: a picture, or an edit of a picture given in image or image_link (put this product on a beach, change the background). kind=video: a short clip with sound, or a picture brought to life when image or image_link is given (a photo, or a picture made in the chat). kind=voice: a voice-over of the words in prompt (voice: narrator, friendly man, friendly woman, deep man, calm woman, confident woman, trustworthy man, ad voice, news woman, british woman, british man, australian man, indian man, comedian or storyteller; language: a name or code; speed 0.5 to 2; emotion: happy, sad, angry, surprised or calm). kind=music: an instrumental of about 30 seconds. model: a model's name or id (Veo, Kling, Seedance, Wan, Grok Imagine, Nano Banana Pro, GPT Image, FLUX, Seedream, ElevenLabs and more), or empty for a good, low-cost default. quality: quick, standard or best. shape: square, portrait, story (9:16), landscape, or a ratio like 4:5. seconds: a video's length. A file over 500 reads returns its price first and is made with confirm=true. Returns a link to the finished file on Puley; a video takes a few minutes, and asking again for the same thing returns it when ready, charged once. Reads follow what the file cost to make. Saved in the user's Puley history. No sexual, violent or deceptive content.

NameRequiredDescriptionDefault
kindYes
imageNo
modelNo
shapeNosquare
speedNo
voiceNonarrator
promptYes
confirmNo
emotionNo
qualityNo
secondsNo
languageNo
image_linkNo

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the hints: it discloses the 500-read price threshold with the confirm=true gate, that video output is asynchronous and takes minutes, that re-asking the same prompt returns the pending/ready file and is charged once, that cost is metered by what the file cost to make, that results land in the user's Puley history, and that sexual/violent/deceptive content is rejected. Those are exactly the operational facts an agent needs before spending the user's credits.

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 one-line purpose, then grouped by kind, then by cross-cutting controls and pricing. It is dense and delivered as a single run-on paragraph, so bullet or line-break structure would aid scanning, but nearly every clause carries information specific to a parameter or behavior.

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 13-parameter generation tool with no schema descriptions and no output schema, it covers mode selection, per-mode options, cost/confirm gating, latency, result location, and content policy — essentially everything needed to call it correctly and set expectations. The only soft spot is a mild tension with idempotentHint=false, since re-asking is described as returning the same job charged once.

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 description coverage is 0%, so the description carries the full burden and does: all 13 parameters are explained, including enumerated values for voice (narrator, british woman, comedian, etc.), emotion, quality (quick/standard/best), shape (square/portrait/story/landscape or a ratio like 4:5), a speed range of 0.5–2, named model options, seconds as video length, and the image vs image_link distinction.

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?

Opens with a specific verb+resource ('Make a file from a description') and then enumerates the four distinct modes (image, video, voice, music) it produces. This clearly separates it from the neighbouring research/data siblings (find_videos, watch_video, trend_to_video) which retrieve rather than generate.

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 conditions that select each mode: image for a picture or an edit when image/image_link is supplied, video for a clip or an animated photo, voice for words read by a named voice, music for a ~30s instrumental. It also states the confirm=true precondition for jobs over 500 reads and that model may be left empty for a good low-cost default. It stops short of naming alternatives (e.g. list_models for browsing models, trend_to_video for trend-driven clips).

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

make_tableTurn a page into a tableBInspect

Every product, job or listing on a page, with the fields asked for (for example ['name', 'price', 'pieces', 'stock', 'link']), following the page's own pagination. Reads count toward account limits and the table is saved in the user's Puley history.

NameRequiredDescriptionDefault
linkYes
pagesNo
fieldsYes

TDQS

B3.4/5.0
Behavior4/5

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

The description explains the side effect that justifies readOnlyHint=false: the table is saved to the user's Puley history, and reads consume account limits. That is exactly the extra context annotations can't convey. It stops short of disclosing failure behavior or cost scaling with the pages parameter.

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 leads with the output and follows with constraints; no filler. It is slightly run-on with the parenthetical example list interrupting the flow, but every clause carries 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?

For an open-world scraping tool with no output schema, the description should say at least what comes back (a table reference? rows inline? a link to history?) and roughly how much data the pages setting can pull. It covers cost and persistence but leaves the return shape and page-limit semantics 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 description coverage is 0%, so the description must carry the load. It does well for fields by giving a concrete example array, and link is implied by "a page," but the pages parameter (default 3) is never explained — only a vague reference to "the page's own pagination" appears, leaving the agent unsure whether pages caps crawling or overrides site pagination.

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?

"Every product, job or listing on a page, with the fields asked for" plus "turn a page into a table" states the operation (extract structured rows from one page) with concrete examples of the fields. It is clear what the tool produces, but it never names how it differs from close siblings like read, read_site, see_page, or search_marketplace, so differentiation is left to inference.

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 describes only what the tool does, never when to pick it over the many alternatives listed (read, see_page, read_site, search_marketplace, more_results). "following the page's own pagination" hints at a use case for multi-page listings but gives no explicit when/when-not rule or alternative routing.

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

maps_rankGoogle Maps rankAInspect

Where a business shows on Google Maps for a search in a place (dentist in Austin, TX), against everyone above it, in Google Maps' own order (up to 60). business: its name or website. Saved in the user's Puley history.

NameRequiredDescriptionDefault
placeYes
searchYes
businessYes

TDQS

A3.8/5.0
Behavior4/5

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

The annotations say readOnlyHint=false, which would otherwise look odd for a lookup; the description resolves this by disclosing 'Saved in the user's Puley history,' explaining the write side effect. It also discloses the 60-result cap and that ordering is Google Maps' own rather than a computed rank, adding real 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?

Two compact sentences with no padding, and the core definition is front-loaded before the parameter note. The mid-sentence line break and the abrupt 'business: its name or website' fragment make it slightly less scannable than it could 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?

With no output schema, the description does state what comes back (the business's position against those above it, ordered, max 60) and the history side effect. For a 3-required-parameter tool this is nearly sufficient; cost/latency and the exact result shape remain unstated but are minor.

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 carries the burden: 'business: its name or website' explicitly bounds that parameter, and the 'dentist in Austin, TX' example disambiguates search (keyword) from place (location). Only finer details — address granularity, business-name matching rules — are missing.

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 operation — where a business ranks on Google Maps for a keyword+place query, in Maps' own order, capped at 60 results. That is concrete enough to separate it from find_places or google_results, though it never names those siblings.

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 example 'dentist in Austin, TX' implicitly shows the intended query shape, but there is no explicit when-to-use guidance and no exclusion against the many nearby search tools (find_places, google_results, find_leads). The agent must infer the use case.

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

market_quotesLive pricesAInspect

Live prices for shares, ETFs, indices, currencies and crypto, from Yahoo Finance: price, the latest session's change, the day's and 52-week range, volume, exchange and the time of the quote. symbols: up to 10, comma-separated, as symbols (AAPL, NPN.JO for Johannesburg, VOD.L for London, ^GSPC, EURUSD=X, BTC-USD) or names (Apple, Naspers, bitcoin, gold). Uses one read and saves the result in the user's Puley history.

NameRequiredDescriptionDefault
symbolsYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations alone (readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false) would leave an agent puzzled about why a read looks like a write; the description explains this by disclosing that the call consumes one read and persists the result to the user's Puley history. It also reveals the upstream provider (Yahoo Finance) and that quote timestamps are returned. It does not say whether prices are real-time or delayed, which is the main remaining 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?

The description is front-loaded with the payload and its source, then narrows to the single argument, then to cost/persistence. It is dense but every clause carries information; the returned-field list is long but necessary because no output schema exists.

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 a 0%-covered single parameter and no output schema, the description compensates on both fronts — it fully specifies the argument and enumerates the returned fields (price, session change, day and 52-week range, volume, exchange, quote time). Only the real-time vs delayed nature of the feed is left unaddressed.

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 description coverage is 0%, so the description must carry the parameter alone, and it does: cardinality (up to 10), delimiter (comma-separated), three symbol dialects with concrete examples (AAPL, NPN.JO, ^GSPC, EURUSD=X, BTC-USD), and the fallback of company/asset names. This is more than the bare schema could 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?

The description names the specific resource (live quotes for shares, ETFs, indices, currencies, crypto) and the exact data source (Yahoo Finance), so an agent knows precisely what it returns. The asset-class enumeration also separates it from narrower siblings like drug_prices, resale_prices, or subscription_prices.

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 invocation context — max 10 comma-separated symbols, accepted symbol formats per exchange, and that plain names (Apple, bitcoin, gold) also work — plus a cost signal ('Uses one read'). It stops short of stating when to prefer a sibling such as local_stock or app_charts, so there are no explicit exclusions.

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

more_resultsGet the rest of a resultA
Read-onlyIdempotent
Inspect

The next part of a Puley result that was too long for one answer (its completeness.complete is false). cursor: the completeness.more.cursor from that answer. Returns the next rows or text and another cursor until complete is true. For a table, find keeps only the rows that contain every comma-separated term (find="1TB, In stock") and sort_by orders them by one column (sort_by="price"; descending=true for the highest first), across the whole saved table. Reads the result saved in the user's Puley history; uses no read allowance.

NameRequiredDescriptionDefault
findNo
cursorYes
sort_byNo
descendingNo

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive and openWorld=false, so the safety profile is covered. The description adds genuinely new behavior: it reads from the user's saved Puley history and consumes no read allowance, and find/sort_by apply across the whole saved table rather than just the returned page. It stops short of describing failure behavior for an invalid or expired cursor.

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 and the cursor contract, then behavior, then filtering options — a logical order with no filler. The awkward line break mid-sentence and the parenthetical examples make it denser than it needs to be, but 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?

With no output schema, the description correctly takes on the return contract (next rows or text plus another cursor until complete is true), which is what an agent needs to loop. The remaining gap is error/expiry handling for the cursor, minor for an idempotent read tool.

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%, so the description must carry all parameter meaning and it does: cursor is sourced from completeness.more.cursor, find matches rows containing every comma-separated term (AND semantics, shown with an example), sort_by orders by exactly one column with an example, and descending selects highest-first. This is meaning well beyond the bare schema titles.

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 next part of a Puley result that was too long for one answer" states a specific resource and the exact condition that makes this tool applicable (completeness.complete is false). No sibling tool in the list covers pagination of a saved result, so it is distinguishable, though the description never names the tool that produced the truncated answer (read/read_site/etc.) to close the loop.

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 an explicit trigger (completeness.complete is false) and tells the agent exactly where the required argument comes from (completeness.more.cursor from that answer), plus the loop condition (until complete is true). It does not state when NOT to use it — e.g. what to do if the cursor is stale or the result has expired.

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

netflix_top10Netflix Top 10AInspect

Netflix's own weekly Top 10 right now: kind movies or tv, for the world (global, with views and hours viewed, in English or non-English) or a country (two-letter code: us, gb, za, in, br, jp, kr...; with weeks in the Top 10). Shows what's popular or trending on Netflix. Uses one read and saves the result in the user's Puley history.

NameRequiredDescriptionDefault
kindNomovies
countryNoglobal
languageNoenglish

TDQS

A4.1/5.0
Behavior4/5

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

The description resolves the notable annotation tension: readOnlyHint=false is explained by 'Uses one read and saves the result in the user's Puley history', so the agent learns the call has a side effect (history write) plus a read cost, while destructiveHint=false remains consistent. It also discloses data freshness (weekly) and what each scope returns (views/hours viewed vs weeks in Top 10), which goes beyond the annotations. Minor gap: no mention of failure behavior or how much history is retained.

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?

Resource and freshness are front-loaded, and the parentheticals pack in scope variants without filler sentences. The nested parentheses ('for the world (global, with views..., in English or non-English) or a country (...)') make one sentence harder to parse than necessary.

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?

Three optional parameters, no output schema, and a modest tool surface – the description covers all three inputs, the freshness of the data, the read cost and the history side effect. An agent has enough to call it correctly; only edge details (invalid country codes, language-not-applicable cases) are unstated.

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 0% with no enums, so the description carries the full burden and largely does: kind is 'movies or tv', country is 'global' or a two-letter code with concrete examples (us, gb, za, in, br, jp, kr...), and language is 'english or non-English'. It also ties the country choice to different return fields. It stops short of an exhaustive value list (the '...' leaves accepted codes open) and doesn't clarify whether language is ignored for country queries.

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 (Netflix's own weekly Top 10) with an explicit scope split (global vs country, movies vs tv) and freshness ('right now'). It is clearly distinguishable from siblings such as where_to_watch or app_charts 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 Guidelines3/5

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

Adds a usage cue ('Shows what's popular or trending on Netflix'), which implies when to reach for it, but never names an alternative or states when not to use it. With a sibling list containing where_to_watch, app_charts and find_videos, an explicit boundary would be valuable and is absent.

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

new_buyersNew buyersBInspect

Runs once, in the background: finds people on Reddit and X asking for what the person sells, leaves out the posts its earlier runs for the same thing already listed, and drafts a helpful first reply for each for the person to adapt and post themselves. Puley posts nothing. what: what is sold. offer: a line about the person's offer. The same request again returns its progress or the finished list.

NameRequiredDescriptionDefault
whatYes
offerNo

TDQS

B3.3/5.0
Behavior4/5

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

Beyond the annotations, the description discloses that execution is asynchronous, that later runs suppress posts already listed by earlier runs, that drafts are produced for the user to post, and that nothing is published on the user's behalf. That last point meaningfully reinforces destructiveHint=false. There is a mild tension: 'the same request again returns its progress or the finished list' sounds close to idempotent, while idempotentHint=false declares otherwise, though this reads as a polling affordance rather than a real 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?

The core explanation is front-loaded and reasonably tight, but the structure is jumbled: parameter glosses are dropped mid-paragraph, then the text returns to the polling behavior. 'Puley posts nothing' arrives as an unexplained brand reference, and one sentence is missing an article, which makes the text slower to parse than it needs to be.

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 an asynchronous, no-output-schema job, the description covers the essentials: what triggers it, what it produces, that it runs in the background, and how to retrieve results by re-calling. It does not say where or in what shape the finished list arrives, how long a run typically takes, or what happens if no matching posts are found.

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 coverage is 0%, so the description carries the full burden of explaining the parameters, and it gives only thin glosses: 'what: what is sold' and 'offer: a line about the person's offer.' It does not say how granular 'what' should be, or how long 'offer' should be, or what the empty default means. An agent can guess, but the semantics remain underspecified.

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 concrete verbs and resources: finds posts on Reddit and X where people ask for what the user sells, and drafts a first reply for each. That is far more specific than the tool's name 'new_buyers' and lets an agent distinguish it from read-only search siblings like search_posts or people_asking. It never explicitly says which sibling to prefer, though, 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?

It gives useful invocation context: it runs once in the background, and calling again returns progress or the finished list. That effectively tells the agent not to re-invoke to poll for new work. It never says when to choose this over the many related research or search siblings, and it never states prerequisites, such as whether Reddit or X accounts must be connected first.

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

page_historyPage historyAInspect

A page's past from the web archives (the Wayback Machine, then Common Crawl). With since (2024, 2024-06-30 or '1 year ago'): what changed on the page between then and now (prices, plans, terms, wording), or with show=page the page as it was then. Without since: when it was archived. Answers 'did they change their prices or terms?' and 'what did this page say before?'. Uses one read (two to compare) and saves the result in the user's Puley history.

NameRequiredDescriptionDefault
linkYes
showNochanges
sinceNo

TDQS

A3.6/5.0
Behavior3/5

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

The description adds real context beyond the annotations: 'Uses one read (two to compare)' discloses a credit/consumption cost, and 'saves the result in the user's Puley history' explains why readOnlyHint is false on an otherwise read-like operation. openWorldHint and idempotentHint behavior are left unaddressed, and no fallback behavior is described if an archive has no snapshot.

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 scope statement, then branches on `since` and `show`, with the user-question framing at the end. Dense but every clause carries information. Minor cost: the parenthetical and nested clauses make the second sentence a bit run-on.

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 indicates what results look like (change summary vs. historical snapshot vs. archive timeline) and notes the read cost. Remaining gaps are small: no snapshot-found behavior, no result format or size expectations. Overall adequate for a three-parameter archival lookup.

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%, so the description has to carry the parameters, and it does explain `since` ('2024, 2024-06-30 or 1 year ago') and the `show=page` mode usefully. However the `show` parameter's default and other values are only implied, and `link` is never characterized (URL form, required). It partially but not fully 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 and resource: retrieving a page's past from web archives (Wayback Machine, then Common Crawl), plus diffing between then and now. That is far more specific than a name restatement. It does not explicitly name a sibling such as whats_changed or see_page to draw the boundary, 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?

Gives concrete when-to-use branches: with `since` it answers 'did they change their prices or terms?', with `since` + `show=page` it shows the page as it was, and without `since` it lists archive dates. It also frames the user questions it answers. It never states when to prefer a different tool instead.

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

pause_watchPause a watchA
DestructiveIdempotent
Inspect

Pause a watch the user chose; stop future checks and discard any in-progress result. Existing queued emails may already be on their way. Requires watch-management permission.

NameRequiredDescriptionDefault
watch_idYes

TDQS

A3.6/5.0
Behavior4/5

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

Adds real value beyond the annotations: it names the destructive consequence (in-progress results are discarded), warns of residual side effects (queued emails may already be sent), and states the required permission. This is consistent with destructiveHint=true and idempotentHint=true. It could go further by noting whether the pause is reversible or how state is restored via resume_watch.

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 short sentences, front-loaded with the action and its primary effects, then the caveat and the permission requirement. No filler or restatement of the tool name.

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 single-parameter mutation, the description covers the essential behavior, side effects, and auth requirement, and the annotations supply the safety profile. The remaining gap is practical: how an agent obtains a valid watch_id and whether the pause can be undone.

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 (watch_id) with 0% schema description coverage, and the description does not explain it, only referring vaguely to "a watch the user chose." It gives no hint about where a watch_id comes from (e.g., list_watches/get_watch) or what format it takes.

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?

Uses a specific verb+resource ("Pause a watch") and immediately specifies the two effects: "stop future checks and discard any in-progress result." This distinguishes it from destructive siblings like delete_watch and from resume_watch by implication, 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?

The usage context is implied by the effects described (temporarily halt checks), but the description never states when to choose pause over delete_watch or when to resume instead. No prerequisites or exclusions are given beyond the permission note.

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

people_askingPeople asking for itBInspect

Public posts on Reddit and X where someone asks for a recommendation for what the person sells, ranked by how ready they are to buy, with the reason and the link. what: what is sold (bookkeeping for freelancers). period: day, week, month or year. Saved in the user's Puley history.

NameRequiredDescriptionDefault
whatYes
periodNomonth

TDQS

B3.4/5.0
Behavior3/5

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

The annotations declare readOnlyHint=false, which is counterintuitive for a search-style tool; the description usefully explains this by noting results are 'Saved in the user's Puley history', and it discloses the source platforms and that output includes a reason and a link. It still leaves out practical traits such as result volume, credit/cost implications, and whether the history write is per-call or per-unique-result.

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 output shape and behavior are front-loaded in the first sentence, followed by compact parameter notes. The 'what:' / 'period:' label style is terse and slightly ungrammatical but wastes no words.

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 only two parameters and no output schema, the description needs to cover both inputs and the return shape, and it does: ranked posts with a buy-readiness rationale and a link, plus persistence to history. It stops short of stating result limits or pagination, but an agent can call it correctly from what is given.

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% and 'period' is an unconstrained string, so the description carries the load: it supplies the enum-like value set (day, week, month, year) that the schema omits, plus a clarifying example for 'what' (bookkeeping for freelancers). Minor gap: it doesn't specify how 'what' should be phrased or whether period bounds post date or the search window.

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 (public posts on Reddit and X where someone asks for a recommendation) and the ordering principle (ranked by readiness to buy), which is far more specific than the vague title 'People asking for it'. It does not explicitly distinguish itself from lead-gen siblings such as find_leads or new_buyers, but the sourcing and intent-ranking make the scope unmistakable.

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, even though several siblings (find_leads, new_buyers, search_posts) occupy adjacent territory. The agent must infer the use case from 'ranked by how ready they are to buy', which is implied guidance at best.

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

product_ad_packProduct photo to ad packAInspect

In the background: turns one product photo into an ad pack (an ad picture with a headline, a short video from the photo, a voice-over and music), then emails it. product: the product and the offer. image or image_link: the product's photo. model: the video model (default a low-cost one). The same request again returns its progress or the finished result. Each file is charged as usual (the pack about $1 to $2).

NameRequiredDescriptionDefault
everyNo
imageNo
modelNo
productYes
image_linkNo

TDQS

A4/5.0
Behavior4/5

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

Beyond the supplied annotations (readOnlyHint=false, openWorldHint=true, idempotentHint=false), the description discloses genuinely useful behavior: asynchronous background execution, status-by-replay polling, email delivery of the result, and per-file billing of roughly $1–$2. The only soft spot is that 'the same request again returns its progress' sits in mild tension with idempotentHint=false, since an agent could read it as a free safe retry; it is a nuance rather than a direct contradiction.

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 clause and the remaining sentences are compact parameter hints with no filler. It reads as a slightly run-on block rather than a structured list, which costs a little scannability but wastes no words.

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 costly, asynchronous, side-effecting tool with no output schema and an opaque five-parameter schema, the description covers the essentials (async, polling, email, cost) but leaves gaps an agent needs: what the emailed result contains, what 'every' controls, and where to look for valid model names (a list_models sibling exists). Adequate but not complete.

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 0% schema description coverage, five parameters, and bare titles like 'Every' and 'Image', the description has to carry the load and only partly does: it maps product ('the product and the offer'), image/image_link ('the product's photo'), and model ('the video model, default a low-cost one'). The 'every' parameter is left completely unexplained, and the accepted form of image vs image_link (URL string vs object) and the available model values are not clarified.

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 concrete verb and resource ('turns one product photo into an ad pack') and enumerates the pack's contents — ad picture with headline, short video, voice-over, music, delivered by email. That composition makes it distinguishable from generic media siblings such as make_media or trend_to_video 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 gives clearly usable operating context: the work happens in the background, and 'the same request again returns its progress or the finished result', which tells the agent how to poll. It also states cost per file (~$1–$2). It stops short of naming when to prefer it over make_media or trend_to_video, or stating any exclusion, so it does not reach the top band.

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

public_holidaysPublic holidaysAInspect

A country's public holidays for a year (bank holidays, national and regional days), with the regions each applies to, and the next one; or whether a date is a public holiday. country: two-letter code or name (US, GB, IN, DE, Scotland...). year: defaults to this year. date: e.g. 2026-12-26, to ask whether it's a holiday. region: a state or part of the country (CA, SCT, BY) to keep only the holidays that apply there. Uses one read and saves the result in the user's Puley history.

NameRequiredDescriptionDefault
dateNo
yearNo
regionNo
countryYes

TDQS

A4.4/5.0
Behavior4/5

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

The description reconciles the unusual readOnlyHint=false by disclosing that the call 'uses one read and saves the result in the user's Puley history' — a real side effect an agent should know about, and one the annotations alone would leave confusing. It also sketches the response contents (holidays, applicable regions, the next upcoming one). It does not cover error behavior or empty-result handling.

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 capability is front-loaded and every parameter gets a compact, useful clause. The sentence is slightly run-on and the phrase 'with the regions each applies to, and the next one' is a bit tangled, but 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 four-parameter, no-output-schema tool this is nearly complete: both invocation modes, defaults, accepted formats and the notable history side effect are all stated. Only error/empty cases and a clearer picture of the returned structure are missing.

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?

With 0% schema description coverage, the description carries the full burden and does so: country accepts a two-letter code or a name (US, GB, IN, DE, Scotland), year defaults to the current year, date takes an ISO-style value like 2026-12-26, and region takes a state or subdivision code (CA, SCT, BY). This adds concrete format and example meaning that the bare schema lacks.

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 (a country's public holidays for a year, including bank, national and regional days) and a second mode (checking whether a date is a holiday). It is clearly distinct from siblings such as compare_countries or find_events, which cover different subject matter.

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 explains context well by tying each parameter to a use case — pass 'date' to ask whether a specific day is a holiday, pass 'region' to restrict results to holidays that apply there — which effectively signals the two invocation modes. It does not name or exclude sibling tools, 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.

readRead a linkAInspect

Read any link the way a person sees it: a TikTok, Instagram, YouTube, X or Facebook profile, post or video (real follower counts, views, likes, transcripts), Meta Ad Library search/advertiser links and Google Ads Transparency advertiser links, an Amazon product (price, list price, stock, rating), a Google Maps place (rating, top reviews), a Hellopeter, App Store or Google Play page (ratings and latest reviews) or any web page (its text). Also takes '@handle' (TikTok), 'instagram @handle' or 'x @handle' (an X account: followers and its newest 5 posts with views, likes and reposts). The result is saved in the user's Puley history and counts toward their read limit. Some sources cannot be read. A Maps search that matches several places returns kind=google_maps_choices: names and addresses for the user to choose from, each with its exact link. Read coverage/read_info: post/review lists are samples, null values are unknown, and retrieval time does not establish source freshness. max_age_s: optional maximum source-capture age in seconds for ordinary pages. Zero requires a new capture. Unsupported sources fail before reading; unknown/stale source times fail without using read allowance. Evidence is given per field; capture_id identifies the result, not a guaranteed fresh source. retail_details contains only supplied product/offer statements. Missing shipping, tax or warranty means unknown: it says nothing about the delivered total, delivery abroad or whether there is a warranty. transcript_mode: auto prefers available captions; captions never starts listening; listen explicitly uses the account's audio allowance when enabled. Generated timing is approximate.

NameRequiredDescriptionDefault
linkYes
max_age_sNo
transcript_modeNoauto

TDQS

A3.9/5.0
Behavior5/5

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

Annotations only say readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false. The description goes well beyond: results are saved in Puley history and consume a read allowance; unsupported sources and unknown/stale source times fail without spending allowance; max_age_s=0 forces a fresh capture; transcript_mode='listen' uses the account's audio allowance; generated timing is approximate and capture_id is not a freshness guarantee. This explains why the tool is not read-only and what it costs.

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 opening is well front-loaded with the source list, and most sentences carry real information. But it is a single dense block of roughly 250 words that drifts from purpose into caveats, evidence semantics, and parameter documentation mid-paragraph, forcing the agent to scan for max_age_s and transcript_mode rather than finding them where expected.

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 0% schema coverage, the description usefully sketches return shape (follower counts, views, likes, transcripts, price, ratings), the kind=google_maps_choices variant, and failure semantics. It is only slightly incomplete: it refers to 'coverage/read_info' without explaining how to obtain it (source_read_status exists), and never addresses the read_with_account alternative.

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 0%, so the description carries the full burden and largely meets it: it spells out accepted link forms including '@handle', 'instagram @handle' and 'x @handle', defines max_age_s as maximum source-capture age in seconds with zero meaning a new capture, and defines all three transcript_mode behaviours. It does not state whether transcript_mode has other valid values or what happens on an unrecognised one.

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 (read) and enumerates concrete resources: TikTok/Instagram/YouTube/X/Facebook posts, Meta Ad Library, Amazon products, Google Maps places, Hellopeter/App Store/Google Play pages, and generic web pages, plus '@handle' shorthands. That is far more specific than a tautology. It does not, however, differentiate itself from near-neighbours such as read_site, see_page, read_reviews, read_comments, or read_with_account, leaving the agent to infer boundaries.

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 throughout — pass a supported link and the tool reads it — and it notes 'Some sources cannot be read' plus a Maps multi-match fallback. But there is no explicit when-to-use-this-vs-alternatives guidance despite many overlapping siblings, and no statement of what to do instead when a source is unsupported.

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

read_commentsRead commentsAInspect

The public comments on a TikTok video, a YouTube video or an Instagram post or reel: text, author, likes, replies and when, top or newest first. Shows what people are saying, the audience's questions and the reaction to a post. limit: 5 to 200 (Instagram shows signed-out visitors about 15). Uses one read and saves the comments in the user's Puley history. Reddit post links use bounded public collection, paid from the balance, up to 10 comments; a pending job returns job_id and next_read.link for collecting it later. Reddit is a returned sample, without guaranteed top/newest ordering.

NameRequiredDescriptionDefault
linkYes
sortNotop
limitNo

TDQS

A4.4/5.0
Behavior5/5

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

Annotations only declare readOnly=false, openWorld=true, idempotent=false, destructive=false, which leaves the actual cost and side effects unexplained. The description fills that gap with concrete traits: one read credit consumed, comments saved to the user's Puley history, Reddit collection bounded to 10 comments and paid from balance, and a pending job returning job_id plus next_read.link for later collection.

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?

What the tool returns is front-loaded, and the credit/history and platform-limit notes follow in a useful order. The Reddit passage is compressed into a long clause chain (bounded collection, balance payment, pending job, sample ordering) that takes a second pass to parse.

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 is the only source of return-value information, and it lists the fields and ordering behavior explicitly. It also covers the async case (Reddit job_id/next_read.link) so an agent knows a partial result may need a follow-up 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 description coverage is 0%, so the description has to carry all three parameters and it mostly does: limit is bounded (5 to 200, with the Instagram signed-out caveat around 15) and sort is described as "top or newest first." The link parameter is only implied through the platform list and never states accepted link formats, which is the remaining gap.

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 the exact resource and scope: public comments on TikTok videos, YouTube videos, and Instagram posts/reels, and enumerates what comes back (text, author, likes, replies, timing). That implicit verb-plus-resource framing plus the platform list is specific enough to separate it from adjacent siblings such as read_reviews or search_posts 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 Guidelines3/5

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

It gestures at intent ("Shows what people are saying, the audience's questions and the reaction to a post"), which implies when the tool is useful. But it never says when not to use it or routes the agent to an alternative sibling, and the platform caveats (Instagram ~15 comments, Reddit sampling) are stated as facts rather than as selection guidance.

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

read_documentRead a long documentAInspect

Read a long PDF, report, annual report, filing, paper, contract or web page in full, a part at a time (about 6 PDF pages a part, with page numbers), or only the passages about a question. Suits any document longer than a few pages. part: 1 for the start, then the next part it names. find: words or a question (e.g. "termination clause", "revenue by segment"); returns the sections about it with their page numbers instead of a part. The first call on a document uses one read; its other parts and searches for a day are free. Results are saved in the user's Puley history.

NameRequiredDescriptionDefault
findNo
linkYes
partNo

TDQS

A3.9/5.0
Behavior4/5

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

The description earns credit beyond the annotations by disclosing two non-obvious traits: the result is persisted ('Results are saved in the user's Puley history'), which explains the otherwise puzzling readOnlyHint=false, and there is a quota rule ('The first call on a document uses one read; its other parts and searches for a day are free'). It does not say what happens at the end of a document, how errors on a bad `link` surface, or whether the free searches reset behaviour changes per document.

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 the `part` mode, then `find`, then cost/persistence — a sensible information order with little filler. The sentence 'Results are saved in the user's Puley history' is borderline promotional but carries behavioral information; the phrase 'the next part it names' is slightly opaque on first read.

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 three-parameter, no-output-schema read tool this covers the essentials: what it reads, how to page through, how to search within, and the cost model. The main gap is that the shape and length of a returned part (whether it echoes the next part number, includes page markers, how truncation is signalled) is only hinted at.

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 carries the burden and does add real meaning for `part` (start at 1, then follow the part it names) and `find` (words or a natural-language question, with examples like 'termination clause'). The required `link` parameter is never described — no format, URL vs. ID, or whether PDFs and web pages are treated differently — leaving one of three parameters 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?

Useful specificity: a precise verb + resource ('Read a long PDF, report, annual report, filing, paper, contract or web page') plus an explicit scope rule ('Suits any document longer than a few pages') that separates it from the generic `read`/`read_site`/`see_page` siblings. It stops short of naming an alternative tool outright, so differentiation is inferred rather than stated.

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

Usage Guidelines4/5

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

It clearly routes between the two modes of operation: use `part` to walk a document sequentially ('1 for the start, then the next part it names'), and use `find` to get 'the sections about it with their page numbers instead of a part.' What's missing is guidance on the boundary with non-long-document siblings, e.g. when a short page should go to `read_site` rather than here.

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

read_reviewsRead reviewsAInspect

Recent reviews in bulk, with the star split: an app on the App Store and Google Play (its name, or a store link; up to 200), a company on Trustpilot (its website, e.g. temu.com, or Trustpilot link; up to 200, with Trustpilot's own summary and the star split of all its reviews: for judging whether a shop or company is trustworthy), a Hellopeter business (link; up to 200) or a Google Maps place (link; the newest reviews, up to 200, about a cent per 20 from the balance; Google's top few without it). Glassdoor company-review links use bounded public collection, paid from the balance, up to 10 reviews, and may return a pending job with job_id and next_read.link, collected after the suggested interval. Employee identity fields are excluded. Each review's stars, title, text, date and app version where available. limit: 10 to 200 for the other sources. country: the app stores' country when an app is named. Uses one read, saves the reviews in the user's Puley history, and charges nothing when no reviews come back.

NameRequiredDescriptionDefault
limitNo
sourceYes
countryNoUS

TDQS

A3.7/5.0
Behavior4/5

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

Annotations only say readOnlyHint=false and openWorldHint=true; the description adds genuinely useful behavior the agent could not otherwise know: balance charges (about a cent per 20 Google Maps reviews), Glassdoor being billed and capped at 10 with a possible pending job returning job_id and next_read.link, storage in Puley history, consumption of one read, and a no-reviews-no-charge guarantee. Employee identity exclusion is also disclosed. Nothing here conflicts with the non-read-only, non-idempotent 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 high-value with little filler, but it is delivered as two long comma-spliced run-on sentences (the opening is a fragment) rather than a structured list of sources, costs, and return fields. It would read far better as a short lead sentence plus per-source bullets.

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, yet the description covers return fields (stars, title, text, date, app version), the star split and Trustpilot summary, async job handling, billing, history persistence, and refund behavior. For a three-parameter, multi-source tool this is close to complete; only the 'source' string contract remains underspecified.

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 0%, so the description carries the full burden and largely does: it specifies accepted source formats (app name, store link, website like temu.com, Google Maps/Hellopeter link), the limit range of 10–200 with the Glassdoor 10-review exception, and that country applies only to app-store lookups when an app is named. The only gap is that the free-form 'source' string has no explicit format contract beyond examples.

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 (fetch recent reviews in bulk, with star split) and enumerates the exact source families it covers: App Store/Google Play apps, Trustpilot companies, Hellopeter businesses, Google Maps places, and Glassdoor company links. It is clearly not find_news or read_comments, though it never names a sibling to sharpen the distinction.

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 per-source conditions, e.g. Trustpilot data is 'for judging whether a shop or company is trustworthy' and each source must be passed as a name, website or link. However, there is no explicit statement of when to prefer this over read_comments, company_brief, or is_it_real, so routing between siblings is left to inference.

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

read_siteRead pages of a websiteAInspect

Read up to 25 pages of one website at once: from its homepage or a section (e.g. stripe.com/pricing, example.com/blog), found through the site's own sitemaps and links, each page's main text side by side. focus: words to pick pages by (e.g. 'pricing', 'refund policy', 'careers'). pages: 1 to 25, default 10. Suits comparing a company's plans, policies or products across its pages, or summing up a blog or help centre. Uses one read per page read and saves the result in the user's Puley history.

NameRequiredDescriptionDefault
linkYes
focusNo
pagesNo

TDQS

A3.6/5.0
Behavior3/5

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

Annotations mark this non-read-only, open-world and non-idempotent, and the description usefully explains why: it spends one 'read' per page and persists results to Puley history. It also discloses how pages are discovered (sitemaps and links). It does not cover failure behaviour, timeouts, or what happens when fewer than the requested pages are found.

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 capability and per-page cost, then parameter meanings, then use cases — a sensible order with no filler. The colon-and-parenthetical style makes some sentences dense run-ons, but nothing is redundant.

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 describe the return shape ('each page's main text side by side'), which is the key missing piece for a caller. Cost and persistence are covered; edge cases such as partial results or sites without sitemaps are 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 0%, so the description must carry the parameters, and it largely does: focus is defined as words used to pick pages (with examples), pages is bounded 1-25 with default 10, and link is explained via the homepage/section-path examples. It never names the link parameter explicitly or clarifies URL format constraints, so the mapping is inferred rather than stated.

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 with explicit scope: read up to 25 pages of ONE website, starting from the homepage or a section path. The 'one site, many pages, main text side by side' framing implicitly separates it from single-page siblings like read or see_page, though no sibling is named outright.

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 use cases: comparing a company's plans, policies or products across pages, or summarising a blog or help centre. It stops short of stating when NOT to use it or naming read / see_page as the alternative for a single URL.

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

read_with_accountRead with a connected accountAInspect

Read a page the user asked for, using a connected website account they explicitly chose. account_id identifies one of the user's connections. The connection must be enabled for AI access and the link must be on its connected host (www variants are accepted). Uses one read; only usage metadata is saved in history, never page content. Private contents are sent to this AI and may remain in its chat. No writes, posting, impersonation or compiling private people's data. A sign-in, MFA or bot wall means the user reconnects in Puley; Puley never takes credentials through chat.

NameRequiredDescriptionDefault
linkYes
account_idYes

TDQS

A3.6/5.0
Behavior3/5

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

Rich disclosure beyond the annotations: one read credit consumed, only usage metadata persisted (never page content), private content is forwarded to the AI and may persist in chat, and explicit prohibitions on writes/posting/impersonation/compiling people's data. This also usefully reconciles readOnlyHint=false (history metadata is written) with the "no writes" claim, so nothing is contradicted. However, it never describes what the call returns or what a failed fetch looks like, which is the remaining behavioral gap.

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

Conciseness4/5

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

Front-loaded with the action and its account constraint, then layers precondition, quota, privacy, and prohibition clauses in a sensible order. It is dense and reads as several policies packed into one paragraph, but almost every sentence carries operative 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 two-parameter read tool with no output schema, the definition covers invocation constraints, credit cost, privacy consequences, credential handling, and the failure/retry path — enough for an agent to call it safely. The missing piece is return-shape and off-host error behavior, minor since no output schema exists to lean on.

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%, so the description carries the full burden and does add meaning: account_id is one of the user's connections (discoverable via `list_connected_accounts`), and `link` must resolve to the connected host with www variants tolerated. It still does not specify link format (full URL vs bare path) or what happens when a link is off-host — accepted, or error?

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 ("Read a page") plus the distinguishing scope qualifier: it uses a connected website account the user explicitly chose, with account_id identifying one of the user's connections. That implicitly separates it from the anonymous `read`/`read_site`/`see_page` siblings, but it never names them, 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 Guidelines4/5

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

Gives real preconditions: the connection must be enabled for AI access and the link must be on that connection's host (www variants accepted), plus a fallback path when a sign-in/MFA/bot wall is hit. It does not explicitly say when to prefer the plain `read` sibling instead, which is the main gap for a tool family this dense.

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

resale_pricesResale pricesAInspect

What an item is selling for second-hand: eBay's Buy It Now listings for sale now, with low, typical and high asking prices for the listings whose titles match every word given, and each listing's price, condition and link. condition: used, new or any. country: eBay site (us, gb, ca, au, de, fr, it, es, ie, nl, at, be, ch, pl). Asking prices, not sold prices. market=stockx: real sold prices on StockX for sneakers, streetwear, trading cards and collectibles (last sale, lowest ask, highest bid, 90-day average). market=vinted: second-hand clothes on Vinted in a European country (gb, fr, de, es, it, nl, be, at, ie, pt, pl, lt, cz, se). Uses one read; saved in the user's Puley history.

NameRequiredDescriptionDefault
itemYes
marketNoebay
countryNous
conditionNoused

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 non-obvious behavior: title matching requires every word given, eBay reports asking prices not sold prices, and each call consumes one read and is saved in the user's Puley history — which explains why readOnlyHint is false despite it being a lookup. It does not cover rate limits or failure behavior, but the cost/state disclosure is exactly the kind of 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?

The most important framing (what it is, and the asking-vs-sold distinction) is front-loaded and every clause carries information about a different market. The cost is structure: it reads as one dense run-on paragraph with per-market clauses jammed together, which makes scanning harder 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?

There is no output schema, so the description must carry the return shape — and it does, listing each eBay listing's price, condition and link, and StockX's last sale, lowest ask, highest bid and 90-day average. Combined with the per-market country constraints and the one-read cost note, an agent has everything needed to call this correctly.

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

Parameters5/5

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

Schema description coverage is 0% and there are no enums, yet the description supplies the value sets itself: condition is used/new/any, country is an enumerated eBay site list, and Vinted has its own restricted country list. It also explains the matching semantics of item (all words must appear in the listing title), which is meaning the schema gives nowhere.

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 what the tool returns: second-hand selling prices, broken out per market (eBay Buy It Now asking prices, StockX sold prices, Vinted clothing prices). The verb is implicit ('what an item is selling for') rather than an explicit action, and no sibling such as amazon_price_history, search_marketplace or should_i_sell is named to sharpen the boundary, 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 Guidelines3/5

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

It gives useful mode-selection guidance by spelling out what each market value yields (eBay = asking prices, stockx = real sold prices with last sale/lowest ask/highest bid/90-day average, vinted = European second-hand clothes). However it offers no tool-level when-to-use or when-not-to-use guidance against the many price and marketplace siblings, and the 'Asking prices, not sold prices' caveat is a data caveat rather than routing advice.

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

resume_watchResume a watchA
DestructiveIdempotent
Inspect

Resume a watch the user chose, within their current plan. Recurring checks and possible email alerts restart. Requires watch-management permission.

NameRequiredDescriptionDefault
watch_idYes

TDQS

A3.6/5.0
Behavior3/5

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

The annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the mutation and repeat-safety profile is known. The description adds genuine value beyond that by disclosing the concrete side effects — recurring checks and possible email alerts restart — and the permission requirement. It does not say whether the resumed state is reversible or what happens when the plan limit is exceeded, which caps it above the minimum but below the top.

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 short sentences, each front-loaded with actionable information: the action, the side effects, the permission gate. Nothing is redundant or 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?

For a one-parameter mutation tool with no output schema, the description covers the effect (checks and alerts restart), the eligibility constraints (user-chosen watch, current plan) and the auth requirement. The remaining gap is the absence of guidance on sourcing watch_id and on failure behavior.

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 watch_id, so the description must carry the meaning. 'The watch the user chose' only hints at ownership and gives no indication of how the ID is obtained (e.g. via list_watches) or what a malformed/foreign ID does, leaving the single required parameter largely 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 gives a specific verb and resource ('Resume a watch') and scopes it to a user-chosen watch within their plan, which distinguishes it from pause_watch, delete_watch, get_watch and watch without opening any schema. It stops short of naming a sibling, but the verb itself carries the differentiation.

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 the preconditions for use clearly: the watch must be one the user chose, resuming must fit the current plan, and the caller needs watch-management permission. There is no explicit when-not guidance or referral to list_watches/watch for finding the right watch, so it falls short of a 5.

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

run_workflowRun a workflowAInspect

Several steps in one job, run by Puley in the background, with every result saved and emailed. workflow: trend-to-video (about: a niche; finds this week's most-watched videos on platform tiktok, instagram or youtube, works out why they work, writes an original video, records the voice-over and makes the clip), customers-and-openers (about: the kind of business, place: the town, offer: what is being sold; lists them with phones and websites and a first message for each), competitor-report (about: the competitor's name or website; its live ads and site, what it pushes and the gaps), product-ad-pack (about: the product; image or image_link: its photo; an ad picture, a video from the photo, a voice-over and music), should-i-sell (about: a product; real search demand, what advertisers pay, the trend and a verdict), copy-how-they-grew (about: a brand; its ads, creator videos, posts, news and paid searches as moves to copy), get-recommended-by-ai (about: what is sold; offer: the business; who AI recommends and a plan to get named), new-buyers (about: what is sold; new people on Reddit and X asking for it, with a reply to adapt) or ugc-ad (about: the product; a talking AI presenter video; model: woman or man). model: the video model (default a low-cost one). every: day or week repeats it, stop ends a repeat. The same request again returns its progress or the finished result. Each step uses reads as usual (a video about 200).

NameRequiredDescriptionDefault
aboutYes
everyNo
imageNo
modelNo
offerNo
placeNo
shapeNo
countryNoUS
platformNotiktok
workflowYes
image_linkNo

TDQS

A3.6/5.0
Behavior4/5

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

Beyond the annotations, the description discloses that execution is asynchronous and backgrounded, that results are persisted and emailed (a real side effect not captured by destructiveHint=false), that repeats can be scheduled with 'every', and that cost is metered in 'reads' ('a video about 200'). A mild tension exists with idempotentHint=false, since the description claims an identical request returns the existing progress/result rather than starting new work.

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 behavior is front-loaded in the first sentence, which is good, but the rest is a single dense run-on paragraph whose parenthetical workflow catalogue is hard to scan. Every element is arguably useful, yet the lack of list formatting makes the workflow-to-parameter mapping unnecessarily effortful to parse.

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 an 11-parameter, async, no-output-schema tool it does well on outcome and lifecycle (background run, saved/emailed results, polling, repeats, cost). It is incomplete on 'shape' and 'country', and it says 'stop ends a repeat' without any 'stop' parameter existing in the schema, leaving the stopping mechanism unexplained for a scheduling-capable 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 0%, so the description carries the full burden and mostly succeeds: it defines 'workflow' by enumerating valid values, explains that 'about' is interpreted differently per workflow, and documents 'model' (default is a low-cost one), 'every', 'offer', 'place', 'platform' (tiktok/instagram/youtube), and 'image'/'image_link'. Two parameters, 'shape' and 'country', are never mentioned, and the per-workflow parameter requirements are only shown by example inside parentheses rather than stated explicitly.

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 opening sentence gives a specific verb and resource with scope: 'Several steps in one job, run by Puley in the background, with every result saved and emailed', and the ten named workflows make the covered job types concrete. It does not, however, distinguish this from the sibling tools that share the same names (trend_to_video, competitor_report, customers_and_openers, ugc_ad, etc.), so an agent cannot tell from the description alone whether to call this or the single-purpose 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?

Some operational guidance is implied: 'The same request again returns its progress or the finished result' tells the agent to poll rather than re-submit, and 'every: day or week repeats it' explains scheduling. But there is no explicit when-to-use-this-vs-alternatives, no prerequisites, and no exclusions, especially against the identically named sibling tools.

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

salariesSalariesAInspect

What a role pays at a company, level by level, from Levels.fyi's verified submissions: each level's average total pay with base, stock and bonus and typical years of experience, plus the median and spread of total pay and how many salaries it rests on. role: software engineer, product manager, data scientist, engineering manager, product designer, sales, investment banker, consultant and more. Uses one read and saves the result in the user's Puley history.

NameRequiredDescriptionDefault
roleNosoftware engineer
companyYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and openWorldHint=true, which would otherwise look strange for a lookup; the description resolves this by stating it 'uses one read and saves the result in the user's Puley history,' explaining the write side effect and the credit cost. It also discloses the data provenance (verified submissions) and that sample counts back the figures, but says nothing about failure modes when a company/role has no data.

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 dense but well-ordered passage: what you get, then valid roles, then the read/history behavior. It is slightly run-on and packs provenance and return fields into a single sentence, but nothing is redundant with the schema or annotations.

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 (averages, median, spread, sample size, YoE), which is exactly the burden it must carry. What remains missing is minor: accepted company identifier formats and behavior when no salary data exists for a pair.

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 does list valid role values (software engineer, product manager, data scientist, engineering manager, product designer, sales, investment banker, consultant) which materially helps the defaulted 'role' param. However, 'company' is left completely unspecified — no guidance on name vs. domain vs. ticker formatting — which is a real gap for the only required 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?

States a concrete verb-and-resource: level-by-level pay for a role at a company, sourced from Levels.fyi verified submissions. The explicit return contents (base, stock, bonus, years of experience, median, spread, sample size) make it clearly distinct from neighboring tools like find_jobs or company_brief, though it never names an alternative outright.

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 — the agent can infer it is the tool for 'what does this role pay at this company' — but there is no explicit when-to-use/when-not guidance and no routing to or away from siblings such as find_jobs, company_brief, or market_quotes. The role enumeration is the only affordance steering correct invocation.

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

search_classifiedsSearch second-hand adsAInspect

Second-hand and local ads: Gumtree South Africa (country ZA, the default), Craigslist (US: place is a ZIP code or a city and state such as Austin, TX), Gumtree UK (GB), Kijiji (Canada, CA), Marktplaats (Netherlands, NL), Kleinanzeigen (Germany, DE), Subito (Italy, IT), OLX (India IN, Brazil BR: place a state such as SP or a city; Poland PL: place a city such as Warszawa), Wallapop (Spain, ES: around a city such as Madrid or Barcelona), Mercari (Japan, JP; search in Japanese works best; slower, about 20 s), Gumtree Australia (AU) and leboncoin (France, FR) (both about 30 s). Each ad's title, asking price, place, and where shown when it was posted, a short description and photo, with its link (sellers' names are left out). max_price in the local currency, 0 for any. place: a town, province or postcode. Uses one read and saves the result in the user's Puley history.

NameRequiredDescriptionDefault
placeNo
queryYes
countryNoZA
max_priceNo

TDQS

A3.9/5.0
Behavior4/5

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

Adds real behavior beyond the annotations: it discloses latency per source (Mercari ~20s, AU/FR ~30s) and explains that it 'uses one read and saves the result in the user's Puley history', which accounts for readOnlyHint=false. It also notes seller names are omitted from results. It does not discuss failure modes or rate limits, so not a 5.

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

Conciseness3/5

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

The long parenthetical country list is dense and front-loaded with marketplace names before the actual usage rules, which buries the key place-format guidance mid-sentence. Most of the content earns its place, but the structure could be tightened into clearer clauses.

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 4-parameter, no-output-schema tool, the description covers inputs, per-source latency, and the shape of returned ads (title, price, place, posted time, description, photo, link, no seller names). That is nearly complete; only error/empty-result behavior is 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?

With 0% schema description coverage, the description carries the full burden and largely does: it defines place formats per country, the country code set and default, max_price currency semantics and the 0 sentinel, and a query-language tip. Only 'query' itself gets no elaboration beyond the Japanese note.

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 ('Second-hand and local ads') and enumerates the exact marketplaces covered, so an agent knows precisely what corpus is searched. It does not explicitly differentiate itself from close siblings such as search_marketplace, find_ads, or resale_prices, 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 Guidelines4/5

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

Gives concrete usage context: country defaults to ZA, place accepts a town/province/postcode or a ZIP or 'city, state', max_price is in local currency with 0 meaning any, and Japanese queries work best for Mercari. It stops short of saying when to prefer this over sibling ad/marketplace tools or 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.

search_marketplaceSearch MarketplaceAInspect

Find public Facebook Marketplace goods by item and city (with its state or country where names repeat, e.g. Austin, Texas). Results outside the requested city are excluded. Returns listing text, price, currency, area and links, without seller profiles or contact harvesting. Plus/Pro; 1–10 results. Collection can take several minutes; a pending result (status=pending) carries job_id and next_check_after_seconds, and the collection continues under that job_id. One read on delivery; pending checks use none.

NameRequiredDescriptionDefault
cityYes
limitNo
queryYes

TDQS

A4.1/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses asynchronous collection ('can take several minutes'), the pending-result contract with job_id and next_check_after_seconds, and the credit model ('One read on delivery; pending checks use none'), which explains why readOnlyHint is false for a search. It also states plan gating (Plus/Pro), the 1–10 result ceiling, and that out-of-city results are filtered out.

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 scope, then return contents, then async/cost behavior – a sensible ordering. It is dense and slightly run-on in the final two clauses about reads and pending checks, but nearly every sentence adds information an agent needs.

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 three-parameter, open-world search with no output schema, the description covers return fields (listing text, price, currency, area, links), exclusion of seller data, result-count bounds, plan requirement, and the full pending-job lifecycle. Nothing material needed to invoke or poll 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?

With 0% schema description coverage, the description carries the burden and largely does: 'query' is the item, 'city' should include state or country where names repeat (with an 'Austin, Texas' example), and '1–10 results' bounds the limit parameter. It does not explicitly tie limit to the parameter name or default of 5, leaving a small inference.

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: 'Find public Facebook Marketplace goods by item and city,' which scopes it to Marketplace listings rather than general classifieds or ads. It does not explicitly differentiate from near-siblings like search_classifieds, find_ads, or resale_prices, so an agent must infer the distinction from the 'Facebook Marketplace' framing.

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 directed: the tool is for locating goods by item and city, and the 'without seller profiles or contact harvesting' clause signals what it is not for. However, no alternative tool is named and no when-to-use-versus-sibling condition is given, even though search_classifieds and find_ads overlap in intent.

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

search_postsSearch public postsAInspect

Find public posts about a topic on X or Reddit. X uses indexed web discovery, then verifies post text and publication dates; it is not complete or real-time X search. Reddit uses bounded public collection (Plus/Pro). period: day, week, month, year or all. limit: 1–10. A pending result carries job_id and next_check_after_seconds; the collection continues under that job_id. One read is used when usable results are delivered; pending checks use none.

NameRequiredDescriptionDefault
limitNo
queryYes
periodNomonth
platformNox

TDQS

A3.8/5.0
Behavior5/5

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

Beyond the annotations it discloses substantive behavior: the asynchronous job model ('A pending result carries job_id and next_check_after_seconds; the collection continues under that job_id'), and the credit model ('One read is used when usable results are delivered; pending checks use none'). It also states real coverage limitations for X and that Reddit uses bounded public collection, which an agent could not infer from the readOnlyHint/openWorldHint flags 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?

Purpose and platform caveats are front-loaded, followed by per-parameter constraints and then the async/billing behavior, which is a sensible order for an agent. A few terse fragments ('period: day, week, month, year or all. limit: 1–10.') read as notes rather than prose, but nothing is clearly redundant.

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 and zero schema descriptions, the description does well to explain the pending/complete result lifecycle and read consumption. It still leaves the 'query' input semantics and the full structure of a delivered result unstated, which matters for a tool whose call involves async polling.

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 parameter semantics and it only partly does: it enumerates period values (day, week, month, year, all) and the limit range (1–10), and mentions two platforms. It adds nothing about the 'query' parameter (operators, keyword semantics) or the exact accepted values for 'platform', leaving half the surface 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 opens with a concrete verb and resource ('Find public posts about a topic on X or Reddit') and names the two platforms it covers, so an agent knows exactly what is searched. It does not explicitly contrast itself with plausible siblings such as find_news, find_pins or read_comments, 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 Guidelines3/5

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

It gives useful context about how each platform is searched and warns that X results are indexed/verified rather than complete or real-time, which implicitly guides expectations. However, there is no explicit 'use this instead of X when...' routing against the many sibling search/read tools, so the when-to-use decision 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.

see_pageSee a pageAInspect

A screenshot of a page in a real browser, on a phone or a desktop, as a visitor in a country sees it (two-letter code: US, GB, ZA, DE...). The picture itself is returned, for checking how a site looks, whether a banner, price or button shows, or what visitors elsewhere see. device: phone or desktop. whole_page: the whole page instead of the first screen. countries: up to 4 codes to see the same page from each side by side (prices, banners, regional content). Cookie walls and pop-ups are hidden (never accepted); show_popups=true shows them as a first-time visitor sees them. Uses one read per picture and saves the pictures in the user's Puley history.

NameRequiredDescriptionDefault
linkYes
deviceNophone
countryNoUS
countriesNo
whole_pageNo
show_popupsNo

TDQS

A4.2/5.0
Behavior5/5

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

Beyond the annotations, the description discloses behavior an agent cannot otherwise know: cookie walls and pop-ups are hidden and never accepted unless show_popups=true, each picture consumes one read, and pictures are persisted to the user's Puley history. The persistence note meaningfully explains why readOnlyHint is false despite the tool being a visual inspection.

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 output is front-loaded in the first clause, and the parentheticals are compact rather than verbose. It reads as one dense run-on sentence with nested asides, which slightly impedes scanning but wastes little.

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 six-parameter, no-output-schema tool, the description covers purpose, per-call cost, side effects, and five of six parameters adequately. Missing are the return shape (image versus links) and any error or failure behavior, which matter given no output schema exists.

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?

With 0% schema description coverage, the description carries the burden and does so for most parameters: device values (phone or desktop), country as a two-letter code with examples, countries as up to 4 codes rendered side by side, and the meaning of whole_page and show_popups. The required link parameter is never described (no URL format guidance), which is the main 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 plainly states the resource and output: "A screenshot of a page in a real browser" and "The picture itself is returned," which implicitly separates it from text-extraction siblings like read_site. It does not name any sibling tool, so an agent must infer the boundary rather than being routed explicitly.

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?

Use cases are concrete: "checking how a site looks, whether a banner, price or button shows, or what visitors elsewhere see." That gives a clear context for invocation, but there is no explicit "do not use this when..." guidance or named alternative for cases where text extraction would be better.

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

should_i_sellShould I sell this?BInspect

In the background: checks a product's real Google search demand, what advertisers pay and the year's trend, and gives a yes, maybe or no with the reasons, then emails it. product: the product or idea. country: two-letter code. The same request again returns its progress or the finished result.

NameRequiredDescriptionDefault
everyNo
countryNoUS
productYes

TDQS

B3.2/5.0
Behavior3/5

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

The description adds real behavior beyond the annotations: the job runs asynchronously, polling is done by repeating the same request, and an email is sent as a side effect. That is meaningful for a tool whose annotations only declare readOnly=false, openWorld=true, idempotent=false, destructive=false. It still omits cost/latency expectations and whether repeated polling can trigger duplicate emails, so it falls short of a 4.

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?

It is compact and front-loads the concrete value proposition before the parameter notes. The sentence stitching is slightly run-on ('...then emails it. product: the product or idea...'), but no sentence 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?

With no output schema, the description must describe returns, and it does reasonably ('yes, maybe or no with the reasons, then emails it') while also covering async polling. The unexplained 'every' parameter and the absence of any note on how long a background run typically takes leave gaps for a 3-parameter, email-sending 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?

Schema coverage is 0%, so the description must carry all parameter meaning. It explains 'product' ('the product or idea') and 'country' ('two-letter code'), but the third parameter 'every' is never mentioned anywhere and an agent has no way to know what it should contain or its format.

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 chain (checks search demand, ad spend, yearly trend) and a concrete output (yes/maybe/no with reasons, emailed), so the tool's identity is unambiguous. It does not explicitly separate itself from similar research siblings such as search_trends or keyword_research, 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 Guidelines3/5

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

The phrase 'In the background' plus 'The same request again returns its progress or the finished result' gives an implicit async/polling usage pattern, which is genuinely useful. However, there is no guidance on when to pick this over search_trends, keyword_research, or is_it_real, and no stated prerequisites for the required product input.

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

showtimesMovie showtimesAInspect

What's playing at the cinemas nearest a US ZIP code or town, and when, from Fandango: each film with its rating, runtime and how many nearby theaters show it, or, for one movie, every nearby theater's showtimes by format (IMAX, Dolby, 3D...) with links to buy tickets. place: a ZIP (90036) or 'Austin, TX'. date: e.g. 2026-11-07 (default today). Uses one read and saves the result in the user's Puley history.

NameRequiredDescriptionDefault
dateNo
movieNo
placeYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and openWorldHint=true; the description reconciles the surprising non-read-only hint by stating 'Uses one read and saves the result in the user's Puley history', so an agent understands the side effect is a history write, not a destructive mutation. It also discloses the upstream data source. What it does not cover — rate limits, whether history writes are user-visible or removable — is minor given 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?

The core content (what it returns, in both modes) is front-loaded in the first sentence, with parameter hints trailing. It is dense and runs long as a single sentence, but no clause is filler — the Fandango attribution, the two return shapes, and the history-write note each carry 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?

With no output schema, the description still specifies return shape for both modes — per-film rating, runtime and nearby theater count, or per-theater showtimes grouped by format (IMAX, Dolby, 3D) with ticket links. Combined with the parameter formats and the history-write disclosure, nothing an agent needs to invoke it correctly is missing.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full burden, and it does: place gets accepted formats ('a ZIP (90036) or "Austin, TX"'), date gets an example and a default ('e.g. 2026-11-07 (default today)'), and movie is defined implicitly by the 'for one movie' mode. All three parameters are given meaning the schema does not supply.

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+resource ('What's playing at the cinemas nearest a US ZIP code or town, and when, from Fandango') and spells out two distinct modes: a film list for a place, or every nearby theater's showtimes for one movie. It also names the source (Fandango), which separates it from streaming siblings like where_to_watch and from ticket_prices.

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?

Usage is clear from the mode description — omit movie to get a film list, pass a movie to get per-theater showtimes with ticket links — and the 'for one movie ... with links to buy tickets' clause implicitly routes price/buying intent here rather than to ticket_prices. There is no explicit when-not guidance or named alternative, 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.

source_read_statusGet source resultsAInspect

Collect a pending Reddit, Marketplace or Glassdoor request from this Puley account. job_id comes from the pending result, which also gives next_check_after_seconds. Resumes the existing collection without duplicate provider submissions. Uses one read when a result is first saved; later retrievals of the same saved result use none.

NameRequiredDescriptionDefault
job_idYes

TDQS

A3.7/5.0
Behavior4/5

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

Beyond the annotations the description discloses meaningful behavior: no duplicate provider submissions on re-calls, consumption of one 'read' credit when a result is first saved and none on later retrievals, and a polling cadence via next_check_after_seconds. This explains the readOnlyHint=false/non-free semantics that annotations alone leave opaque. It stops short of describing what happens while the job is still pending or on provider failure.

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?

Four short sentences, front-loaded with what the tool does and where the required id comes from, with no filler. The final credit-consumption sentence is dense but earns its place; the 'collect a pending ... request' phrasing is slightly odd for a read tool.

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 should clarify what comes back, yet it never states whether the response contains the fetched items, a pending status, or both. It does cover cost, deduplication, and the next_check_after_seconds polling signal, which covers most of what an agent needs before calling.

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% for the single parameter, so the description must carry the burden, and it does explain the provenance of job_id (obtained from the pending result alongside next_check_after_seconds). It does not specify the id's format or whether stale/expired ids are rejected, but the origin guidance is the practically important part.

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 concrete verb and resource: collecting a pending Reddit/Marketplace/Glassdoor request tied to a job_id, and it clarifies that this resumes an existing collection rather than starting one. It does not differentiate itself from plausible siblings such as more_results, search_marketplace, or read, and the name/title ('status' vs 'get results') adds mild ambiguity about whether it returns status or payload.

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 agent learns job_id comes from a 'pending result' that also supplies next_check_after_seconds, which suggests calling this after starting a collection and re-calling per the polling interval. However, no sibling or alternative is named, and the tool that produces the pending result is never identified, so the agent must infer the workflow.

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

sports_scoresSports scoresAInspect

Live scores, results and fixtures, checked now: NFL, NBA, MLB, NHL, WNBA, college football and basketball, MLS, Premier League, Championship, FA Cup, Champions League, Europa League, La Liga, Bundesliga, Serie A, Ligue 1, Eredivisie, Brasileirão, Liga MX, Indian Super League, Saudi Pro League, J1, A-League, World Cup, F1, UFC, ATP and WTA from ESPN, and cricket (every series, IPL included) from Cricbuzz. team: a team's latest results and next games, with TV. date: e.g. 2026-11-08 for that day's games. Uses one read and saves the result in the user's Puley history.

NameRequiredDescriptionDefault
dateNo
teamNo
leagueYes

TDQS

A3.5/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, openWorldHint=true and idempotentHint=false, so the description's jobs are to explain the non-read-only behavior and the open-world sourcing. It does exactly that: 'Uses one read and saves the result in the user's Puley history' accounts for the write annotation, and naming ESPN and Cricbuzz discloses upstream sources. It does not cover failure modes or freshness/latency beyond 'checked now'.

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 the team/date semantics follow efficiently. The multi-line league enumeration, however, consumes most of the text with a raw roster of competitions rather than a compact statement, which is bulky relative to the information it conveys.

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 and an open-world, non-idempotent tool, the description is reasonably complete: it covers sources, the two optional query modes, and the history write. Gaps remain on the required league argument's format and on what a response looks like (per-team, per-day, or full slate).

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 all parameter meaning. It does well for 'team' (latest results plus next games, with TV) and 'date' (ISO-style example 2026-11-08 for that day's games), but 'league' is required and only inferable from a prose list of competitions — no format, casing, or accepted-value guidance is given.

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 opening clause 'Live scores, results and fixtures' states a specific resource and scope, and the long league enumeration makes the coverage concrete. It does not name or contrast any sibling tool, but no sibling in the list is sports-related, so confusion risk is low.

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 usage modes by explaining 'team: a team's latest results and next games' versus 'date: e.g. 2026-11-08 for that day's games', which hints at query-by-team versus query-by-day. It never states whether team and date can be combined, what happens when neither is supplied, or when to prefer this over a general news/search tool.

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

subscription_pricesSubscription prices worldwideA
Read-onlyIdempotent
Inspect

What a popular subscription costs in each App Store country, from the Puley Price Index (updated daily): ChatGPT, Claude, Gemini, Perplexity, Grok, Copilot, Le Chat, Character.AI, HBO Max, Crunchyroll, Telegram, Notion, CapCut and Google One. Gives local prices, US-dollar amounts, the cheapest and priciest countries and the US price. countries: optional two-letter codes; otherwise the cheapest and priciest are shown. plan: optional plan name and period (default: the main monthly plan). Uses Puley's own dataset: no read allowance.

NameRequiredDescriptionDefault
appYes
planNo
countriesNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the description only needs to add context beyond them. It does: data source and freshness (Puley Price Index, updated daily), the quota-relevant note 'no read allowance', and the default shaping of results when filters are omitted. Return format is described only in outline.

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 data source, then parameter behavior in one dense paragraph with no filler. The long app enumeration is long but earns its place by acting as an implicit value list for the required 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?

With no output schema, the description steps in to sketch the response (local prices, USD amounts, cheapest and priciest countries, US price), which is what an agent needs to plan a call. Gaps are minor: behavior for unknown apps/plans and result shape when countries is supplied are not spelled out.

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 all three parameters, and it largely does: countries as optional two-letter codes with the cheapest/priciest fallback, plan as optional name-plus-period with the main monthly plan as default, and the app list effectively constrains the required app value. It does not state what happens for an app outside the listed set.

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 (subscription prices per App Store country) and enumerates the covered services (ChatGPT, Claude, HBO Max, Notion, etc.), which separates it cleanly from price siblings like drug_prices, gas_prices, ticket_prices and resale_prices. It never explicitly routes against those siblings, 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?

Usage is only implied: it says the dataset is Puley's own and requires no read allowance, and it explains what happens when optional filters are omitted. There is no explicit 'use this when X, use compare_countries otherwise' guidance, so the agent must infer fit from the resource name.

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

ticket_pricesTicket pricesAInspect

Resale ticket prices for an artist, sports team, comedian or show, from Vivid Seats: each upcoming event's date, venue and city, the cheapest ticket (all in, with fees), the median and highest price, and how many tickets are for sale. place: only events in a city ('Chicago'). limit: up to 40. Uses one read and saves the result in the user's Puley history.

NameRequiredDescriptionDefault
nameYes
limitNo
placeNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and openWorldHint=true, and the description usefully explains why a price lookup is not read-only: it consumes one read and writes the result into the user's Puley history. It also discloses the data source (Vivid Seats) and that prices are all-in with fees, adding context the annotations cannot convey.

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

Conciseness4/5

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

Purpose and return shape are front-loaded, followed by the two parameter notes and a final behavioral note; every clause carries information. The middle section listing returned fields is dense but not redundant with any structured field, since no output schema exists.

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 steps in to describe the return payload field by field, and with no annotation explaining the write side effect it explains the history save and the one-read cost. For a three-parameter lookup tool this covers what an agent needs before calling 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 description coverage is 0%, so the description must carry the parameter burden. It does clarify place (city-only filter with an example, 'Chicago') and limit (hard cap of 40, default 20 shown only in schema), but it never states what 'name' expects precisely (artist vs. team vs. show title) or the matching behavior, so coverage is partial.

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+resource (resale ticket prices for an artist, team, comedian or show) and enumerates the returned fields (date, venue, city, cheapest all-in price, median, highest, ticket count), so the agent knows exactly what data comes back. It does not differentiate itself from plausible siblings such as resale_prices or find_events, which is why 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?

Usage is implied by the domain ('prices for a show') and two parameters get inline guidance (place restricts to a city, limit caps at 40). There is no explicit when-to-use/when-not guidance and no pointer to the sibling resale_prices or find_events for related tasks, leaving the agent to infer selection.

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

tiktok_shopTikTok Shop productsAInspect

What sells on TikTok Shop for a search: products with price, number sold, rating, reviews, shop and link, most sold first. country: US, GB or another TikTok Shop country. limit: 5 to 30. Saved in the user's Puley history.

NameRequiredDescriptionDefault
limitNo
searchYes
countryNoUS

TDQS

A3.6/5.0
Behavior3/5

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

The annotations declare readOnlyHint=false, openWorldHint=true and destructiveHint=false, which is mildly counterintuitive for a search; the description earns credit for explaining that gap by disclosing 'Saved in the user's Puley history', so the non-read-only flag is accounted for. It also discloses the ranking behavior ('most sold first'). It says nothing about how live the data is, result freshness, or what happens when a country has no shop coverage, so the disclosure is partial rather than rich.

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 two dense, front-loaded sentences with essentially no filler; the primary payload (what you get back and how it is ordered) comes first. The phrasing is telegraphic — 'limit: 5 to 30. Saved in the user's Puley history.' reads as stitched fragments — which slightly hurts scannability but wastes no words.

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 correctly takes on the job of describing the result shape (price, sold count, rating, reviews, shop, link) and ordering, which is exactly the right allocation of effort. Annotations cover the safety profile and are consistent with the stated history side effect. The remaining gap is search-syntax guidance, which is the one thing an agent could get wrong on first 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 description coverage is 0%, so the description must carry parameter meaning, and it does for two of three: country gets concrete accepted values ('US, GB or another TikTok Shop country') and limit gets an explicit range ('5 to 30') that the bare schema does not express. The required `search` parameter is only implied by 'for a search' with no guidance on whether it takes a product name, keyword, or category, so the compensation is incomplete.

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 question — products selling on TikTok Shop for a given search — and enumerates the returned fields (price, number sold, rating, reviews, shop, link) plus the sort order ('most sold first'). That is far more concrete than a tautology, and the name/title reinforce it. It stops short of 5 because it does not distinguish itself from near-neighbour siblings such as best_sellers, search_marketplace, or should_i_sell, which an agent could plausibly confuse with it.

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?

'for a search' plus the country list implies the discovery use case, and the suggestion that results land in Puley history hints at a browsing workflow. However, there is no explicit when-to-use clause, no when-not-to-use, and no named alternative tool for commercial-vs-organic product research. Usage is inferable but not directed.

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

trend_to_videoTrend to videoAInspect

Runs once, in the background: finds this week's most-watched videos in a niche on platform tiktok, instagram or youtube, works out why they work, writes an original video, records the voice-over and makes the clip, saves the pack in the person's Puley history and emails it to them. model: the video model (default a low-cost one). The same request again returns its progress or the finished pack. Its cost (about $1, mostly the video) comes off the person's Puley balance, within their daily limit.

NameRequiredDescriptionDefault
modelNo
nicheYes
platformNotiktok

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations it discloses the async execution model, the side effects (pack saved to Puley history, email sent), and the cost profile (~$1 drawn from the balance, subject to a daily limit) — exactly the context annotations cannot convey. One minor tension: the description implies repeat calls return the existing run rather than re-executing, which sits awkwardly with idempotentHint=false, but it is a clarification rather than 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.

Conciseness4/5

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

Front-loaded with the execution mode and packed into one dense paragraph where nearly every clause adds a distinct fact (inputs, output, persistence, cost). A few phrasings such as "works out why they work" are loose, but nothing is 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 multi-step, side-effecting tool with no output schema, the description covers what is returned (progress or finished pack), where it lands, and what it costs. It omits expected duration and what the pack contains, which would help an agent set expectations, but nothing essential for a correct call 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 0%, so the description must carry the load and largely does: it explains "model" as the video model with a low-cost default, and its phrasing "in a niche on platform tiktok, instagram or youtube" effectively enumerates the valid platform values that the schema leaves as a bare string. It does not address the schema's empty-string default for model, which conflicts slightly with the stated low-cost 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?

"Finds this week's most-watched videos in a niche on platform tiktok, instagram or youtube, works out why they work, writes an original video, records the voice-over and makes the clip, saves the pack ... and emails it" names the exact verb chain and artifact produced. An agent can distinguish this from find_videos (a search) or make_media (a single render) 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?

"Runs once, in the background" and "the same request again returns its progress or the finished pack" give concrete calling and polling guidance, which is the key operational question for this tool. It stops short of naming alternatives (find_videos, search_trends, make_media) or stating when to prefer them, so no explicit when-not guidance.

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

ugc_adUGC adAInspect

Runs once, in the background: writes a hook-first 15-second script from what is working in the product's niche, makes an AI presenter (holding the product when its photo is given in image or image_link) and a vertical phone-style video of them presenting it, lip-synced, with a caption. The presenter is AI-made and never claims to be a customer. product: the product and offer. presenter: woman or man (optional). About $1.50 a video. The same request again returns its progress or the finished video.

NameRequiredDescriptionDefault
imageNo
productYes
presenterNo
image_linkNo

TDQS

A3.7/5.0
Behavior4/5

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

Beyond the annotations (readOnlyHint=false, openWorldHint=true, destructiveHint=false) the description discloses genuinely valuable behavior: asynchronous background execution, an approximate price of $1.50 per video, the repeat-call/polling semantics, and a disclosure policy that the presenter is AI-made and never claims to be a customer. The one tension is that 'the same request again returns its progress' reads as dedupe/idempotent behavior while idempotentHint is false; it is not a hard contradiction, but the mismatch costs it a point.

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?

It is a single dense paragraph with the most important fact (background, one-shot run) front-loaded, and every sentence carries information about output, cost, or parameters. It is slightly overloaded, mixing artifact description, pricing, polling semantics, and parameter glossary in one block, which would read better split into short labeled parts.

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 paid, asynchronous, generative tool with no output schema and 0% schema coverage, the description covers a lot: cost, async behavior, polling, disclosure, and parameter meaning. It is still incomplete on what the return value actually looks like (video URL? asset handle?), how long generation typically takes, and what happens if generation fails or the image is unusable.

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 carries the full burden, and it largely does: product is 'the product and offer', presenter is 'woman or man (optional)', and image/image_link are explained as the product photo the presenter holds. The gap is that image is an untyped free-form object in the schema and the description never says what shape it takes or how it differs from image_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 names a concrete artifact with concrete attributes: a hook-first 15-second script, an AI presenter lip-synced in a vertical phone-style video, with a caption. That is far more specific than the name alone. It stops short of a 5 because it never distinguishes itself from close siblings such as product_ad_pack, trend_to_video, or make_media, so the agent must infer which generator 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?

Useful operational guidance is present: it 'runs once, in the background' and 'the same request again returns its progress or the finished video', which tells the agent how to poll. However, there is no explicit when-to-use or when-not-to-use guidance against the many sibling generators, and no prerequisites such as whether a product image is required for the presenter to hold it.

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

use_toolRun a toolAInspect

Run one tool from Puley's catalogue of about 4,000 data tools by its id (for example treg.tiktok.user.profile or treg.google.keywords.volume), with its inputs named as the tool search lists them (for example {"username": "khaby.lame"} or {"keywords": ["air fryer"], "country": "US"}). Returns the tool's answer as a table or as text. Reads are charged from what the call cost, and nothing when it finds nothing or is blocked. A call over 50 reads returns its price first and runs with confirm=true. The result is saved in the user's Puley history.

NameRequiredDescriptionDefault
toolYes
inputsNo
confirmNo

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the annotations, the description discloses billing semantics: reads are charged from the call cost, nothing is charged when nothing is found or the call is blocked, calls over 50 reads return a price first and require confirm=true, and results are saved to Puley history. This is substantial behavioral context for a non-read-only, open-world dispatcher.

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?

The description is dense but front-loaded: the core action and input shape come first, followed by return format, billing, confirmation, and history. Every sentence contributes useful operational information, with 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 meta-tool with no output schema, the description covers return format, billing, confirmation, and history well. It could be more complete by explicitly directing agents to find_tool for discovery and by clarifying fallback or error behavior beyond blocked or empty results.

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%, so the description carries the full burden. It explains that tool is an id from the catalogue, gives example ids, explains that inputs must match the tool search's naming with example payloads, and explains confirm's role for calls over 50 reads.

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: run one tool from Puley's catalogue by its id. It gives concrete id examples and distinguishes the action from a search, but it does not explicitly name the sibling find_tool or otherwise clarify how this differs from the many dedicated tools.

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 implies the workflow by saying inputs must be named as the tool search lists them, and it explains the confirm behavior for expensive calls. It lacks explicit when-to-use versus when-to-use-a-dedicated-sibling guidance, but the context is clear enough for an agent that already has a tool id.

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

viral_outliersPosts that beat their accountCInspect

This week's most-watched videos in a niche on TikTok or Instagram with each creator's followers and views divided by followers, highest first: the ideas that spread on their own. niche: a topic or hashtag. Saved in the user's Puley history.

NameRequiredDescriptionDefault
nicheYes
platformNotiktok

TDQS

C2.7/5.0
Behavior3/5

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

The description adds genuine context beyond the annotations by disclosing a side effect: results are 'Saved in the user's Puley history,' which usefully explains the readOnlyHint=false on what looks like a read operation. It does not say what exactly is persisted, whether repeated calls accumulate history entries, or anything about cost/latency, and the fixed 'this week' window is unstated as a constraint.

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 opening sentence is a run-on that repeats 'followers' twice and buries the ranking metric mid-clause, so the reader has to re-parse it. The useful facts (ratio ranking, weekly window, history save) are present but poorly ordered and wrapped in noisy filler like 'the ideas that spread on their own'.

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 two-parameter tool with no output schema, the description covers the niche definition, platform surface, time window, sort order, and a persistence side effect, which is a reasonable amount. But the platform parameter's accepted values and the exact meaning of the ratio metric remain ambiguous, which matters for correct invocation.

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 compensate. It defines 'niche' as 'a topic or hashtag', which is helpful, and implies platform values are TikTok or Instagram, but it never states the allowed values explicitly or mentions the 'tiktok' default, leaving the agent to guess whether other platform strings are valid.

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 conveys the resource (top videos in a niche ranked by views/followers ratio this week) but the phrasing is garbled: 'each creator's followers and views divided by followers' is a mangled way of saying views divided by follower count, and 'most-watched' arguably conflicts with the outlier framing in the title. An agent can roughly infer what it returns, but the core metric definition is not stated cleanly.

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 guidance and no exclusions. Siblings like find_videos, search_posts, trend_to_video, and creator_check overlap heavily with this space, yet the description never says when this ranked-view-ratio view is the right choice over those alternatives.

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

watchWatch a pageA
DestructiveIdempotent
Inspect

Keep checking a page and tell the user when it changes. what: 'price' (with under_price for a target), 'stock' (back in stock), 'change' (any change), 'jobs' (new jobs on a careers page) or 'account' (a TikTok or Instagram account's new posts and breakouts). how_often: '5m', '1h', '2h' or '1d' (the user's plan sets the fastest). Creates a persistent watch, runs its first check, and schedules recurring checks. Changes appear as alerts and may be emailed according to the user's account settings. Identical settings reuse an existing watch, including a paused one; they never resume it implicitly. A repeated request_id returns the same watch instead of creating another. Returns the watch's id, which manages it later.

NameRequiredDescriptionDefault
linkYes
whatYes
how_oftenNo2h
request_idNo
under_priceNo

TDQS

A4.7/5.0
Behavior5/5

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

Annotations declare destructiveHint=true, idempotentHint=true and openWorldHint=true, but the description goes well beyond them: it says a watch is created, a first check runs immediately, recurring checks are scheduled, changes surface as alerts and may be emailed, identical settings reuse a paused watch without resuming it, and request_id deduplicates. That is exactly the operational context an agent needs before invoking a stateful tool.

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 sentence, and every subsequent sentence adds operational detail rather than filler. The inline `what:`/`how_often:` enumeration makes the middle dense and slightly run-on, but no sentence is dispensable.

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 five-parameter, stateful tool with no output schema, the description covers creation, immediate first run, scheduling, notification channels, reuse semantics, idempotency, and the returned watch id used for later management. Nothing material 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.

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full burden, and it does: it enumerates the accepted `what` values, the accepted `how_often` intervals with the plan-based floor, the role of `under_price` as a target for price watches, and the deduplication meaning of `request_id`. Only the obvious `link` parameter is left unstated, which is acceptable.

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?

'Keep checking a page and tell the user when it changes' gives a specific verb and resource, and the follow-up sentence enumerates the five watch modes (price, stock, change, jobs, account). The agent can distinguish this from one-off siblings like see_page, read_site, or check_watch_now because the description stresses a persistent, recurring watch.

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?

The `what` enumeration effectively tells the agent which situation maps to which mode, and the reuse/idempotency sentences clarify when a new watch is or isn't created. It stops short of explicitly naming alternatives such as using read or see_page for a single check, leaving the recurring-vs-one-shot distinction implicit.

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

watch_videoWatch a videoAInspect

Watch a YouTube, TikTok, Instagram or X video, picture and sound: a summary, a timeline of what is shown at each moment with on-screen text word for word and the gist of what is said, every piece of on-screen text, the products, places and people shown, and an answer to question if one is given. It covers what a video shows, beyond what is said. YouTube up to 60 minutes; others up to 20 minutes. Paid from the balance, about a cent a minute of video; saved in the user's Puley history.

NameRequiredDescriptionDefault
linkYes
questionNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already flag openWorldHint, non-readOnly, and non-idempotent; the description adds real substance beyond that by disclosing the pricing model, the balance debit, duration limits, and the persistent side effect (results saved in the user's Puley history). It does not cover failure modes or latency, 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.

Conciseness3/5

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

Front-loads the core value (what the watch produces), but the body is a single run-on sentence that mixes outputs, platform limits, pricing, and persistence without paragraph or bullet structure. Every element is relevant, but the density makes scanning harder than necessary.

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, so the description must explain return content, which it does in detail (timeline, transcript gist, entities, question answer). Combined with cost and length limits, an agent has enough to call it correctly; only edge-case behavior on unsupported or overlong links 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?

With 0% schema description coverage, the description carries the full burden and mostly succeeds: it clarifies that 'link' accepts YouTube, TikTok, Instagram, or X URLs, and that 'question' is optional and drives a direct answer. It does not specify link format requirements or what happens if the question is omitted beyond the default empty string.

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 specific verb (watch) with the exact platforms supported (YouTube, TikTok, Instagram, X) and enumerates the concrete outputs: summary, moment-by-moment timeline, verbatim on-screen text, products/places/people, and optional question answer. This clearly separates it from siblings like find_videos, watch, or where_to_watch.

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 usable conditions: per-platform duration caps (60 min YouTube, 20 min others), cost (~1 cent/minute billed to balance), and that a question can be supplied to get a targeted answer. It stops short of naming alternatives or stating when not to use it versus find_videos or where_to_watch.

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

whats_changedWhat changedB
Read-onlyIdempotent
Inspect

The latest alerts from the user's watches (price drops, restocks, page changes, new jobs, new posts and breakouts), newest first, with each watch's current state.

NameRequiredDescriptionDefault
limitNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that — result ordering (newest first) and the inclusion of each watch's current state alongside the alert — but says nothing about pagination, empty states, or how the limit interacts with the feed.

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?

It is a single front-loaded sentence with no filler; the parenthetical enumeration of alert types is long but carries real disambiguation value. Ordering ('newest first') and payload shape are appended efficiently rather than in a separate paragraph.

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 some work by disclosing that each result includes the watch's current state, which is the key return-value detail. But for a feed tool with one undocumented parameter and no stated result shape or volume behavior, the definition omits information an agent would want before calling it.

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 parameter 'limit', which only has a default of 10 and no textual explanation. The description's use of 'latest alerts' hints that results are bounded but never clarifies that 'limit' caps the number of alerts returned or how it interacts with the per-watch state payload.

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 (alerts from the user's watches) and enumerates the alert categories it covers (price drops, restocks, page changes, new jobs, new posts, breakouts), so an agent can tell it apart from list_watches or get_watch. It stops short of naming any sibling explicitly, so the differentiation is inferred rather than stated.

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

Usage Guidelines3/5

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

Usage is implied by the content description: this is the tool for 'what happened since I last looked' across watches. However, there is no explicit guidance on when to prefer it over list_watches, get_watch, or check_watch_now, and no exclusions or prerequisites are given.

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

where_to_watchWhere to watchAInspect

Where a film or show can be watched in a country right now, from JustWatch: each service that has it, whether it's included with a subscription, free, free with ads, to rent or to buy, the price, picture quality and seasons, with a link to the service's own page. country: two-letter code or name (US, GB, IN, DE, BR, JP...). year: to tell remakes apart. Services add and drop titles monthly. Uses one read and saves the result in the user's Puley history.

NameRequiredDescriptionDefault
yearNo
titleYes
countryNoUS

TDQS

A3.6/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, which is counterintuitive for a lookup, and the description explains why: 'Uses one read and saves the result in the user's Puley history.' That is exactly the kind of side-effect disclosure annotations cannot convey, and it is consistent with the annotations. It stops short of saying what happens on a no-match or which regions JustWatch covers poorly.

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 return-value enumeration is front-loaded, followed by parameter notes and then a freshness caveat, so the important content comes first. The middle sentence is an overlong run-on with mixed commas ('whether it's included with a subscription, free, free with ads, to rent or to buy...'), which slightly hurts scannability, though little of it is truly 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 properly compensates by describing the shape of the result, and it also covers side effects and data freshness for a 3-parameter tool. What is missing is edge-case behavior (title not found, ambiguous matches, unsupported country), which matters for a lookup against an external catalog.

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 parameter meaning, and it largely does: country is explained as a two-letter code or name with concrete examples (US, GB, IN, DE, BR, JP), and year is given a real purpose ('to tell remakes apart') rather than being left as a bare integer. Only 'title' is left unelaborated, which is acceptable since it is the required, self-evident input.

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?

It states a specific verb-like outcome (find where a film/show can be watched, in a given country) and enumerates exactly what is returned: services, monetization type, price, quality, seasons, deep link, sourced from JustWatch. That is far more specific than the name alone. It loses a point because it never distinguishes itself from close siblings such as check_watch_now, get_watch, or watch, which an agent must guess between.

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 / when-not-to-use guidance and no named alternative among a large sibling set that includes check_watch_now, get_watch, list_watches, and watch. The phrase 'right now' and the note that 'services add and drop titles monthly' hint at a freshness use case, but the agent is left to infer routing entirely on its own.

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. 13 tool updates
    • Addedai_recommends
    • Addedcomment_insights
    • Addedcompetitor_keywords
    • Addedcopy_how_they_grew
    • Addedcreator_check
    • Addedemployee_reviews
    • Addedget_recommended_by_ai
    • Addedlinkedin_tiktok_ads
    • Addednew_buyers
    • Addedpeople_asking
    • Addedtiktok_shop
    • Addedugc_ad
    • Addedviral_outliers
  2. 11 tool updates
    • Addedcheck_backlinks
    • Addedcompany_brief
    • Addedcompetitor_report
    • Addedcustomers_and_openers
    • Addedfind_contact
    • Addedgoogle_results
    • Addedkeyword_research
    • Addedmaps_rank
    • Addedproduct_ad_pack
    • Addedshould_i_sell
    • Addedtrend_to_video
  3. 1 tool update
    • Addedfind_leads
  4. 65 tool updates
    • First observedaccount_report
    • First observedamazon_price_history
    • First observedapp_charts
    • First observedbest_sellers
    • First observedcheck_links
    • First observedcheck_site
    • First observedcheck_watch_now
    • First observedcompare_countries
    • First observedcompare_stores
    • First observeddelete_watch
    • First observeddrug_prices
    • First observedfind_ads
    • First observedfind_cars
    • First observedfind_channels
    • First observedfind_events
    • First observedfind_flights
    • First observedfind_homes
    • First observedfind_jobs
    • First observedfind_news
    • First observedfind_pins
    • First observedfind_places
    • First observedfind_stays
    • First observedfind_tool
    • First observedfind_videos
    • First observedflight_status
    • First observedgas_prices
    • First observedget_watch
    • First observedis_it_real
    • First observedlist_connected_accounts
    • First observedlist_models
    • First observedlist_watches
    • First observedlocal_stock
    • First observedmake_media
    • First observedmake_table
    • First observedmarket_quotes
    • First observedmore_results
    • First observednetflix_top10
    • First observedpage_history
    • First observedpause_watch
    • First observedpublic_holidays
    • First observedread
    • First observedread_comments
    • First observedread_document
    • First observedread_reviews
    • First observedread_site
    • First observedread_with_account
    • First observedresale_prices
    • First observedresume_watch
    • First observedrun_workflow
    • First observedsalaries
    • First observedsearch_classifieds
    • First observedsearch_marketplace
    • First observedsearch_posts
    • First observedsearch_trends
    • First observedsee_page
    • First observedshowtimes
    • First observedsource_read_status
    • First observedsports_scores
    • First observedsubscription_prices
    • First observedticket_prices
    • First observeduse_tool
    • First observedwatch
    • First observedwatch_video
    • First observedwhats_changed
    • First observedwhere_to_watch

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Lets AI assistants control your real Chrome browser to perform web tasks like reading pages, taking screenshots, clicking, and typing, using your existing logged-in sessions.
    145
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to read web pages as clean markdown or JSON, crawl sites, search the web with results already read, monitor pages for changes, and run multi-step browser tasks under configurable limits.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources