Good Turn Studio (all tools)
Server Details
All 27 Good Turn Studio helpers in one server: money, health, jobs, travel, art, halal, scripture.
- Status
- Healthy
- Uptime
- 99.9% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- GoodTurnStudio/goodturn-mcp
- GitHub Stars
- 0
- Server Listing
- goodturn-mcp
TDQS
Scored across 163 tools
Prefixes (artspotter_, jobspotter_, bible_, etc.) namespace each mini-app, so most tools are separable at a glance. However, six near-identical 'scroll' servers (bible, gita, gurbani, lore, stoics, talmud) repeat the same relative tool names (get_card, get_today, list_readings, search_readings), and several domains overlap conceptually (halalornot_check_product_by_barcode vs platepal_get_barcode_nutrition vs supplementcheck_get_supplement), which creates real misselection risk.
Names are consistently snake_case verb_noun prefixed by domain, and verbs are used predictably (get_, list_, search_, check_, draft_). Minor deviation: some tools use resource-first phrasing (mizan_calculate_zakat, platepal_get_barcode_nutrition) but it stays readable and consistent within each namespace.
163 tools in one server is an extreme mismatch — this is clearly a bundle of ~27 independent apps rather than one coherent server. The count is far beyond any reasonable scoping and imposes heavy selection overhead on an agent.
Within each sub-app the surface is generally rich (search, lookup, drafts, reminders, verification), suggesting good lifecycle coverage per domain. But with 163 tools the set is too sprawling to verify cleanly, and cross-app gaps (e.g. no unified billing/fare/price concept, inconsistent region handling) leave dead ends.
Available Tools
162 toolsappealmyclaim_draft_appeal_letterAppeal My Claim: Draft an appeal letter for the user to review and sendARead-onlyIdempotentInspect
Appeal My Claim. Draft an appeal letter for the user to review and send. For requests like "my insurer denied my MRI as not medically necessary, help me appeal" or "write an appeal letter for an out-of-network denial". Returns a letter as plain text with [brackets] for anything not given, a checklist of what to attach (denial notice, doctor's letter of medical necessity, records), and tips. It never sends or files anything.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date of service. | |
| name | No | Member's name. | |
| plan | No | Insurer or plan name. | |
| claim | No | Claim or reference number. | |
| doctor | No | Treating doctor's name. | |
| reason | No | Why the claim was denied: medical_necessity, emergency (said it wasn't an emergency), experimental, out_of_network, prior_auth, coding or generic. Required unless denial_code is given. | |
| urgent | No | Set to yes to ask for an expedited review. | |
| details | No | A sentence or two in the user's words on why the care should be covered. | |
| service | No | The care that was denied, like "MRI of the right knee". | |
| provider | No | Hospital, clinic or provider name. | |
| member_id | No | Member ID or Medicare number. | |
| plan_type | No | Same values as plan_type in get_appeal_rights. Changes the wording for Medicare. | |
| denial_code | No | The reason code on the notice, like CO-50 or PR-197. Picks the reason when reason is left out, and is quoted in the letter. | |
| denial_date | No | Date on the denial notice. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, and the description confirms it 'never sends or files anything' – consistent, no contradiction. It adds the return shape (plain text with [brackets], checklist, tips), which is useful, but says nothing about authoritativeness, jurisdiction limits, or whether the letter is legally reviewed. With annotations carrying the safety profile, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose then examples then return behavior, with no filler. The opening restates the title ('Draft an appeal letter for the user to review and send'), which is mild redundancy, but everything else earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by describing what the letter, checklist, and tips contain and by clarifying the tool's non-action boundary. For a 14-parameter tool it is reasonably complete, though it does not mention that most parameters are optional or how missing fields degrade the draft.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all 14 parameters, so the schema already documents each field, its enum values, and the reason/denial_code relationship. The description only alludes to placeholders for missing values ('anything not given') and adds no syntax or format detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Draft') and resource ('appeal letter') and immediately scopes it with example requests ('my insurer denied my MRI', 'out-of-network denial') that agents can pattern-match to user intent. It is clearly distinguishable from siblings like get_appeal_rights and explain_denial_code, which supply inputs rather than produce a letter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The two quoted example requests give concrete triggering conditions for when to invoke this tool, and the closing sentence establishes that it is for drafting only. It does not explicitly say when NOT to use it or point to a sibling for the underlying rights/deadline lookups, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
appealmyclaim_explain_denial_codeAppeal My Claim: Explain the denial codes on an Explanation of BenefitsARead-onlyIdempotentInspect
Appeal My Claim. Explain the denial codes on an Explanation of Benefits. For requests like "my EOB says CO-50, what does that mean?", "what is denial code PR 204?" or "what does N130 mean?". Returns each code in plain words, who usually fixes it (the provider's billing office, an appeal, or the user), whether the provider can bill the user for it (from the group code CO, PR, OA or PI), and a letter link when an appeal fits.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | One to four codes from the notice, like CO-50, PR 204, 197 or N130. | |
| plan_type | No | Same values as plan_type in get_appeal_rights. Carried into the letter link. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and idempotentHint=true, so the safety profile is covered. The description adds genuine context beyond that: the tool returns plain-language meaning, the responsible party, billing liability derived from the group code, and a conditional letter link.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose well, but the first two sentences essentially restate the title and the second sentence duplicates the code examples already in the schema. The return-value sentence does the real work, so there is some avoidable redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full burden and does describe the returned fields (meaning, fixer, billing liability, letter link). It is complete enough to call correctly, though it does not specify multi-code input behavior despite saying 'each code'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description goes further by explaining that the code's group prefix (CO, PR, OA, PI) drives the billing-liability output, which the schema's format examples do not convey, and it ties plan_type to get_appeal_rights semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (explain) and resource (denial codes on an Explanation of Benefits), and the example utterances ('my EOB says CO-50', 'PR 204', 'N130') make the domain unmistakable. An agent can distinguish it from appealmyclaim_get_appeal_rights or draft_appeal_letter without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The quoted user requests give strong, concrete triggers for when to reach for this tool, and the mention of a letter link signals its relationship to the appeal flow. There is no explicit when-not or named alternative, so it stops short of the 5 benchmark.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
appealmyclaim_get_appeal_deadlinesAppeal My Claim: How long someone has to appeal, and how fast the plan must decideARead-onlyIdempotentInspect
Appeal My Claim. How long someone has to appeal, and how fast the plan must decide. For requests like "how long do I have to appeal?", "when is my appeal due?" or "how fast does my insurer have to answer?". With the date on the denial notice, gives an approximate file-by date. The date on the user's own notice is the one that counts.
| Name | Required | Description | Default |
|---|---|---|---|
| urgent | No | Set to yes if waiting could seriously harm the person's health. | |
| plan_type | No | Same values as plan_type in get_appeal_rights. Default: most private plans. | |
| denial_date | No | Date on the denial notice, like 2026-09-01, 09/01/2026 or September 1, 2026. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint/idempotent/no-destructive, so the safety profile is covered. The description adds real behavioral context beyond the annotations: that supplying the denial date yields only an approximate file-by date, and that the user's own notice governs. It does not describe output shape, but as a read-only lookup that gap is minor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then example queries, then the accuracy caveat. Slight redundancy in restating the title 'Appeal My Claim. How long someone has to appeal...' before the examples, but every remaining sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, zero-required-parameter lookup with no output schema, the description covers what the caller gets (deadlines/decision windows), the role of denial_date, and a caution about accuracy. Only the literal return shape is unspecified, which is acceptable here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three parameters are already documented, including the urgent enum and plan_type's cross-reference. The description only loosely ties denial_date to 'the date on the denial notice' — no format or default guidance beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb-resource pair ('how long someone has to appeal, and how fast the plan must decide') that clearly distinguishes it from sibling get_appeal_rights and draft_appeal_letter. An agent can pick it apart from the other appealmyclaim tools without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Example user phrasings ('how long do I have to appeal?', 'when is my appeal due?', 'how fast does my insurer have to answer?') give clear triggering context, and it references get_appeal_rights for the plan_type value space. It stops short of stating when NOT to use this tool or what it does not cover.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
appealmyclaim_get_appeal_rightsAppeal My Claim: Appeal rights, steps and free help for a plan type and stateARead-onlyIdempotentInspect
Appeal My Claim. Appeal rights, steps and free help for a plan type and state. For requests like "what are my appeal rights in California?", "my insurer denied my claim, what can I do?" or "how do Medicare appeals work?". Returns who decides, the steps (internal appeal, external review, Medicare levels or Medicaid fair hearing), deadlines, and where to get free help, including the state insurance department. If the plan type is not known, leave it out to get the rules for most private plans.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | US state name or two-letter code, like California or CA. Puerto Rico works too. | |
| plan_type | No | Plan type: marketplace, employer, employer_insured, employer_self_funded, medicare, medicare_advantage, part_d or medicaid. Everyday words work too, like "job", "Obamacare" or "Medi-Cal". Default: most private plans. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered; the description still adds value by disclosing what the call returns (decision-maker, appeal steps, deadlines, free help) and the default behavior when plan_type is omitted. No rate limits or data-freshness caveats are mentioned, but nothing is contradicted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with purpose, then trigger examples, then return contents, then the optional-parameter rule. The opening restatement of the display name is slightly redundant, but the rest is dense with useful information and free of filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly carries the job of enumerating what comes back (who decides, steps across appeal tracks, deadlines, free help including the state insurance department) and how to call it with zero required parameters. The only gap is that it never clarifies how it relates to the deadline-focused sibling, which an agent choosing between the two would want.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds real semantics on top: omitting plan_type yields the rules for most private plans, which reinforces and clarifies the schema's stated default. State is not elaborated beyond the schema, and both parameters are optional per the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb (get) plus the resource (appeal rights, steps and free help) scoped by plan type and state, and the example questions make the intent unmistakable. It does not, however, differentiate itself from the sibling appealmyclaim_get_appeal_deadlines, even though it lists deadlines among its own outputs, leaving a small routing ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The quoted example requests ("what are my appeal rights in California?", "my insurer denied my claim, what can I do?") give an agent concrete trigger conditions, and the closing note tells it what to do when plan type is unknown. There is no explicit statement of when NOT to use it or which sibling to prefer instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
artspotter_calculate_resale_royaltyArt Spotter - Eye of the Beholder: UK Artist's Resale Right on a resaleARead-onlyIdempotentInspect
Art Spotter - Eye of the Beholder. UK Artist's Resale Right on a resale. The royalty owed to an artist on a UK resale through a gallery, dealer or auction house, by band, with the cap and who collects it.
| Name | Required | Description | Default |
|---|---|---|---|
| price | Yes | Resale price in pounds. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond that: the result is banded, respects a cap, and identifies who collects the royalty. It does not cover edge cases (e.g., non-UK resales or zero-price handling), 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core content is compact and front-loaded, but the first two fragments ('Art Spotter - Eye of the Beholder.' and a restatement of the title) are brand boilerplate that repeat structured fields rather than adding information. The useful clause starts only at 'The royalty owed...'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by previewing the return shape (band, cap, collector). For a single-parameter, read-only calculation tool this is close to complete; only the US/non-UK scope boundary and any price-range constraints are left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single price parameter is already documented as 'Resale price in pounds'. The description adds no syntax, currency, or format detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific domain concept (UK Artist's Resale Right) and states exactly what is produced: the royalty owed to an artist on a resale through a gallery, dealer or auction house, broken down by band with cap and collector. This is far more specific than a generic 'calculate royalty' and distinguishes it from artspotter siblings like get_fair_art_price or price_commission, though those siblings are never named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the UK-resale framing but there is no explicit statement of when to use this versus price_commission, get_fair_art_price, or compare_where_to_sell. An agent must infer the trigger condition from domain knowledge rather than being told.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
artspotter_check_art_listingArt Spotter - Eye of the Beholder: Check an art listing before buyingARead-onlyIdempotentInspect
Art Spotter - Eye of the Beholder. Check an art listing before buying. Whether a link is an independent artist in the index or a marketplace with buyer protection, reverse image search links for the picture, and the checks that catch stolen images, AI work sold as hand-made and payment scams.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | The listing or shop address. | |
| image | No | The address of the artwork's picture. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, open-world, non-destructive behavior. The description adds behavioral value by disclosing what the checks cover, including reverse image search links and detection of stolen images, AI-disguised work, and payment scams. It still omits return format and any auth or rate-limit context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first two sentences. The third sentence is a long list but remains informative rather than repetitive. The only minor waste is the branded subtitle, which largely duplicates the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still communicates the kinds of results an agent would expect (reverse image search links and scam/stolen-image/AI checks). Annotations cover the safety profile, and parameters are fully documented, making the definition reasonably complete, though it could be more explicit about the output shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented. The description mentions 'link' and 'picture' in prose, aligning with the url and image fields, but adds no syntax, format, or optionality detail beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Check an art listing,' with clear scope ('before buying') and an enumeration of what gets checked (artist index vs marketplace, reverse image search, stolen images, AI work, payment scams). It distinguishes this tool from other Art Spotter tools implicitly through its listing-verification focus, though it does not explicitly name sibling alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear usage context: use this before buying an artwork. However, it does not include exclusions, prerequisites, or explicit alternatives (e.g., verify_artwork_passport or search_art), so the routing guidance is not fully developed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
artspotter_check_artworks_feedArt Spotter - Eye of the Beholder: Check an artist's artworks.jsonBRead-onlyIdempotentInspect
Art Spotter - Eye of the Beholder. Check an artist's artworks.json. Reads an artist's artworks.json (the open format at artspotter.pages.dev/artworks that lets assistants find work sold direct) and lists anything to fix.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The https address of the artworks.json file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so safety and idempotency are covered without the description. The description adds some value by stating it fetches an external file and returns a list of things to fix, but omits any auth requirements, failure modes (unreachable/invalid URL), or rate-limit behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences that are efficiently front-loaded on the core action and return behavior. The leading 'Art Spotter - Eye of the Beholder' branding duplicates the title and the app name, wasting a little space, but the rest earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only fetch tool with no output schema, the description covers what is read and that a fix-list is returned, which is adequate. It is short on the specifics an agent might want — what kind of issues get flagged, what happens on a malformed or unreachable file — so it is complete only to the minimum viable level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single url parameter is already documented as 'The https address of the artworks.json file'. The description reinforces this by naming the canonical format location (artspotter.pages.dev/artworks), which is a marginal but real addition. Baseline 3 applies since the schema carries the semantic load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource ('Check an artist's artworks.json') and elaborates that it reads the file and 'lists anything to fix', so the validation/lint purpose is unambiguous. It does not, however, distinguish itself from the sibling artspotter_check_art_listing or artspotter_verify_artwork_passport, so an agent gets no help choosing among the close-looking check/verify tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no prerequisites (e.g. when an artworks.json exists vs. a passport or listing), and no mention of the alternatives it competes with. Usage is only implied by the nature of the tool, which is the bare minimum.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
artspotter_compare_where_to_sellArt Spotter - Eye of the Beholder: What an artist keeps on each selling platformBRead-onlyIdempotentInspect
Art Spotter - Eye of the Beholder. What an artist keeps on each selling platform. For a sale price, what the artist keeps after fees on Etsy, eBay, Saatchi Art, Artfinder, Singulart, their own Shopify shop and direct card payments, sorted by money kept, with print-on-demand options for prints. US and UK fee tables.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Kind: original (the default) or print. | |
| price | Yes | The price the buyer pays. | |
| currency | No | USD or GBP. | |
| shipping | No | Shipping charged to the buyer, if any. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and openWorld behavior, so the safety profile is covered. The description adds that results are ranked by money kept and that fee tables are region-limited (US/UK), but it says nothing about fee-table freshness, currency-to-table binding, or rate limits. Useful but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two of the five sentences are brand/title restatement ('Art Spotter - Eye of the Beholder. What an artist keeps on each selling platform'), which delays the substantive scoping information. The remaining sentences carry real content, but the front-loading is wasted on framing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the work of describing the return implicitly: per-platform net-kept figures sorted by money kept. Combined with the safety annotations and full schema coverage, an agent has enough to call this correctly; only the exact response shape is not spelled out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters. The description implies that kind=print activates print-on-demand handling and that currency selects the applicable fee table, which is marginal added meaning over the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific computation (net proceeds after fees per selling platform) and its scope (price -> money kept, sorted, US/UK tables, POD option for prints). This clearly separates it from siblings like artspotter_get_fair_art_price or artspotter_calculate_resale_royalty. It stops short of explicitly naming those siblings to differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the phrasing 'For a sale price...', which tells the agent this is a per-price comparison query, but there is no explicit when-to-use vs when-to-use-an-alternative guidance. No prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
artspotter_get_artist_fundingArt Spotter - Eye of the Beholder: Grants, buyer finance, royalties and copyright for artistsBRead-onlyIdempotentInspect
Art Spotter - Eye of the Beholder. Grants, buyer finance, royalties and copyright for artists. For the UK: arts council grants, Own Art 0% buyer finance and the Artist's Resale Right. For the US: grants and the $85 group copyright registration for 2 to 20 artworks.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | GB or US. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is fully covered externally. The description adds what content categories are returned (UK arts council grants, Own Art 0% finance, ARR; US grants and group copyright), which is useful but offer no auth, rate-limit, or output-format context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded and reasonably short, but the opening brand line and the title-restating sentence are redundant padding. The two country-specific sentences carry the real information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single optional-parameter, read-only lookup with no output schema, the description conveys the topic, country coverage, and concrete examples. Annotations cover safety, so the remaining gap (return format) is minor and not required to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the country field documented as 'GB or US.', so a 3 would be the baseline. The description goes further by mapping each value to what it returns (UK institutions versus the US $85 group registration for 2-20 artworks), which genuinely helps the agent reason about the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific resource (grants, buyer finance, royalties, copyright for artists) and scopes it to UK and US schemes, so an agent understands this retrieves funding/copyright information. The first two sentences largely restate the title verbatim, but the country-specific content adds distinguishing detail versus siblings like artspotter_calculate_resale_royalty.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use statement, no exclusions, and no sibling alternative named, despite calculate_resale_royalty covering an adjacent topic. The country breakdown implies the parameter choice but not when this tool should be selected over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
artspotter_get_fair_art_priceArt Spotter - Eye of the Beholder: Fair price for a new artwork by size and mediumARead-onlyIdempotentInspect
Art Spotter - Eye of the Beholder. Fair price for a new artwork by size and medium. What original work or prints of about this size and kind sell for in independent artists' own shops: the typical price, the middle half of prices and the price per square inch, from comparable works for sale.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Kind of work. Defaults to painting. | |
| unit | No | Unit: in or cm. | |
| width | Yes | Width, in unit. | |
| height | Yes | Height, in unit. | |
| currency | No | Currency for the answer, for example USD or GBP. | |
| original | No | Set to true for originals (the default), false for prints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and non-destructive, so the safety profile is covered. The description adds real behavioral context about the result: it returns typical price, the middle half of prices, and price per square inch, drawn from independent artists' shops and comparable works - which is consistent with openWorldHint=true and tells the agent what kind of estimate it gets.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences that are front-loaded with the purpose and then the output detail; the second sentence is list-shaped but every clause (typical price, middle half, price per square inch, source) earns its place. No redundant restatement of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of describing the return values and does so well (typical price, interquartile range, per-square-inch). With 100% parameter coverage and full annotation coverage, nothing critical is missing for a read-only lookup tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters (including the kind and unit enums and the original/print flag) are already documented in the schema. The description echoes 'size and medium' and 'original work or prints' but adds no format or default detail beyond what the schema provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource (fair price for a new artwork) and the two dimensions it keys on (size and medium), and it explains what is being measured against (comparable works in independent artists' own shops). This clearly separates it from sibling pricing tools like price_commission or calculate_resale_royalty, though it does not name those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'fair price for a new artwork by size and medium' - an agent can infer this is for pricing a not-yet-sold work. However, there is no explicit when-to-use/when-not-to-use statement and no routing to the related siblings (price_commission, compare_where_to_sell, calculate_resale_royalty).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
artspotter_list_open_callsArt Spotter - Eye of the Beholder: Open calls, prizes and residencies for artistsBRead-onlyIdempotentInspect
Art Spotter - Eye of the Beholder. Open calls, prizes and residencies for artists. Recurring open exhibitions, prizes, residencies and listing sites in the UK, US and Canada, with entry fees, usual closing month, media and official links.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Kind: open call, prize, residency or listing hub. | |
| media | No | For example painting, watercolour, print or photography. | |
| country | No | UK, US or CA. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive behavior, so the safety profile is covered. The description adds useful dataset scope: geography (UK/US/CA), recurring nature, and fields such as entry fees and usual closing month. It does not say what an unfiltered call returns or how large the result set is.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads the domain, but the opening brand line 'Art Spotter - Eye of the Beholder' carries no operational meaning. The second sentence is a comma-spliced fragment listing data attributes rather than a structured statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with no output schema, no required params and fully documented schema fields, the description covers the domain adequately. It omits what happens with no filters, whether results are paginated, and whether closing dates are current or typical, which an agent calling it would benefit from knowing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so kind, media and country are already documented in the schema. The description corroborates country (UK, US, CA) and media examples but adds no filtering syntax or default behavior beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource: recurring open calls, prizes, residencies and listing sites for artists in the UK, US and Canada. It is easy to distinguish from siblings like artspotter_search_art or artspotter_price_commission. It never uses an explicit verb such as 'list', relying on the tool name for that.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus alternatives, nor any prerequisites or exclusions. The filterable dimensions (kind, media, country) are only implied by the data description. An agent must infer the use case 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.
artspotter_make_artwork_passportArt Spotter - Eye of the Beholder: A free artwork passport for an artist's workARead-onlyIdempotentInspect
Art Spotter - Eye of the Beholder. A free artwork passport for an artist's work. Makes a certificate for a work (title, artist, year, medium, size, edition) with a fingerprint of its picture, as printable text and schema.org data the artist can publish, so anyone can later check the picture is unchanged.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | For example 60 x 90 cm. | |
| year | No | Year made. | |
| image | Yes | The https address of the work's picture. | |
| title | Yes | Title of the work. | |
| artist | Yes | Artist's name. | |
| medium | No | For example oil on canvas. | |
| edition | No | For example 3/25, for prints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: what is generated (a certificate with an image fingerprint), the output forms (printable text plus schema.org data), and the downstream purpose (tamper detection). It does not mention auth or rate limits, but with annotations carrying that load a 4 is fair.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Essentially one dense sentence that leads with the artifact and its purpose, with no filler sentences. It is slightly redundant with the title ('Art Spotter - Eye of the Beholder. A free artwork passport for an artist's work'), which repeats the title and annotation text verbatim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully compensates by naming both output forms (printable text and schema.org data) and the fingerprint mechanism. For a 7-parameter generation tool the picture is largely complete; only prerequisites and the exact certificate contents beyond the field list are left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter (including image, required) is documented in the schema itself. The description enumerates six of the seven fields, which mirrors rather than extends the schema, and it never clarifies the image URL requirement or edition/size formats. Baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Makes a certificate for a work' with an explicit field list (title, artist, year, medium, size, edition) and the artifact produced (a fingerprint plus printable text and schema.org data). The closing clause about others later checking the picture is unchanged implicitly contrasts it with the sibling verify_artwork_passport, so an agent can separate create from verify.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the framing ('an artist can publish'), and the mention that anyone can 'later check the picture is unchanged' hints at the verify sibling, but no explicit when-to-use, when-not-to-use, or named alternative is given. Adequate context, no routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
artspotter_price_commissionArt Spotter - Eye of the Beholder: Price and terms for commissioning a pieceARead-onlyIdempotentInspect
Art Spotter - Eye of the Beholder. Price and terms for commissioning a piece. A price guide for a commissioned piece by size and the artist's level, what similar finished originals sell for, the usual deposit, revision rounds, cancellation fees, copyright and a contract checklist for buyer and artist.
| Name | Required | Description | Default |
|---|---|---|---|
| unit | No | Unit: in or cm. | |
| level | No | Level: emerging (the default), mid or established. | |
| width | Yes | Width, in unit. | |
| height | Yes | Height, in unit. | |
| medium | No | Kind of work, for example painting or drawing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds genuine value by enumerating the response contents (deposit, revision rounds, cancellation fees, copyright, contract checklist), which tells the agent what the guide actually covers. No auth, rate-limit or freshness caveats are given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and sizing/level inputs are front-loaded in the first two sentences. The final sentence is an undifferentiated laundry list of covered topics, which is informative but slightly padded rather than tightly written.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and all five parameters documented, the description usefully enumerates the expected return content so the agent knows what answers are possible. It is nearly complete for a read-only lookup tool, missing only selection guidance against the neighboring price tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with clear enum and unit docs, so the schema carries the burden. The description only loosely echoes two parameters ('by size and the artist's level') without adding format or interaction detail beyond what the schema already states, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('a price guide for a commissioned piece by size and the artist's level') and the exact scope of what it returns. It is clearly distinct in topic from siblings like artspotter_get_fair_art_price or artspotter_calculate_resale_royalty, though it never names an alternative to differentiate explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the content ('commissioning a piece'), so an agent can infer this is for pre-commission pricing queries. However, there is no explicit when-to-use trigger or when-not guidance, and no routing away from the similar-sounding get_fair_art_price sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
artspotter_search_artArt Spotter - Eye of the Beholder: Find art for sale from independent artistsARead-onlyIdempotentInspect
Art Spotter - Eye of the Beholder. Find art for sale from independent artists. Searches works in independent artists' own shops and eBay art by words (subject, style, place, artist), kind, original or print, price, size and colour. Results show title, artist, size, price, where it ships from, an image and a link to buy straight from the artist.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | What to look for, for example abstract blue, linocut bird, Scottish landscape or a dog portrait. | |
| kind | No | Kind: painting, print, printmaking, photography, drawing, watercolour, ceramics, sculpture, textile, illustration or other. | |
| unit | No | Unit: in or cm. Defaults to in. | |
| limit | No | How many results, 1 to 20. | |
| colour | No | A main colour, for example blue or ochre. | |
| country | No | Buyer's two-letter country code, for eBay and currency, for example US or GB. | |
| currency | No | Currency for prices, for example USD, GBP or EUR. | |
| max_size | No | Largest longest side, in unit. | |
| min_size | No | Smallest longest side, in unit. | |
| original | No | Set to true for one-off originals only, false for prints only. | |
| max_price | No | Highest price, in the currency given (or the buyer's local currency). | |
| min_price | No | Lowest price. | |
| ships_from | No | Only artists based in this two-letter country. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, non-destructive, so safety is covered. The description adds genuinely non-redundant behavior: that it reaches both independent-artist shops and eBay, and that results carry title, artist, size, price, shipping origin, image and a direct buy link. That return-content disclosure matters since there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with what it does and the scope of the search, then the result contents. The branding repetition ('Art Spotter - Eye of the Beholder. Find art for sale from independent artists.') slightly duplicates the title, but there is no filler beyond that.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter, all-optional search tool with no output schema, the description adequately covers sources, filterable facets, and returned fields including buy links. It does not explain how multiple filters combine or what happens with zero results, and limit/default behavior is left to the schema, so a small gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every one of the 13 parameters is already documented in the schema (including enum values for kind and unit). The description restates the facet list (words, kind, original or print, price, size, colour) without adding syntax, format, defaults, or interaction rules beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (searches/find) plus resource (art for sale from independent artists) and even names the two corpora searched: independent artists' own shops and eBay. An agent can tell this apart from artspotter_check_art_listing or artspotter_get_fair_art_price, which are verification/pricing tools rather than discovery. Loses a point only because it doesn't explicitly contrast itself with a close sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its use case (finding artwork to buy) and enumerates the facets you may search on, but never says when to use it versus alternatives or when not to. There are no stated prerequisites, exclusions, or routing hints to any of the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
artspotter_size_art_for_wallArt Spotter - Eye of the Beholder: What size art fits a wall and how high to hang itBRead-onlyIdempotentInspect
Art Spotter - Eye of the Beholder. What size art fits a wall and how high to hang it. Art width for the furniture or wall, the hanging height, the gap above furniture and gallery wall spacing, with a ready search for works in that size range.
| Name | Required | Description | Default |
|---|---|---|---|
| unit | No | Unit: in or cm. | |
| wall_width | No | Width of the wall, if there's no furniture below. | |
| furniture_width | No | Width of the sofa, bed or sideboard below the art. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no output schema, the description carries the return-value burden and does disclose the derived outputs (art width, hanging height, gap above furniture, gallery wall spacing) plus a side effect of surfacing a search for works in that size range. Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so this adds genuine context beyond structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and there is no filler, but the opening two sentences largely restate the tool title and name, and the final sentence is a run-on list. It is adequate rather than tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It covers what the tool computes and hints at returned search results, which is reasonable given no output schema. However it is silent on whether wall_width and furniture_width are mutually exclusive or combinable, and on how the 'ready search' behaves, leaving a gap for a zero-required-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so unit, wall_width and furniture_width are already fully documented with their conditional meaning. The description only echoes 'art width for the furniture or wall' without adding format, ranges, or guidance on supplying one vs. both parameters. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific outcome (what size art fits a wall / how high to hang it) and enumerates the computed values (width, hanging height, gap above furniture, gallery spacing), which distinguishes it from siblings like artspotter_search_art or artspotter_get_fair_art_price. It is clear, though it never explicitly names which sibling it is not.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites, and no routing to alternatives. The only implicit usage signal is the schema's distinction between wall_width and furniture_width, which lives in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
artspotter_verify_artwork_passportArt Spotter - Eye of the Beholder: Check a picture matches an artwork passportARead-onlyIdempotentInspect
Art Spotter - Eye of the Beholder. Check a picture matches an artwork passport. Recomputes the picture's fingerprint and says whether it matches the one in the passport.
| Name | Required | Description | Default |
|---|---|---|---|
| image | Yes | The https address of the picture. | |
| sha256 | Yes | The fingerprint from the passport. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, covering the safety profile. The description adds one genuine behavioral detail: it recomputes the fingerprint rather than trusting a stored value. It does not discuss auth, rate limits, or failure modes (e.g. what happens when the image is unreachable).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, no filler, with the purpose stated first and the mechanism second. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, no-output-schema read tool, the description covers the intent and the result semantics ('says whether it matches'), which substitutes for a missing output schema. It stops short of describing error or mismatch-handling behavior, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are documented in the schema itself. The description only loosely re-references 'the picture' and 'the fingerprint,' adding no format or syntax detail beyond what the schema provides. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (check) and resource (a picture against an artwork passport), and clarifies the mechanism (recomputes the fingerprint and compares it to the passport value). This clearly distinguishes it from the sibling artspotter_make_artwork_passport.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case (verifying a picture against an existing passport) but never states when to use this versus alternatives or what preconditions are needed (e.g. a passport must already exist from make_artwork_passport). Usage is inferable but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bible_get_cardBible Swipe: Today's reading one line at a time, for voiceCRead-onlyIdempotentInspect
Bible Swipe. Today's reading one line at a time, for voice.. Bible: daily readings, plans, search and passage lookup (World English Bible)
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | Which card, starting at 1. Defaults to 1. | |
| date | No | Optional day as YYYY-MM-DD. Defaults to today (UTC). | |
| reading | No | A reading or plan id from list_readings. Defaults to today's reading. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds that output is delivered 'one line at a time' (implying the n parameter pages through lines) and is voice-oriented, which is modest but 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, but the first is an exact duplicate of the title and the second is app-wide boilerplate covering readings, plans, search and passage lookup — content that has nothing to do with this specific tool. Useful signal ('one line at a time') is buried inside the repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must explain what is returned, and it never defines a 'card' or the per-line output shape an agent would receive when paging through n. For a tool whose whole purpose is line-by-line voice output, this leaves a meaningful gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so n, date, and reading are already fully documented in the schema; the baseline is 3. The description adds nothing about what a 'card' number means or how date/reading interact with daily defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description restates the title verbatim and adds only an app-level tagline ('Bible: daily readings, plans, search and passage lookup'). 'Today's reading one line at a time' hints at the resource and granularity, but the verb is never stated and the concept of a 'card' is left undefined. It does not distinguish this tool from bible_get_reading, bible_get_today, or bible_get_passage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus its many siblings (bible_get_reading, bible_get_today, bible_get_passage, bible_list_readings). The phrase 'for voice' faintly implies a use case but sets no condition or exclusion an agent could act on.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bible_get_passageBible Swipe: Any verse, range, chapter or cross-chapter range (Genesis 1:1-2:3) of the...BRead-onlyIdempotentInspect
Bible Swipe. Any verse, range, chapter or cross-chapter range (Genesis 1:1-2:3) of the World English Bible.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | For example: John 3:16. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, covering the safety profile. The description only adds that the underlying translation is the World English Bible; it says nothing about return format, handling of invalid references, or output size. With annotations carrying the behavioral burden, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the passage-scope information front-loaded. The leading brand fragment 'Bible Swipe.' carries no operational meaning and is slightly wasteful, but overall the description is tight and adequately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only retrieval tool with no output schema, the description is largely complete: it identifies the source text and the accepted reference formats. It could note error behavior for malformed references or what a returned passage looks like, but the essential information an agent needs to invoke it correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema gives a simple example ('John 3:16'), so the baseline is 3. The description goes further by enumerating the supported reference forms (verse, range, chapter, cross-chapter) and giving the explicit cross-chapter syntax 'Genesis 1:1-2:3', which materially clarifies how to format the single `ref` parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource (a passage of the World English Bible) and the granularities supported: any verse, range, chapter, or cross-chapter range. The verb is implicit ('get') but the intent is unambiguous. It does not differentiate from siblings like bible_get_reading or bible_search_readings, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no exclusion criteria, and no mention of alternatives such as bible_get_reading, bible_search_readings, or bible_get_card. The agent must infer usage entirely from the name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bible_get_readingBible Swipe: One reading or plan, line by lineCRead-onlyIdempotentInspect
Bible Swipe. One reading or plan, line by line. Bible: daily readings, plans, search and passage lookup (World English Bible)
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | A reading or plan id from list_readings, or a plan name such as "japji" or "The Gita in 18 Days". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that — no indication of what 'line by line' means in the response, whether the plan variant paginates, or how much content is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short and front-loaded, but the space is spent restating the title and an app-level tagline rather than conveying tool-specific information. Structurally clean yet redundant, so no sentence earns much.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a lookup tool with one parameter and no output schema, the description should clarify what is returned and how it differs from sibling retrieval tools (card, passage, today). It does neither, leaving the agent to guess which Bible retrieval tool fits a request.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is already well documented in the schema (accepts a reading id from list_readings or a plan name like "japji"). The description adds no format or validity detail beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description repeats the tool title verbatim ("One reading or plan, line by line") and then lists app-level features ("daily readings, plans, search and passage lookup") rather than stating what this specific tool does. It never names a verb+resource such as 'returns the text of a reading' and gives no basis for distinguishing it from bible_get_passage, bible_get_card, bible_get_today, or bible_list_readings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no condition distinguishing this from bible_get_passage/bible_get_today/bible_list_readings, and no mention of prerequisites. The only routing hint ('an id from list_readings') lives in the schema parameter description, not the tool description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bible_get_todayBible Swipe: Today's reading, line by line (same as the app shows today)BRead-onlyIdempotentInspect
Bible Swipe. Today's reading, line by line (same as the app shows today). Bible: daily readings, plans, search and passage lookup (World English Bible)
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Optional day as YYYY-MM-DD. Defaults to today (UTC). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds that the output is 'line by line' and mirrors the app's current display, which is mild extra context, but says nothing about return format, ordering, or what happens on an invalid date.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short and front-loaded, but the second sentence largely restates the product title and is filler for a zero-required-parameter read tool; it doesn't earn its place relative to the first sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read with no output schema, the definition covers the essentials: it returns today's reading split into lines. It is adequate but leaves the shape of the response (verse-level fields, ordering) unspecified, which an agent would need to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single optional parameter and schema description coverage at 100%, the schema already documents the date format and the UTC-today default. The description correctly adds nothing beyond that, so the baseline of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with scope: today's reading returned line by line. 'Same as the app shows today' pins the content source. It stops short of distinguishing itself from siblings like bible_get_reading or bible_list_readings, and the trailing 'Bible: daily readings, plans, search and passage lookup' sentence is a category blurb rather than a purpose statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to choose this over bible_get_reading, bible_list_readings, or bible_get_passage, and no exclusions or prerequisites. The only contextual hint is that output matches what the app shows today, which is not a usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bible_list_readingsBible Swipe: All curated daily readings and plansCRead-onlyIdempotentInspect
Bible Swipe. All curated daily readings and plans. Bible: daily readings, plans, search and passage lookup (World English Bible)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered structurally. The description adds nothing behavioral beyond that — no note on result size, ordering, or what 'curated' means, and the World English Bible mention is generic app context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short, but the first two fragments are redundant with the title, and the third sentence is unrelated app-level boilerplate that does not help invoke this specific tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, no output schema, and annotations covering safety, the definition is nearly complete, but it never says what a caller receives (plan identifiers, reading lists, etc.), which is the one thing an agent would still need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline of 4 applies; there is no parameter meaning for the description to add or omit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource ('all curated daily readings and plans') but uses no verb, so it reads as a restatement of the title rather than a statement of what the tool does (list? fetch?). It does not distinguish this tool from siblings like bible_search_readings, bible_get_reading, or bible_get_today, which an agent must choose between.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus bible_search_readings, bible_get_reading, or bible_get_today. The trailing 'Bible: daily readings, plans, search and passage lookup' clause describes the whole app, not the selection condition for this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bible_search_readingsBible Swipe: Search the curated readings, best match firstCRead-onlyIdempotentInspect
Bible Swipe. Search the curated readings, best match first. Bible: daily readings, plans, search and passage lookup (World English Bible)
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Words to search for, for example forgiveness or shepherd. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds two useful behavioral facts beyond that — results are ranked by relevance, and the corpus is the World English Bible translation. It still says nothing about result count, pagination, or empty-result behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is short, but two of its three fragments restate the title ("Bible Swipe" and "Search the curated readings, best match first" verbatim), so a third of the content is duplicated metadata rather than new information. It is front-loaded but not fully earned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only search with full annotation coverage and no output schema, the definition is minimally sufficient — it states the corpus and ranking. It leaves gaps on what a "reading" is and how results are shaped, but the annotations shoulder most of the load.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter ("q") with 100% schema description coverage, including worked examples ("forgiveness or shepherd"). The description contributes no additional query-syntax guidance, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb+resource pair ("Search the curated readings") is identifiable, and "best match first" signals ranked results. However, it never distinguishes this from bible_get_passage, bible_list_readings, or the many *_search_readings siblings, so an agent cannot tell which to pick. Purpose is legible but not differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all — no statement of when to search versus call bible_get_passage or bible_list_readings. "Best match first" hints at ranking but says nothing about when this tool is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bookslikethis_find_similar_booksBooks Like This: Books like one the user enjoyed, or for a genreARead-onlyIdempotentInspect
Books Like This. Books like one the user enjoyed, or for a genre. For requests like "books like The Martian" or "a good cosy mystery". Suggestions are English-language books for the same readers (picture book, children, young adult or adult), one per author and one per series. Well-read books of the same kind come first (picked_from: shelf, and because names the kind, for example "celebrated dystopian novels"), then books sharing specific subjects on Open Library (picked_from: subjects, and because lists the shared subjects). Novels never get self-help, textbooks, anthologies, study guides, category romance lines or explicit books as suggestions, and popular books are preferred over obscure ones. Other books by the same author are left out unless same_author=true. Give title or subject; common other titles work (1984, The Sorcerer's Stone)
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | A book the user liked, 2 to 120 characters. | |
| author | No | The author's name, to pin down the right book or list their books. | |
| country | No | Two-letter country code for the shop links, for example US or GB. | |
| subject | No | A genre or theme, for example space opera, cozy mystery, heist. | |
| same_author | No | True to include more books by the same author. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, openWorld, idempotent, non-destructive), yet the description adds substantial behavioral detail beyond them: result ordering (well-read 'shelf' picks first, then shared 'subjects'), one-per-author and one-per-series constraints, English-language and age-band scoping, and an explicit exclusion list (no self-help, textbooks, anthologies, study guides, category romance, explicit books). It also explains the picked_from/because fields, which the annotations do not.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The intent is front-loaded (title repeats the name, then the two use cases) and every following sentence carries substantive ranking or filtering information. It is somewhat dense and the 'picked_from' jargon is unexplained, but there is little filler to cut.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and largely does so, explaining suggestion contents, ordering, and the picked_from/because fields. Minor gaps remain, such as what country does to shop links and any result-count or pagination behavior, so it is not fully exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: 'common other titles work (1984, The Sorcerer's Stone)' clarifies title-matching tolerance, and it explains the interaction between title/author/same_author that the schema only hints at. It does not add much beyond the schema for country, keeping it just above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact job: return books similar to one the user enjoyed or matching a genre, with concrete request phrasings ('books like The Martian', 'a good cosy mystery'). It implicitly distinguishes itself from the sibling get_author_books by stating that other books by the same author are excluded unless same_author=true. An agent can route between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear trigger examples and states when same-author results appear (same_author=true) and what input to supply ('Give title or subject; common other titles work'). It stops short of explicitly naming the sibling tools (get_author_books, get_book) as alternatives, so the routing is inferred rather than spelled out. Clear context but no explicit exclusions naming a competitor tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bookslikethis_get_author_booksBooks Like This: An author's books, newest firstARead-onlyIdempotentInspect
Books Like This. An author's books, newest first. For requests like "what has Andy Weir written?" or "Sally Rooney's books"
| Name | Required | Description | Default |
|---|---|---|---|
| author | Yes | The author's name, to pin down the right book or list their books. | |
| country | No | For buy links: US, GB, IE, CA, AU. Default from the request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered structurally. The description adds one genuine behavioral fact beyond that – results are ordered newest first – but says nothing about result limits, pagination, or whether a partial author name is tolerated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short fragments, front-loaded with the operation and its ordering rule. The opening 'Books Like This' merely restates the tool title and is dead weight, but nothing else is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with full schema coverage and complete annotations, the description is close to sufficient, and the absence of an output schema means return values need not be explained. It still omits any hint of result size, buy-link behavior, or fallback when an author name is ambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including the meaning of 'author' and the country enum values for buy links, so the schema carries the parameter burden. The description adds no syntax, format, or disambiguation guidance beyond what the schema already states, which is the baseline for full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource combination (retrieving an author's books) and adds a scope detail ('newest first'). It does not, however, explicitly distinguish itself from siblings like bookslikethis_get_book (single book) or bookslikethis_find_similar_books, so an agent must infer the boundary from the resource alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Concrete trigger phrasings ('what has Andy Weir written?', 'Sally Rooney's books') make the intended entry point obvious and map cleanly onto author-name lookups. There is no explicit exclusion or guidance on when to prefer bookslikethis_get_book or find_similar_books instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bookslikethis_get_bookBooks Like This: A book's details and any film or series made from itARead-onlyIdempotentInspect
Books Like This. A book's details and any film or series made from it. For requests like "tell me about Project Hail Mary", "is The Name of the Wind being made into a film?", "how long is Dune?". Misspellings are fine. If screen_checked is false, the film and TV check could not run just now, so the film and TV status is unknown.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | The book's title, 2 to 120 characters. Add author for very short or common titles. | |
| author | No | The author's name, to pin down the right book or list their books. | |
| country | No | For buy links: US, GB, IE, CA, AU. Default from the request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld/non-destructive, so the safety profile is covered. The description adds genuinely useful behavior beyond that: "Misspellings are fine" (input tolerance) and the screen_checked=false caveat that film/TV status may be unavailable, which the agent cannot infer from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening two sentences ("Books Like This. A book's details and any film or series made from it.") essentially duplicate the name and title fields, which is wasted space. The example requests and the screen_checked caveat are well-placed and front-load value, but the redundant lead-in dilutes conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup with one required parameter and no output schema, the description is nearly complete: it covers purpose, adaptation lookup, misspelling tolerance, and the degraded film/TV case. It stops short of describing what 'details' the response contains, which an agent might want with no output schema present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so title, author, and country are all fully documented in the schema (including the country enum values and the 'add author for short/common titles' hint). The description adds no parameter meaning beyond what the schema already provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: retrieves a book's details plus any film or series adaptation, which is a clear, non-tautological purpose. It does not, however, name or distinguish itself from the sibling tools bookslikethis_find_similar_books and bookslikethis_get_author_books, so an agent gets no explicit routing signal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The example requests ("tell me about Project Hail Mary", "is The Name of the Wind being made into a film?", "how long is Dune?") clearly map user intents onto this tool and give strong contextual guidance. There is no explicit statement of when NOT to use it or which sibling to prefer for other book queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancelmysub_get_cancel_reminderCancel My Sub: Calendar reminder for the last safe day to cancelARead-onlyIdempotentInspect
Cancel My Sub. Calendar reminder for the last safe day to cancel. Returns a calendar file (.ics) with an all-day event on the cancel-by day, the steps and the official link, with alerts at 9am the day before and 9am on the day. Nothing is stored. get_cancel_steps gives this link as add_to_calendar whenever renews_on is given and the day hasn't passed.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | Two-letter country code. GB (or UK) gives UK pages, UK notice rules and uk_rules; defaults to the caller's country, else US. | |
| service | Yes | The subscription, as for get_cancel_steps. | |
| renews_on | Yes | Next renewal or billing date, YYYY-MM-DD. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, and the description adds real value beyond them: the return format (.ics), the exact event contents and alert timing, and 'Nothing is stored' (no persistence). It doesn't cover rate limits or formatting quirks, but adds substantive behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose and then details the return artifact without padding. The final sentence about get_cancel_steps is slightly tangential to this tool's own invocation but earns its place as routing context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining the return value and does so thoroughly (event contents, alerts, no storage). An agent has enough to invoke correctly; only explicit exclusions for when not to call it are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents country, service, and renews_on; baseline is 3. The description references renews_on's role indirectly but adds no format or semantic detail beyond what the schema supplies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get/returns) and resource (calendar reminder for the last safe day to cancel) and describes the concrete artifact returned: an .ics all-day event with steps, official link, and 9am alerts. It is distinguishable from the sibling get_cancel_steps, which yields a link, not a calendar file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives usable context by noting get_cancel_steps surfaces this link as add_to_calendar whenever renews_on is provided and the day hasn't passed, effectively describing the condition under which this tool applies. It stops short of an explicit when-not-to-use statement, so no code-5 routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancelmysub_get_cancel_stepsCancel My Sub: How to cancel one subscriptionARead-onlyIdempotentInspect
Cancel My Sub. How to cancel one subscription. For requests like "how do I cancel Netflix?", "cancel my Planet Fitness membership", "how do I leave Sky?", "cancel my PureGym", "what's the cheapest way to keep Spotify?", "stop my Audible". Returns the official page, steps, catches and a cheaper option. UK answers add region ("UK") and uk_rules; a US-only service asked about from the UK has region "US only".
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | Two-letter country code. GB (or UK) gives UK pages, UK notice rules and uk_rules; defaults to the caller's country, else US. | |
| service | Yes | The subscription's name in everyday words, up to 80 characters. | |
| renews_on | No | Next renewal or billing date (or next delivery for meal kits), YYYY-MM-DD. Adds cancel_by: the last safe day to cancel using the service's own notice rule, or a day early where it has none, and add_to_calendar: a link to a calendar reminder for that day. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds real value beyond that: it enumerates the return contents (official page, steps, catches, cheaper option) and discloses the UK-region special-casing and the 'US only' edge case.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose, then examples, then return shape and regional handling. It is slightly long due to six sample queries, but each sentence is informative and nothing is padded with boilerplate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, no-output-schema tool the description is sufficiently complete: it explains what is returned, how country affects the answer, and the required service name. It does not spell out pagination or error behavior, but those are not material for this lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each of the three params is well documented in the schema (including the renews_on-derived cancel_by and add_to_calendar). The description only marginally adds meaning, mainly the 'US only' cross-border nuance, so the baseline 3 for high-coverage schemas is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: telling the user how to cancel one subscription, and the example queries (cancel Netflix, leave Sky, stop Audible) pin down the domain sharply. The word 'one subscription' subtly distinguishes it from cancelmysub_list_services, but no sibling is named, so the 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The six natural-language example requests make the intended trigger conditions very clear. However, there is no explicit when-not guidance and no mention of the alternative siblings (get_cancel_reminder, identify_charge, list_services), so an agent must infer the boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancelmysub_identify_chargeCancel My Sub: Which subscription is this charge?ARead-onlyIdempotentInspect
Cancel My Sub. Which subscription is this charge? For requests like "what is this APPLE.COM/BILL charge?", "I see AMZN Digital on my statement", "what is DD *DOORDASH DASHPASS?". Returns the likely service, or for Apple, Amazon, Google and Microsoft the few it could be and where to check, or match: purchase when it looks like a one-off order (marketplace, a ride, a restaurant through a delivery app). Then call get_cancel_steps.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The charge as it appears on the statement, up to 120 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld and non-destructive, so safety is covered. The description adds genuine behavioral value by disclosing output shape: a likely service, a short candidate list plus where-to-check for Apple/Amazon/Google/Microsoft, or a 'match: purchase' verdict for one-off orders.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the key task, but the opening two sentences ("Cancel My Sub. Which subscription is this charge?") merely restate the title, and the clause describing the Apple/Amazon/Google/Microsoft candidate case is grammatically tangled. Some of the length is redundant rather than earned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully covers return behavior and the chaining step, which is adequate for a single-input read tool. The one gap is the no-match case, which is never addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already describes the single 'text' parameter with its 120-character limit. The description goes beyond that by showing the exact form of real statement strings, which materially helps an agent format the input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it identifies which subscription a statement charge belongs to. The concrete examples ("APPLE.COM/BILL", "AMZN Digital", "DD *DOORDASH DASHPASS") let an agent recognize the intended task instantly, and the relationship to sibling get_cancel_steps as a follow-up is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear trigger context via sample user requests and names the downstream step ("Then call get_cancel_steps"). However, it never states when NOT to use it versus cancelmysub_list_services or cancelmysub_get_cancel_reminder, so alternatives are only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancelmysub_list_servicesCancel My Sub: Every subscription Cancel My Sub coversARead-onlyIdempotentInspect
Cancel My Sub. Every subscription Cancel My Sub covers. For requests like "which subscriptions can you help me cancel?" or "what gyms do you know?". Also returns the current status of the FTC click-to-cancel rule and the UK rules (uk_rules)
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | Two-letter country code. GB (or UK) leaves out US-only services; defaults to the caller's country, else US. | |
| category | No | Category: streaming, music, membership, gym, news, meal kit, software, app store, dating, wellness, home security, phone and internet, tv and broadband. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered. The description adds genuine behavioral context beyond that: it discloses that the response also includes the current FTC click-to-cancel rule status and UK rules (uk_rules), which is not derivable from the annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening two fragments ('Cancel My Sub. Every subscription Cancel My Sub covers.') largely duplicate the title, which is wasted space. The example queries and the FTC/UK rule note earn their place, and the useful content is reasonably front-loaded despite the redundant lead.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, parameterless-required listing tool with no output schema, the description is nearly sufficient: it explains what is returned (covered services plus FTC/UK rule status) and gives trigger examples. It slightly lacks clarity on how results are organized by country/category, but the schema covers those inputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and both the country and category parameters are fully documented in the schema (including the GB/UK and default-country behavior). The description adds no additional parameter meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the resource covered (every subscription Cancel My Sub covers) and effectively communicates that this is a listing/lookup tool for supported services. However, it never uses an explicit verb like 'list' and does not distinguish itself from siblings such as cancelmysub_get_cancel_steps or cancelmysub_identify_charge, resting partly on a restatement of the title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Two concrete example user queries ('which subscriptions can you help me cancel?', 'what gyms do you know?') give implied usage context. There is no explicit when-not guidance and no reference to the sibling tools, so an agent must infer that this is the discovery entry point versus the step/reminder tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cheapestprice_check_priceCheapest Price: Lowest current price for a product, with compare linksBRead-onlyIdempotentInspect
Cheapest Price. Lowest current price for a product, with compare links. The lowest current price for a product on eBay (and Best Buy in the US), checked live in the shopper's own country and currency, plus Amazon and local shop links to compare.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | The product, as specific as possible, for example AirPods Pro 2. | |
| used | No | Include used items on eBay. | |
| country | No | Two-letter country for prices and shops. Leave out to use the shopper's location. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, openWorld=true, idempotent=true, destructive=false, so the safety profile is covered. The description adds some value by stating prices are checked live, reflect the shopper's own country and currency, and aggregate specific sources — but says nothing about latency, rate limits, or return shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short and front-loaded, but wastes space: 'Cheapest Price' duplicates the title, and 'lowest current price for a product' is stated twice across the two sentences. The source list is the only accretive content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries some burden for describing what is returned; it names sources but not the response structure (e.g. price format, link fields). For a simple 3-param read tool with full annotations the coverage is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents q, used, and country (including the enum list and the 'leave out to use shopper's location' note). The description marginally reinforces the country/currency behavior but adds no syntax or logic beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: it returns the lowest current price for a product and names the sources (eBay, Best Buy US, Amazon, local shops). Clear and unambiguous, though it does not differentiate from any named alternative tool (siblings are all in unrelated domains, so this omission is minor).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied — an agent looking to check a product's price would infer this tool fits. There is no explicit when-to-use, when-not-to-use, or reference to an alternative (e.g. a price-drop or bill tool), and no prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fairfare_best_time_to_rideFair Fare: Cheapest time of day to take a rideARead-onlyIdempotentInspect
Fair Fare. Cheapest time of day to take a ride. For New York, typical Uber and Lyft prices for a trip of a given length at every hour of the week, from the city's trip records, with the cheapest and most expensive hours today and whether waiting saves money. For other cities, how the taxi meter rates change by time of day.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | Tariff city id, for example nyc, london or chicago. Defaults to nyc. | |
| when | No | When the trip starts, in local time: now (the default), a time like 18:30 or 6pm, or a date and time like 2026-10-09T18:30. | |
| miles | No | Trip length in miles (New York only). Defaults to 3. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe, idempotent, open-world read profile. The description adds genuine context beyond them: the data source (city trip records), that NYC figures are typical Uber/Lyft prices while other cities reflect taxi meter rates, and the hourly granularity plus 'whether waiting saves money'. It does not mention rate limits, caching, or data freshness, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening 'Fair Fare.' is wasted and the second sentence simply repeats the title verbatim, delaying the substantive content. The remaining two sentences are dense and informative, but the front-loading wastes the most prominent position on brand/title repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the heavy lifting by explaining what is returned: typical hourly prices, the cheapest and most expensive hours today, and whether waiting saves money. Together with annotations and fully documented optional params, this is near-complete, though it omits any note on data recency or result format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents city, when, and miles (including the NY-only restriction on miles). The description restates the NYC-only nature of 'miles' but adds no syntax, format, or default detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete purpose ('Cheapest time of day to take a ride') and clarifies the different outputs for New York versus other cities, making the tool's role distinct from fare-estimation siblings. It does not explicitly name or contrast itself with siblings like fairfare_estimate_fare or fairfare_get_taxi_tariff, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent can infer it should call this when seeking the cheapest hour to ride. There is no explicit when-to-use/when-not guidance and no mention of alternative tools (e.g. estimate_fare for a specific fare), leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fairfare_check_driver_licenceFair Fare: Check a New York taxi or ride-app driver's licenceARead-onlyIdempotentInspect
Fair Fare. Check a New York taxi or ride-app driver's licence. Whether a TLC licence number is active on New York City's daily open data for for-hire (Uber, Lyft, car service) and taxi drivers, its expiry date, and, if a name is given, whether it matches (the name on the licence is never returned). Other cities get the official way to check.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City: nyc (live check) or another city id for guidance. Defaults to nyc. | |
| name | No | Optional name the driver gave, to check it matches. | |
| number | No | The TLC licence number shown in the app or on the partition card. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, open-world. The description adds real value beyond them: the data source (NYC daily open data), what fields are returned (active status, expiry), and the non-obvious privacy detail that the licence holder's name is never returned even when matched.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose and the returnable facts in dense but readable sentences. The trailing sentence 'Other cities get the official way to check' is a bit vague but still earns its place as routing guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing returns and does so (active status, expiry, name-match result). A little more on the non-NYC guidance path would fully close the gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so 3 is the baseline, but the description adds semantics beyond the schema by clarifying that the name argument is verified for a match and that the matched name is never echoed back, and by confirming city defaults to nyc for a live check.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (check) and resource (a New York taxi or ride-app driver's licence) with scope qualifiers (TLC number, NYC open data). It is clearly distinguishable from siblings like fairfare_check_fare or fairfare_check_fleet_file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains that the tool does a live NYC check when city=nyc and returns guidance for other cities, plus the conditional behavior when a name is supplied. It doesn't explicitly name a sibling alternative, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fairfare_check_fareFair Fare: Was I overcharged? Check a fare that was paidARead-onlyIdempotentInspect
Fair Fare. Was I overcharged? Check a fare that was paid. Compares what was paid with the official meter tariff, the airport flat fare or New York's typical Uber and Lyft prices for the same trip and hour, gives a verdict (fair, high or overcharged), the next steps for that company or city regulator, and a short message to send asking for a refund.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Where it ended. | |
| city | No | Tariff city id, when giving miles instead of from and to. | |
| from | No | Where the trip started. | |
| kind | No | Kind: taxi, uber, lyft, bolt or minicab. Defaults to taxi. | |
| paid | Yes | What was paid, without the tip, for example 48.50. | |
| when | No | When the trip starts, in local time: now (the default), a time like 18:30 or 6pm, or a date and time like 2026-10-09T18:30. | |
| miles | No | Trip length in miles, instead of from and to. | |
| minutes | No | Trip time in minutes, if known. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so safety is covered. The description adds genuinely useful behavioral context by disclosing the output contents (verdict, next steps, and a refund message). It says nothing about prerequisites such as needing either from/to or miles plus a city, which matters for an 8-param tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first two sentences and the return contents follow efficiently. The opening 'Fair Fare. Was I overcharged?' partially duplicates the title, which is the only minor waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by describing what comes back: a verdict, next steps for the regulator, and a refund message. Combined with 100% schema coverage this is close to complete, missing only an explicit note on required input combinations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the input schema. The description mentions the tariff/airport/Uber comparison but adds no syntax, defaults, or format details beyond what the schema provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('check a fare that was paid') and spells out the comparison basis (official meter tariff, airport flat fare, or typical Uber/Lyft prices). It is clear the agent is analyzing a past trip, not estimating a future one. It does not, however, name or rule out the sibling fairfare_estimate_fare, so differentiation is inferred from the name rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'Was I overcharged?' and 'Check a fare that was paid', which signals the retrospective-dispute scenario. There is no explicit when-not guidance and no reference to alternatives such as estimate_fare for prospective trips, leaving the agent to infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fairfare_check_fleet_fileFair Fare: Check a cab firm's fleet.jsonBRead-onlyIdempotentInspect
Fair Fare. Check a cab firm's fleet.json. Reads a taxi or minicab firm's fleet.json (the open format at fairfare.pages.dev/fleet that lets assistants find and book local firms directly) and lists anything to fix.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The https address of the fleet.json file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so safety and network behavior are covered. The description adds that the result is a list of things to fix, but does not disclose output format, pagination, or failure modes. With annotations carrying the safety profile, this is an acceptable 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded and understandable, but it opens with a bare 'Fair Fare.' brand token and then restates the title ('Check a cab firm's fleet.json') before reaching the substantive clause. Those opening fragments consume space without adding meaning, so it is efficient but not tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, non-destructive read tool with full annotation coverage and no output schema, the description supplies enough context: what fleet.json is, where the format lives, and that the tool returns a list of issues to fix. The only gap is not describing the output structure more concretely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single url parameter whose meaning is already documented. The description reinforces the context (the open fleet.json format at fairfare.pages.dev/fleet) but adds no syntax or format detail beyond the schema. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Check a cab firm's fleet.json') and adds what the operation does ('reads... and lists anything to fix'). This distinguishes it from siblings like fairfare_check_driver_licence or fairfare_estimate_fare, which operate on different resources. The separate title repeats the same wording, so the added value beyond the structured fields is modest.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that this validates a firm's fleet.json, implying it is used to verify a fleet file, but offers no explicit when-to-use vs alternatives or prerequisites. It never states an exclusion or points to a sibling for a different task. Usage is implied rather than guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fairfare_estimate_fareFair Fare: What a trip should cost by taxi, Uber or LyftCRead-onlyIdempotentInspect
Fair Fare. What a trip should cost by taxi, Uber or Lyft. Distance and time by road between two places, the licensed taxi meter fare with the extras that apply at that hour, any airport flat fare, typical Uber and Lyft prices in New York, airport pickup rules, a pre-booked transfer option for airport trips, and links that open Uber, Lyft or public transport directions with the trip filled in.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Where the trip ends, in the same forms as from. | |
| city | No | Optional tariff city id from list_cities, when the place names are ambiguous. | |
| from | Yes | Where the trip starts: an address, landmark, postcode, airport code (JFK, LHR) or lat,lon. | |
| when | No | When the trip starts, in local time: now (the default), a time like 18:30 or 6pm, or a date and time like 2026-10-09T18:30. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description does add useful scope context — 'typical Uber and Lyft prices in New York' signals an estimate rather than a live quote and a NYC-centric coverage — plus that the result carries actionable links. It stops short of stating latency, freshness, or geographic limits outside NY beyond the one reference.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single sprawling sentence built from a long comma list of outputs, with no front-loaded statement of the action. It is not padded with filler, but the structure buries the tool's core function behind an inventory of return values.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, enumerating what comes back (distance, time, meter fare, flat fares, Uber/Lyft estimates, links) is genuinely useful. However, for a 4-parameter open-world tool it omits the selection context versus fairfare_check_fare and any note on accuracy or coverage limits, so it is only adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so from/to/city/when are fully documented in the schema and the baseline is 3. The description adds at most a faint signal for 'when' via 'the extras that apply at that hour', and nothing for city or the accepted place formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title and opening frame the tool as 'what a trip should cost by taxi, Uber or Lyft', but the description body is a comma-run of return contents rather than a stated action ('estimates the fare between two places'). It also never distinguishes itself from the very similar sibling fairfare_check_fare, leaving the agent to guess which to call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance at all: no mention of fairfare_check_fare, fairfare_best_time_to_ride, or fairfare_get_taxi_tariff as alternatives, and no statement of when this estimator is the right choice over tariff lookup. The only implicit cue is that inputs are two places.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fairfare_get_airportFair Fare: Getting a ride at an airportBRead-onlyIdempotentInspect
Fair Fare. Getting a ride at an airport. Where Uber and Lyft pick up, how the taxi rank works, flat taxi fares, drop-off and pickup charges for cars, meet and greet rules, public transport into the city with prices, and tips, from each airport's own pages.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Airport code or name, for example JFK, LAX, LHR or Heathrow. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety and mutation profile is fully covered by structured data. The description adds no behavioral context beyond that — no staleness, coverage, or rate-limit notes — only a content inventory, so it is a baseline 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with a dense, useful topic list and no filler paragraphs. The opening fragments 'Fair Fare.' and 'Getting a ride at an airport.' restate the name and title, which is minor redundancy rather than bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only one required parameter, full schema coverage, and no output schema, the description's topic inventory usefully previews what the agent gets back for a given airport. Given the annotations already cover the read-only profile, nothing essential to invoking it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'code' parameter, including examples (JFK, LAX, LHR, Heathrow), so the schema carries the semantics. The description adds nothing about the code argument, which is the correct baseline of 3 when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a recognizable purpose (airport ground-transport guidance) and enumerates concrete topics — Uber/Lyft pickup, taxi rank, flat fares, drop-off charges, meet-and-greet, public transport with prices — which lets an agent distinguish it from fare-estimate or tariff siblings. The verb is implicit (it retrieves rather than computes), and it never names a sibling tool, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no routing to alternatives such as fairfare_get_taxi_tariff, fairfare_estimate_fare, or fairfare_best_time_to_ride. The agent must infer from topic hints alone whether this or a neighboring tool is correct.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fairfare_get_taxi_tariffFair Fare: A city's official taxi meter tariffBRead-onlyIdempotentInspect
Fair Fare. A city's official taxi meter tariff. The starting charge, the rate per mile or kilometre, the waiting rate, time-of-day tariffs, extras and surcharges, flat fares, tipping custom and the official source.
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | Tariff city id from list_cities, for example nyc, chicago, london or birmingham. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety behavior is covered. The description adds useful context about what a tariff record contains (surcharges, flat fares, tipping custom, source attribution), but says nothing about coverage limits, rate limits, or freshness of the official source.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence naming the resource, followed by a readable enumeration of returned fields. The list is long but each item is a distinct piece of tariff data, so little waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description's enumeration of tariff components (starting charge, per-mile rate, waiting rate, time-of-day tariffs, extras, flat fares, tipping) effectively documents the return shape. What remains missing is differentiation from sibling fare tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single city parameter is fully documented in the schema, including the list_cities reference and examples. The description adds nothing about the parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (a city's official taxi meter tariff) and enumerates its contents, so the agent knows exactly what data comes back. It does not, however, distinguish this from close siblings like fairfare_check_fare or fairfare_estimate_fare, which also concern taxi pricing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites beyond the schema's pointer to list_cities, and no routing to alternatives such as estimate_fare or check_fare. The agent must infer the distinction between 'look up the tariff' and 'check/estimate a fare' on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fairfare_list_citiesFair Fare: Cities and airports coveredARead-onlyIdempotentInspect
Fair Fare. Cities and airports covered. Every city whose official taxi tariff is on file and every airport with ground transport facts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, covering the safety and repeat-call profile. The description adds only a scope trait (results are limited to cities with a filed tariff and airports with ground transport facts) — no pagination, ordering, or rate-limit context, so it adds modest value above the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the subject, and no filler. It loses a point because the opening 'Fair Fare. Cities and airports covered.' merely restates the name and title verbatim before the one sentence that carries new information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter listing tool with no output schema, the description should at least characterize the returned shape or how to use the results. It conveys scope of coverage but not the form of the response or a next step (e.g., feed a city into check_fare), leaving the agent to infer the rest.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; per the rubric this is a baseline 4. The description's mention of what the list contains is scope, not parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (cities and airports) and, via the tool name plus 'covered', the list action, so an agent can tell this is a coverage-enumeration endpoint. The third sentence sharpens scope (only cities with an official taxi tariff on file, only airports with ground transport facts). It does not, however, distinguish itself from fairfare_get_taxi_tariff or fairfare_get_airport beyond the plural/listing framing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: by describing this as the set of cities and airports 'on file', it hints that this is a discovery call to see what data exists, but it never says when to call it (e.g., before check_fare/estimate_fare) or when not to. No alternative sibling is named, and no conditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
faredeals_cheapest_datesFare Deals: Cheapest departure days for a route in a monthBRead-onlyIdempotentInspect
Fare Deals. Cheapest departure days for a route in a month. Cheap flights from any city, to one place or anywhere, with the cheapest days to fly. Fares are the cheapest Aviasales travellers found in the last 48 hours. The live price is on the booking page.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Add a state or country when a name is shared, for example Portland, Maine. | |
| from | Yes | Add a state or country when a name is shared, for example Portland, Maine. | |
| month | Yes | 2026-11. | |
| country | No | Two-letter country for the currency, for example US, GB, CA, AU, DE. Leave out to use the traveller's location. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds genuinely useful behavior the annotations cannot convey: fares are cached 'cheapest found in the last 48 hours' and the live price only appears on the booking page, so the agent knows the returned prices are stale and non-binding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core statement is front-loaded, but 'Cheap flights from any city, to one place or anywhere, with the cheapest days to fly' largely restates the title and opening sentence, and the 'Fare Deals.' brand prefix adds nothing. Roughly half the text is redundant marketing copy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does useful work by telling the agent what the data represents (cheapest days in a month) and that pricing is a 48-hour cached estimate rather than a live quote. The remaining gap is the shape of the returned day/price list, which is minor for a simple lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents 'from', 'to', 'month' and 'country' including the month format and currency semantics. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource and scope: 'Cheapest departure days for a route in a month', which an agent can act on. It does not, however, differentiate itself from its sibling faredeals_find_deals, so an agent choosing between the two gets no help.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of the sibling faredeals_find_deals, and no prerequisites. The phrase 'from any city, to one place or anywhere' gestures at flexibility but doesn't tell the agent when this tool is the right pick over other fare tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
faredeals_find_dealsFare Deals: Cheapest recent fares from a city, to a place or anywhereBRead-onlyIdempotentInspect
Fare Deals. Cheapest recent fares from a city, to a place or anywhere. The say field is a ready-made answer.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | City or airport, or anywhere (default). Same state or country hints as from. | |
| from | Yes | City or airport, for example New York or JFK. Add a state or country when a name is shared: Birmingham, UK; Birmingham, AL; Portland, Maine. | |
| limit | No | How many deals to return, 1 to 20. | |
| month | No | Departure month 2026-11 or date 2026-11-14. | |
| return | No | Return month or date. | |
| country | No | Two-letter country for the currency, for example US, GB, CA, AU, DE. Leave out to use the traveller's location. | |
| nonstop | No | True for direct flights only. | |
| one_way | No | True for one-way fares only. | |
| max_price | No | Budget in US dollars. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, openWorld, non-destructive), so the bar is lower. The description adds that fares are 'recent' (freshness hint) and references an undocumented 'say' output field, which is genuinely useful since no output schema exists — but it never explains what 'say' contains or how results are shaped.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short and front-loaded, but the opening 'Fare Deals.' merely restates the tool name and earns nothing, and the closing 'The say field is a ready-made answer' is cryptic rather than informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with a fully documented schema, the core is adequate. However, with no output schema, the description should explain the 'say' field it advertises, and it offers no routing against its faredeals siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all nine parameters are already documented in the schema with examples. The description adds no parameter meaning beyond that, which is the baseline 3 when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: cheapest recent fares from a city to a place or anywhere. That is clear enough to distinguish the tool's function, but it does nothing to separate it from the sibling faredeals_cheapest_dates, which plausibly overlaps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no conditions, and no mention of the sibling tools faredeals_cheapest_dates or faredeals_look_up_place. The agent must 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.
faredeals_look_up_placeFare Deals: Look up a city or airport codeBRead-onlyIdempotentInspect
Fare Deals. Look up a city or airport code. Cheap flights from any city, to one place or anywhere, with the cheapest days to fly. Fares are the cheapest Aviasales travellers found in the last 48 hours. The live price is on the booking page.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | A city or airport name or code, for example Lisbon or LIS. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds genuinely useful context beyond that: fares are the cheapest found in the last 48 hours (data freshness) and the live price lives on the booking page (data currency caveat). This is real behavioral disclosure, not repetition.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The redundant 'Fare Deals.' lead restates the app name and title, and the middle sentences are promotional ('Cheap flights from any city, to one place or anywhere'). The valuable freshness/caveat sentences are buried at the end rather than front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should describe what a lookup returns (resolved airport/city codes and names), which it never does. The data-freshness note partially compensates, but an agent cannot predict the return shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'q' parameter is documented with an example (Lisbon or LIS), so the schema carries the load. The description's 'from any city, to one place or anywhere' hints at scope but adds no format or resolution detail beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource pair ('Look up a city or airport code') that an agent can act on. However it does not differentiate itself from the sibling faredeals_find_deals and faredeals_cheapest_dates, and the trailing 'Cheap flights from any city... cheapest days to fly' language describes deal searching rather than a code lookup, muddying the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no mention of the sibling tools (find_deals, cheapest_dates) that an agent would need to disambiguate fare-search behavior. The agent must infer this is a resolver/lookup step from the title alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
findmymoney_get_sourcesFind My Money: Federal and other official places to look, by typeARead-onlyIdempotentInspect
Find My Money. Federal and other official places to look, by type. For requests like "how do I find an old 401k?", "unclaimed tax refund", "lost savings bonds", "money from a failed bank", "FTC refund", "my mum died, did she leave money or life insurance?", "find my old pension" (UK with country=GB), "find my Child Trust Fund". Without a type, returns every source.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Type: tax, retirement, bonds, banks, investments, refunds, insurance, deceased, wages, courts, tribal or all. Everyday words like 401k, pension, stocks or "my dad died" also work; UK words like HMRC, Premium Bonds or Child Trust Fund give the UK answer. | |
| country | No | Two-letter country code. GB (or UK) gives the UK tracing services. Defaults to the caller's country, else US. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds that omitting type returns every source, which is a useful default, but that fact is largely already implied by the schema's "or all" enum value. Little additional behavioral context is offered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded in the first two sentences, followed by a compact list of motivating queries. The example list is long but each item earns its place by mapping a real user phrasing to the tool. Slightly repetitive of the schema's alias list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup with two optional params, full annotations, and no output schema, the description is largely sufficient: it states purpose, examples, and default behavior. It stops short of describing the shape of the returned source list, which an agent might want when chaining results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already well documented in the schema, including the alias words and the country default behavior. The description's examples restate that same information rather than adding syntax or format meaning. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a concrete verb+resource: it returns "Federal and other official places to look, by type", which tells an agent exactly what comes back. The example queries make the resource even more tangible. It does not, however, mention its sibling findmymoney_get_state_search, so an agent must infer the boundary between the two.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is demonstrated through a rich set of example requests ("how do I find an old 401k?", "unclaimed tax refund", "my mum died, did she leave money..."), which is strong when-to-use guidance. The fallback behavior "Without a type, returns every source" is stated. There is no explicit when-not-use or named alternative routing, keeping it out of 5 territory.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
findmymoney_get_state_searchFind My Money: A state's official unclaimed property searchARead-onlyIdempotentInspect
Find My Money. A state's official unclaimed property search. For requests like "do I have unclaimed money in Ohio?", "how do I find money I'm owed in the UK?", "how do I find unclaimed property in Texas?", "I've lived in Ohio, Texas and California, where do I look?". Returns the official state search link (and a direct search_url), MissingMoney.com, tips, a claim checklist and a scam warning. With several states, the first is at the top level and the rest are in more_states.
| Name | Required | Description | Default |
|---|---|---|---|
| state | Yes | State name or two-letter code, DC or Puerto Rico, or UK (England, Scotland, Wales, Northern Ireland, London). Several can be listed with commas or "and" (up to 8). Big city names like NYC also work. Up to 200 characters. Required unless country=GB. | |
| country | No | Two-letter country code. GB (or UK) gives the UK tracing services. Defaults to the caller's country, else US. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, open-world behavior. Beyond that, the description discloses the return shape (official state link, direct search_url, MissingMoney.com, tips, claim checklist, scam warning) and the multi-state layout rule ('first at top level, rest in more_states') – value the annotations cannot convey, especially with no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the identity ('Find My Money. A state's official unclaimed property search.'), then usage examples, then return contents. Efficient overall, though the four example phrasings are somewhat redundant and could be trimmed without loss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing returns and does so (link, search_url, MissingMoney.com, tips, checklist, scam warning). It also handles the multi-state edge case, so an agent can 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both 'state' (accepted formats, comma/'and' lists up to 8, big city names) and 'country' (GB/UK behavior, default). The description's multi-state sentence describes result layout rather than parameter syntax, so it adds little beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'A state's official unclaimed property search,' with the leading 'Find My Money' branding. An agent immediately knows this retrieves official unclaimed-money search links for a given state. It does not explicitly distinguish itself from the sibling findmymoney_get_sources, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Four worked example queries ('do I have unclaimed money in Ohio?', UK money owed, Texas unclaimed property, multi-state 'where do I look?') give clear, concrete context for when to invoke it. No explicit exclusions or named alternative tools, but the trigger conditions are unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
formguide_compare_teamsForm Guide: Two clubs side by side before they meetARead-onlyIdempotentInspect
Form Guide. Two clubs side by side before they meet. For requests like "Arsenal v Leeds, how do they compare?". Gives positions, form, goals, this season's meeting and the next date they play. Stats only, not betting advice.
| Name | Required | Description | Default |
|---|---|---|---|
| away | Yes | A different club from home. | |
| home | Yes | The home club, for example Arsenal. | |
| team1 | No | Older name for home, kept for existing callers; home is the current name. | |
| team2 | No | Older name for away, kept for existing callers; away is the current name. | |
| country | No | US or CA adds US Eastern kick-off times to the say line (and to each fixture's us_eastern, which is always there when a time is known). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, non-destructive behavior, so the safety profile is covered. The description adds real value beyond that: it enumerates the returned stats and scopes the tool explicitly ('Stats only, not betting advice'), which prevents an agent from misusing it as a prediction/advice source.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the purpose, then an example, then the output/scope. The leading 'Form Guide.' is slightly redundant with the title but the rest earns its place with no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by listing the fields returned and clarifying scope. With a fully documented 5-parameter schema and full annotation coverage, the only missing piece is explicit routing among the other formguide_* tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter (home, away, team1, team2, country) is documented in the schema itself, including the legacy-alias behavior of team1/team2 and the country effect on US Eastern times. The description adds no parameter-level meaning beyond this, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (compare) and resource (two clubs), and enumerates the output ('positions, form, goals, this season's meeting and the next date they play'). It implicitly contrasts with formguide_get_team by emphasizing 'two clubs side by side', but never names that sibling, so an agent must infer the boundary rather than read it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a concrete trigger utterance ('Arsenal v Leeds, how do they compare?') plus a temporal cue ('before they meet'), which gives clear context for when to reach for this tool. It stops short of stating when NOT to use it or which sibling handles single-team or table queries instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
formguide_get_fixturesForm Guide: Upcoming fixtures for a club or a leagueARead-onlyIdempotentInspect
Form Guide. Upcoming fixtures for a club or a league. For requests like "who do Liverpool play next?" or "what's on in La Liga this weekend?". Without team or league, gives the Premier League.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | How far ahead, a whole number from 1 to 60. Default 21. If nothing falls in the window (an international break), the next fixtures are returned anyway. | |
| team | No | A club name, for example Liverpool or Real Madrid. | |
| league | No | One of: premier league, championship, la liga, bundesliga, serie a, ligue 1 (common variants like EPL or German Bundesliga work too). Any other league returns 404. | |
| country | No | US or CA adds US Eastern kick-off times to the say line (and to each fixture's us_eastern, which is always there when a time is known). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and openWorld, so safety is covered. The description adds genuine operational context beyond that: the default league when no filter is given and the international-break behaviour (next fixtures returned regardless of the window).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with purpose, then example queries, then the default-scope rule. No filler and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, zero-required-parameter query tool with no output schema, the description covers defaults, edge cases and timezone behaviour adequately. It stops short of describing the shape of what comes back, which is the only remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds one fact the schema does not carry: the implicit Premier League default when both team and league are omitted. Its other statements (404 on unknown league, US/CA kick-off times) duplicate schema text, limiting the lift.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (upcoming fixtures) and explicitly bounds the scope to a club or a league, which separates it cleanly from formguide_get_results (past results) and formguide_get_table. An agent can route to it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete trigger phrasing ("who do Liverpool play next?", "what's on in La Liga this weekend?") and states the fallback scope when neither team nor league is supplied. It does not explicitly name a sibling alternative (e.g. get_results for completed matches), 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.
formguide_get_resultsForm Guide: Latest results for a club, or the last round of a leagueARead-onlyIdempotentInspect
Form Guide. Latest results for a club, or the last round of a league. For requests like "how did Chelsea get on?" or "what were the Serie A results?". Without team or league, gives the Premier League.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | How many of the club's results, a whole number from 1 to 20. Default 5. | |
| team | No | A club name, for example Liverpool or Real Madrid. | |
| league | No | One of: premier league, championship, la liga, bundesliga, serie a, ligue 1 (common variants like EPL or German Bundesliga work too). Any other league returns 404. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorld, so the safety profile is fully covered. The description adds one genuinely useful behavioral fact not in structured data — that omitting both team and league defaults to the Premier League — but says nothing about return format or the 404 behavior hinted at in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then example queries, then the default — logical ordering with little waste. The leading 'Form Guide.' fragment is slightly redundant with the title but functions as a fast domain signal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with no output schema, full parameter documentation, and safety annotations, the description covers purpose, triggers, and the default fallback adequately. The only omissions are return shape and error handling, which are minor for this tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter already carries a clear description (range for 'n', example club names, allowed league list). The prose adds no syntax, formatting, or precedence detail beyond what the schema supplies, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Latest results for a club, or the last round of a league') and the example queries pin down intent precisely. It implies but never explicitly distinguishes itself from siblings like formguide_get_fixtures or formguide_get_table, so an agent must infer that this is past results rather than upcoming or standings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete trigger phrasing ('how did Chelsea get on?', 'what were the Serie A results?') and documents the no-argument fallback to the Premier League. It stops short of naming alternative siblings or stating when NOT to use it, so no exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
formguide_get_tableForm Guide: League tableARead-onlyIdempotentInspect
Form Guide. League table. For requests like "show me the Championship table" or "who is top of La Liga?". Points include official deductions; a deducted club's row has points_deducted.
| Name | Required | Description | Default |
|---|---|---|---|
| league | No | One of: premier league, championship, la liga, bundesliga, serie a, ligue 1 (common variants like EPL or German Bundesliga work too). Any other league returns 404. Default premier league. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds useful non-obvious context that points include official deductions and that a deducted club's row carries points_deducted, which is behavioral detail beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short, front-loaded, and contains no filler. Every phrase contributes either the resource, example usage, or a non-obvious data rule.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity read-only tool with full input schema coverage and annotations covering safety, the description is nearly complete. It omits a detailed return shape, but the response is intuitively a league table and the one non-obvious field is explained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the league parameter is already fully documented with allowed values and default behavior. The description adds no parameter syntax or format detail beyond what the schema provides, so the baseline is 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource, 'League table', and gives example queries that make the intent clear. It does not distinguish this tool from siblings like formguide_get_results or formguide_compare_teams, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for when to use the tool through example requests such as 'show me the Championship table' and 'who is top of La Liga?'. However, it gives no explicit exclusions or alternatives among the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
formguide_get_teamForm Guide: A club's league position, recent form and next gamesBRead-onlyIdempotentInspect
Form Guide. A club's league position, recent form and next games. For requests like "how are Arsenal doing?", "what's Spurs' form?", "when do Birmingham play next?"
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Older name for team, kept for existing callers; team is the current name. | |
| team | Yes | Club name as the user said it, up to 80 characters. Nicknames and small typos are fine. | |
| league | No | One of: premier league, championship, la liga, bundesliga, serie a, ligue 1 (common variants like EPL or German Bundesliga work too). Any other league returns 404. Only needed if two clubs share a name. | |
| country | No | Two-letter country code for the shirt link (US, GB and IE get local Amazon links). Default from the request. When passed as US or CA, the say line also gives the next kick-off in US Eastern time. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered elsewhere. The description adds nothing behavioral on top of that – no note on the openWorld lookup behavior, no hint about failure modes or the meaning of combining position/form/fixtures in one call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the resource and outputs, then user-phrasing examples. Nothing redundant, though the leading 'Form Guide.' fragment duplicates the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only lookup with no output schema, the description does convey what comes back (position, form, next games), which is adequate. It falls short on sibling routing, which is significant given three overlapping formguide tools, and offers no detail on the response shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains every parameter including the q/team aliasing, allowed leagues, and country-coded shirt links. The description's example queries loosely map to the team parameter but add no syntax or constraint detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource and enumerates the three outputs returned: league position, recent form, and next games. It is clear what the tool produces, but it never distinguishes itself from the sibling tools formguide_get_table, formguide_get_results, and formguide_get_fixtures, which appear to cover the same three sub-topics individually.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The example queries ('how are Arsenal doing?', 'what's Spurs' form?') imply when to reach for this tool, which is useful trigger guidance. However, it gives no explicit alternative or exclusion, and given four sibling formguide tools that overlap heavily on table/results/fixtures, an agent gets no help deciding between them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gita_get_cardGita Scroller: Today's reading one line at a time, for voiceCRead-onlyIdempotentInspect
Gita Scroller. Today's reading one line at a time, for voice.. Bhagavad Gita: daily verses, plans, search and verse lookup; whole books from the Library, read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | Which card, starting at 1. Defaults to 1. | |
| date | No | Optional day as YYYY-MM-DD. Defaults to today (UTC). | |
| reading | No | A reading or plan id from list_readings. Defaults to today's reading. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety and repeatability profile is covered. The description adds one behavioral trait beyond that ('for voice', 'one line at a time'), indicating output shaped for spoken delivery, but says nothing about return format, pagination across cards, or defaults behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is short, but it opens by restating the title almost verbatim (including a stray double period) and then spends its second half on product-wide copy rather than this tool. Front-loaded enough, but a meaningful share of the content does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter, read-only tool with a fully documented schema and no output schema, the definition is minimally adequate: it conveys that a card is one line of today's reading. It is missing what a 'card' actually contains and how to page through it, which would help an agent use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents n, date, and reading (including defaults to 1, today UTC, and today's reading). The description adds no parameter-level meaning beyond this, which is the expected baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the resource (a daily Bhagavad Gita card read 'one line at a time, for voice'), which hints at the granularity of the unit and differentiates it somewhat from a whole-reading tool. However, the second sentence describes the entire app surface ('daily verses, plans, search and verse lookup; whole books from the Library'), which is not this tool's function, and it never distinguishes get_card from close siblings like gita_get_today, gita_get_reading, or gita_get_verse.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance and no named alternative. 'For voice' faintly implies a voice/TTS context, but an agent cannot tell from this text why it would pick get_card over gita_get_today or gita_get_reading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gita_get_chapterGita Scroller: A whole chapter in Sanskrit with transliteration and EnglishCRead-onlyIdempotentInspect
Gita Scroller. A whole chapter in Sanskrit with transliteration and English. Bhagavad Gita: daily verses, plans, search and verse lookup; whole books from the Library, read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| chapter | Yes | Chapter number, 1 to 18. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is covered. The description adds genuinely useful output context — that the chapter is returned in Sanskrit with transliteration and English — which matters since there is no output schema. It adds nothing about size, pagination, or error behavior for out-of-range chapters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content-bearing line ('A whole chapter in Sanskrit with transliteration and English') is front-loaded and useful, but the lead brand name 'Gita Scroller' is filler and the long second sentence catalogs unrelated app features, violating the 'every sentence earns its place' standard.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with full annotation coverage and no output schema, the essential information (what content comes back) is present. What is missing is differentiation from the many sibling Gita retrieval tools and any handling note for invalid chapter numbers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'chapter' parameter is fully documented with a 1–18 range, so the schema carries the semantics. The description only implies chapter selection via 'a whole chapter' and adds no format or edge-case detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The name and title already convey 'a whole chapter in Sanskrit with transliteration and English,' and the first two sentences of the description largely restate that. The trailing clause about 'daily verses, plans, search and verse lookup; whole books from the Library, read a passage at a time' describes the app as a whole rather than this tool, so it does not sharpen the boundary against siblings like gita_get_verse, gita_get_reading, or gita_read_book.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to use this tool versus gita_get_verse (single verse), gita_get_reading (passage), or gita_read_book (whole book). The tagline even names adjacent capabilities (search, verse lookup, daily verses) without routing the agent to the tool that owns them, which could actively mislead selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gita_get_readingGita Scroller: One reading or plan, line by lineCRead-onlyIdempotentInspect
Gita Scroller. One reading or plan, line by line. Bhagavad Gita: daily verses, plans, search and verse lookup; whole books from the Library, read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | A reading or plan id from list_readings, or a plan name such as "japji" or "The Gita in 18 Days". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered externally. The description adds nothing behavioral beyond that — no note on return shape, whether remote content is fetched, or what 'line by line' implies for output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first two sentences largely restate the tool name and title, and the trailing clause ('daily verses, plans, search and verse lookup; whole books from the Library') describes the whole app rather than this tool. This is clutter rather than informative brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with rich annotations and full schema coverage, the definition is minimally adequate. However, it never clarifies how a 'reading' differs from a 'card', 'chapter', or 'today', so the agent lacks the context needed to confidently pick this tool over its siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'id' parameter is well documented in the schema with concrete examples ('japji', 'The Gita in 18 Days'). The description adds no parameter meaning of its own, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description implies retrieving a single reading or plan and even hints at the format ('line by line'), so the basic purpose is inferable. But it never states the verb cleanly and does not distinguish this tool from close siblings like gita_get_today, gita_get_card, or gita_read_book, leaving the agent to guess which one to call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no mention of alternatives, and no exclusions. The schema notes the id comes from list_readings, but the description itself provides no routing logic between this tool and its many sibling readers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gita_get_todayGita Scroller: Today's reading, line by line (same as the app shows today)CRead-onlyIdempotentInspect
Gita Scroller. Today's reading, line by line (same as the app shows today). Bhagavad Gita: daily verses, plans, search and verse lookup; whole books from the Library, read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Optional day as YYYY-MM-DD. Defaults to today (UTC). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint), so the remaining burden is light, but the description adds essentially nothing behavioral beyond 'same as the app shows today'. It does not say what is returned (one line? a full chapter?), whether a reading always exists for a given day, or how it behaves outside the app's configured plan.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence duplicates the title verbatim, and the second sentence is a catalog of sibling-tool features (plans, search, verse lookup, whole books) that does not describe this tool's behavior. It is short, but a significant share of the text does not earn its place in this definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter read tool with no output schema, the minimum viable information is present: it says what the tool returns conceptually (today's reading, line by line) and leaves the date override to the schema. It stops short of describing the return shape, pagination/line handling, or behavior when no reading exists for the day, which matters because there is no output schema to fall back on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single optional 'date' parameter is fully documented in the schema (YYYY-MM-DD, defaults to today UTC). The description contributes no additional parameter semantics, so the baseline of 3 for high schema coverage applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a recognizable verb+resource ('Today's reading, line by line') and scopes it to today, so the core purpose is discoverable. However, it never distinguishes itself from close siblings like gita_get_reading, gita_get_verse, or gita_list_readings, and the second sentence instead enumerates capabilities belonging to those siblings (plans, search, verse lookup, whole books), which muddies rather than sharpens the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this tool over gita_get_reading (which presumably takes an explicit date/passage) or gita_get_card. The family blurb mentions other features but attaches no conditions or exclusions to any of them, so an agent must infer the routing entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gita_get_verseGita Scroller: A verse or range (e.gCRead-onlyIdempotentInspect
Gita Scroller. A verse or range (e.g. 47-51) in Sanskrit with transliteration and English. Bhagavad Gita: daily verses, plans, search and verse lookup; whole books from the Library, read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| verse | Yes | For example: 47-51. | |
| chapter | Yes | Chapter number, 1 to 18. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds useful content context (output includes Sanskrit, transliteration, and English), but says nothing about pagination, range size limits, or error behavior for invalid chapters/verses.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The title fragment 'A verse or range (e.g' is truncated and duplicated in the body, and the second sentence drifts into a feature list for the whole Gita Scroller app rather than this tool. Structure is muddled rather than front-loaded on what the tool does.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, fully documented, non-destructive read tool with no output schema, the description does mention the returned content shape, which is the main missing piece. However, it omits any routing guidance against the many gita_* siblings, leaving the agent under-informed for selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters, including the '47-51' example and the 1-18 chapter bound, so the schema carries parameter semantics. The description's 'range (e.g. 47-51)' merely echoes the schema and adds no formatting or edge-case detail (e.g. whether a range may span chapters).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description conveys the resource (a Bhagavad Gita verse or range) and the content returned (Sanskrit, transliteration, English), but it opens with the brand name 'Gita Scroller' rather than a verb+resource statement for this specific tool. It never distinguishes itself from siblings like gita_get_chapter, gita_get_card, gita_get_reading, or gita_get_today, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence lists app-level features ('daily verses, plans, search and verse lookup; whole books from the Library') but gives no condition for choosing this tool over gita_get_chapter, gita_get_card, or gita_get_reading. There are no exclusions or alternatives stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gita_list_booksGita Scroller: The whole books in the Library that can be read a passage at a timeCRead-onlyIdempotentInspect
Gita Scroller. The whole books in the Library that can be read a passage at a time. Bhagavad Gita: daily verses, plans, search and verse lookup; whole books from the Library, read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered structurally. The description adds nothing beyond repeating the title phrase 'read a passage at a time', giving no extra behavioral context such as what the list covers or its ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Sentences are redundant: 'Gita Scroller' appears twice and 'read a passage at a time' appears twice, with the actionable information (that this lists books) never actually stated. The blurb is not front-loaded around the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with no output schema, the description should at minimum clarify that it enumerates available books and what they are. Instead it stays at the level of a promotional tagline, leaving the return content ambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the description has no parameter semantics to supply. Baseline 4 applies for a parameterless tool where the schema already fully covers the (empty) input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The text largely restates the title and reads as product marketing ('Gita Scroller. The whole books in the Library...') rather than naming an action. It never says it LISTS books or what that list contains, and it does not distinguish the tool from siblings like gita_list_readings or gita_read_book.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, when-not-to-use, or alternative routing. Mentioning 'daily verses, plans, search and verse lookup' just names adjacent app features (which map to sibling tools like gita_get_today, gita_search_readings, gita_get_verse) without telling the agent when to pick this one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gita_list_readingsGita Scroller: All curated daily readings and plansCRead-onlyIdempotentInspect
Gita Scroller. All curated daily readings and plans. Bhagavad Gita: daily verses, plans, search and verse lookup; whole books from the Library, read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds no behavioral context beyond that—no mention of what the list contains, ordering, pagination, or whether results include verse text or just metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short, but the content is poorly structured: sentence one duplicates the title, and the rest is a run-on fragment string of unrelated app features ('whole books from the Library, read a passage at a time') that does not belong in a list_readings definition. Space is spent without paying for itself.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and full annotation coverage, very little is strictly required, and the description at least signals that curated readings and plans are returned. However, with no output schema, it gives no hint of the return shape or volume, leaving the agent guessing about what a listing contains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4; there are no parameter semantics for the description to clarify or compensate for. No penalty applies, but nothing here elevates it above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence repeats the title almost verbatim ('All curated daily readings and plans') and never supplies a verb, so the action (listing available readings/plans) must be inferred from the name. It also fails to distinguish this from siblings like gita_list_books, gita_get_reading, or gita_search_readings. The remaining clauses describe app-wide scope rather than this tool, muddying rather than sharpening the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, and no sibling is named as an alternative. The phrase 'search and verse lookup' gestures at gita_search_readings and gita_get_verse but as app-level marketing, not routing advice, so the agent gets no selection criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gita_read_bookGita Scroller: Follow next for the next passage; it carries on into the next chapterCRead-onlyIdempotentInspect
Gita Scroller. Follow next for the next passage; it carries on into the next chapter. Bhagavad Gita: daily verses, plans, search and verse lookup; whole books from the Library, read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | Passage within the section, starting at 1. | |
| ref | No | Optional: jump straight to a passage by its reference, for example "Havamal 139", "Meditations 4.3", "Gita 2.47", "Iliad 1.5" or "10b". Overrides section and n. | |
| book | Yes | Book id or title from list_books, for example gita. | |
| section | No | Chapter, book, poem, letter or daf to start at, as listed in the book (for example 5, "chapter 2", "havamal", or 10b for the second side of a daf). Defaults to the beginning; Bekhorot defaults to today's Daf Yomi page while the cycle is in it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds that reading is sequential and carries across chapter boundaries and spans a multi-book Library, which is modest extra behavioral context, but it says nothing about pagination limits or return shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence 'Gita Scroller.' and the second sentence restate the title almost verbatim, wasting space. The remaining clause then lists sibling capabilities ('daily verses, plans, search and verse lookup') that do not belong to this tool, so the text is repetitive and partially off-topic rather than front-loaded and purposeful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With four parameters fully documented in the schema and safety annotations present, the description only needs to add reading-flow context. It gestures at sequential reading across chapters but omits how passage navigation interacts with section/n/ref overrides and what a call returns, leaving it adequate but not complete for a 4-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents book, section, n and ref with examples, which sets the baseline at 3. The description adds no syntax or format detail beyond that ('a passage at a time' loosely gestures at n/section) so it does not raise the bar above the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description conveys that this reads passages from a book one at a time ('read a passage at a time', 'whole books from the Library'), which gives a usable verb+resource. However, it muddies the identity by also listing adjacent capabilities ('daily verses, plans, search and verse lookup') that belong to sibling tools, so it does not cleanly distinguish itself from gita_get_reading, gita_get_chapter or gita_get_verse.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Follow next for the next passage; it carries on into the next chapter' is a hint about sequential scrolling, and 'whole books from the Library' hints at multi-book scope. But there is no explicit when-to-use or when-not-to-use guidance and no sibling is named as an alternative, leaving the agent to guess against eight other gita tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gita_search_readingsGita Scroller: Search the curated readings, best match firstBRead-onlyIdempotentInspect
Gita Scroller. Search the curated readings, best match first. Bhagavad Gita: daily verses, plans, search and verse lookup; whole books from the Library, read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Words to search for, for example duty or fear. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds one useful behavioral detail — results are ordered by best match — but says nothing about result count, matching semantics, or fallback when nothing matches.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The search preamble is front-loaded and efficient, but the second sentence ('Bhagavad Gita: daily verses, plans, search and verse lookup; whole books from the Library, read a passage at a time') is app marketing that does not describe this tool's behavior and pads the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only search with no output schema, the essentials are present and annotations cover safety. It stops short of describing the shape of the search response or its limits, which an agent would need to interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single documented 'q' parameter that already includes the example 'duty or fear'. The description contributes no additional parameter meaning, so the baseline 3 for schema-complete cases applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Search the curated readings') plus the ranking behavior ('best match first'), which distinguishes it from gita_get_reading and gita_list_readings. The remaining clause is app-level boilerplate rather than tool-specific, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus gita_get_reading, gita_get_verse, or gita_list_readings, and no exclusions or prerequisites. 'Best match first' is a ranking note, not usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gurbani_get_angScroll the Gurbani: Every line on an Ang in Gurmukhi with transliteration and EnglishBRead-onlyIdempotentInspect
Scroll the Gurbani. Every line on an Ang in Gurmukhi with transliteration and English. Gurbani: daily shabad, plans, search, Ang and shabad lookup; whole books from the Library, read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| ang | Yes | The Ang (page) of Sri Guru Granth Sahib, 1 to 1430. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered. The description adds genuine value by disclosing what the payload contains (each line in Gurmukhi, romanized transliteration, and English), which is behavior beyond the annotations, but says nothing about page size, limits, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first two sentences are tight and front-loaded. The third sentence is undifferentiated multi-feature boilerplate that reads like a store listing rather than tool guidance, diluting the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read with complete annotations and full schema coverage, the description covers the essentials: what is returned, in which languages, keyed by Ang. No output schema exists, but the content-language disclosure compensates adequately; only pagination/size behavior is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'ang' parameter is fully documented in the schema with type, range, and meaning. The description's 'Every line on an Ang' adds no syntax or semantics beyond that, so baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: retrieve every line on an Ang, with the content formats (Gurmukhi, transliteration, English). It hints at the sibling landscape ('Ang and shabad lookup', 'whole books from the Library') but never cleanly distinguishes get_ang from gurbani_get_shabad or gurbani_read_book, which is the main clarity gap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The closing sentence is an app-level feature dump ('daily shabad, plans, search, Ang and shabad lookup; whole books from the Library, read a passage at a time') rather than a routing rule. It never says when to choose this tool over gurbani_get_shabad, gurbani_get_reading, or gurbani_read_book, so the agent must infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gurbani_get_cardScroll the Gurbani: Today's reading one line at a time, for voiceCRead-onlyIdempotentInspect
Scroll the Gurbani. Today's reading one line at a time, for voice.. Gurbani: daily shabad, plans, search, Ang and shabad lookup; whole books from the Library, read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | Which card, starting at 1. Defaults to 1. | |
| date | No | Optional day as YYYY-MM-DD. Defaults to today (UTC). | |
| reading | No | A reading or plan id from list_readings. Defaults to today's reading. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so safety is covered. The description contributes one useful trait beyond that: the output is "for voice" and delivered "one line at a time," implying a TTS-friendly, incremental card. It says nothing about return shape or paging beyond that phrase.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The tool purpose is buried in a sentence that repeats the title nearly verbatim, followed by a generic catalog of unrelated Gurbani features and a stray double period. The second sentence is noise for an agent trying to decide whether to call this tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should clarify what a 'card' contains, and it only gestures at that ('one line at a time, for voice'). Params and safety are fully covered by schema and annotations, so this is minimally adequate but leaves the core deliverable underspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear docs for n, date, and reading, so the schema does the heavy lifting. The description adds no meaning beyond the schema (e.g., how 'reading' ids map to cards), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says it returns "Today's reading one line at a time," which hints at the resource granularity, but "Scroll the Gurbani" is vague and the second sentence just enumerates the whole Gurbani toolset rather than this tool. It does not distinguish gurbani_get_card from gurbani_get_today, gurbani_get_reading, or gurbani_get_ang.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to choose this card tool over gurbani_get_today or gurbani_get_reading, and no prerequisites or exclusions. The closing list of capabilities ("daily shabad, plans, search, Ang and shabad lookup...") describes other tools, not this one's usage conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gurbani_get_readingScroll the Gurbani: One reading or plan, line by lineCRead-onlyIdempotentInspect
Scroll the Gurbani. One reading or plan, line by line. Gurbani: daily shabad, plans, search, Ang and shabad lookup; whole books from the Library, read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | A reading or plan id from list_readings, or a plan name such as "japji" or "The Gita in 18 Days". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, covering the safety profile. The description adds some behavioral texture with "line by line" and "read a passage at a time," suggesting output granularity/paging, but it never clarifies what is actually returned or how a plan differs from a reading. Baseline 3 is appropriate given the annotations carry the safety burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence is front-loaded and short, but the second sentence is a comma-spliced catalog of unrelated features (daily shabad, search, Ang lookup, whole books) that adds noise rather than signal. It is compact but not well-structured; the feature list does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only getter with full schema coverage and safety annotations, little is strictly required. Still, the description never clarifies the return granularity (lines vs. passage) or how a plan id differs from a reading id, and it conflates sibling capabilities, leaving the agent slightly under-informed for a tool sitting in a dense sibling cluster.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents that id accepts a reading/plan id from list_readings or a plan name like "japji." The description's "one reading or plan" merely echoes this without adding format, casing, or lookup syntax beyond the schema. Baseline 3 when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The core purpose is stated ("Scroll the Gurbani. One reading or plan, line by line"), which identifies the resource as a reading or plan retrieved linearly. However, the second sentence lists "daily shabad, plans, search, Ang and shabad lookup; whole books from the Library," which are actually the domains of sibling tools (gurbani_get_today, gurbani_get_ang, gurbani_get_shabad, gurbani_read_book, gurbani_search_readings). This conflation blurs rather than sharpens the boundary with siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance and no naming of alternatives. With seven sibling gurbani_* tools (get_today, get_ang, get_shabad, read_book, search_readings, list_readings), the agent gets no signal about when this tool is the right choice versus those. "Read a passage at a time" hints at segment/pagination behavior but is not framed as usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gurbani_get_shabadScroll the Gurbani: A whole shabad by BaniDB id, with transliteration and EnglishBRead-onlyIdempotentInspect
Scroll the Gurbani. A whole shabad by BaniDB id, with transliteration and English. Gurbani: daily shabad, plans, search, Ang and shabad lookup; whole books from the Library, read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | A BaniDB shabad ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds that results include transliteration and English, a useful payload detail, but says nothing about pagination, size of a whole shabad, or failure modes for an invalid id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first two sentences are tight and front-load the essential information. The third sentence is a comma-spliced catalog of the whole Gurbani family that adds no actionable content for this specific tool and dilutes the signal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, fully annotated read tool with no output schema, the description conveys what comes back (transliteration and English), which is the main thing an agent needs. It is adequate but stops short of clarifying its position among the four other Gurbani retrieval tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage and a single documented parameter, the schema already carries the semantics; the description only echoes 'by BaniDB id'. Baseline 3 is appropriate since no format or provenance detail is added beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('a whole shabad'), the identifier domain ('by BaniDB id'), and the payload ('with transliteration and English'), which is enough to distinguish it from gurbani_search_readings or gurbani_list_books. However it never disambiguates from close siblings like gurbani_get_ang, gurbani_get_reading, or gurbani_read_book, which also retrieve Gurbani text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The trailing 'Gurbani: daily shabad, plans, search, Ang and shabad lookup; whole books from the Library' sentence is a family/taxonomy listing, not usage guidance for this tool. It offers no condition for choosing this over gurbani_get_ang or gurbani_read_book, and no prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gurbani_get_todayScroll the Gurbani: Today's reading, line by line (same as the app shows today)CRead-onlyIdempotentInspect
Scroll the Gurbani. Today's reading, line by line (same as the app shows today). Gurbani: daily shabad, plans, search, Ang and shabad lookup; whole books from the Library, read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Optional day as YYYY-MM-DD. Defaults to today (UTC). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered structurally. The description adds only that the output is line-by-line and mirrors the app's current-day view, which is modest but real return-shape context; it says nothing about caching, date handling edge cases, or fallback when no reading exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The body repeats the title nearly verbatim ('Today's reading, line by line (same as the app shows today)'), which is pure duplication. The second sentence is a broad app-capability blurb covering features this tool does not expose, adding length without adding selection signal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter read tool with full annotation coverage and high schema coverage, the description supplies the essential fact that output is a line-by-line today view. It omits anything about empty-day behavior or how the 'today' boundary is computed beyond the schema's UTC note, leaving it merely adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'date' parameter (optional, YYYY-MM-DD, defaults to today UTC) is fully documented in the schema. The description adds no formatting, timezone nuance, or past/future-date guidance beyond it, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete verb and resource: retrieve today's Gurbani reading, presented line by line, matching what the app shows today. That is clear enough for an agent to know what comes back. It does not, however, distinguish itself from close siblings such as gurbani_get_reading, gurbani_get_card or gurbani_list_readings, so it stays short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to choose this tool over gurbani_get_reading (a specific reading) or gurbani_get_card. The trailing sentence enumerates app features ('plans, search, Ang and shabad lookup; whole books') without tying any of them to a selection condition for this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gurbani_list_booksScroll the Gurbani: The whole books in the Library that can be read a passage at a timeCRead-onlyIdempotentInspect
Scroll the Gurbani. The whole books in the Library that can be read a passage at a time. Gurbani: daily shabad, plans, search, Ang and shabad lookup; whole books from the Library, read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered. The description adds only the vague 'read a passage at a time' framing and says nothing about the shape, ordering, or size of the returned book list. It neither contradicts the annotations nor meaningfully enriches them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is largely redundant: the same idea ('the whole books in the Library that can be read a passage at a time') appears twice, and the final sentence restates it a third time while dumping unrelated feature names. It is not overly long, but almost none of it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-parameter list tool with no output schema, the bar is low, but the description leaves the agent unsure whether this is the book index or a passage reader, since it also mentions 'daily shabad, plans, search, Ang and shabad lookup'. That scope muddle is exactly the kind of ambiguity the description should resolve.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema defines zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies for a no-argument tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description does convey that this returns whole books in the Library that can be read a passage at a time, which is a concrete resource. However, the leading verb 'Scroll' is odd and non-standard for a list operation, and the definition never distinguishes itself from close siblings like gurbani_read_book or gurbani_list_readings. It largely restates the title twice rather than sharpening the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus gurbani_read_book, gurbani_list_readings, or the equivalent gita_/lore_/stoics_ list tools. The trailing phrase 'Gurbani: daily shabad, plans, search, Ang and shabad lookup' name-drops other capabilities without routing the agent to the right tool, which adds noise rather than guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gurbani_list_readingsScroll the Gurbani: All curated daily readings and plansCRead-onlyIdempotentInspect
Scroll the Gurbani. All curated daily readings and plans. Gurbani: daily shabad, plans, search, Ang and shabad lookup; whole books from the Library, read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the read-only safety profile is fully covered by structured data. The description adds nothing behavioral beyond that – no note on whether the list is paginated, static catalog vs. date-dependent, or how large the response is.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short and the resource is front-loaded, but the second sentence is a catch-all family blurb that mixes in other tools' functions, so it does not fully earn its place and creates ambiguity rather than trimming it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param browse tool with no output schema, the description should at least clarify what the returned list contains (curated reading plans vs. today's reading) and how it relates to gurbani_get_today/gurbani_list_books. Instead it conflates the whole family's capabilities, leaving the agent unsure what this call actually yields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters and the schema is empty, so there is nothing for the description to clarify. Per the baseline for a zero-parameter tool, a 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first two sentences ('Scroll the Gurbani. All curated daily readings and plans.') essentially restate the title and name, giving no specific verb beyond the vague 'Scroll'. The remaining clause then lists capabilities belonging to sibling tools (daily shabad, search, Ang and shabad lookup, whole books, read a passage), so it neither pins down this tool's resource nor distinguishes it from gurbani_get_reading, gurbani_list_books, or gurbani_search_readings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus gurbani_get_today, gurbani_list_books, or gurbani_search_readings. Worse, by enumerating sibling capabilities ('search', 'Ang and shabad lookup', 'read a passage at a time') it implies this tool covers those jobs, which is the opposite of routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gurbani_read_bookScroll the Gurbani: Follow next for the next passage; it carries on into the next chapterCRead-onlyIdempotentInspect
Scroll the Gurbani. Follow next for the next passage; it carries on into the next chapter. Gurbani: daily shabad, plans, search, Ang and shabad lookup; whole books from the Library, read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | Passage within the section, starting at 1. | |
| ref | No | Optional: jump straight to a passage by its reference, for example "Havamal 139", "Meditations 4.3", "Gita 2.47", "Iliad 1.5" or "10b". Overrides section and n. | |
| book | Yes | Book id or title from list_books, for example japji, sukhmani. | |
| section | No | Chapter, book, poem, letter or daf to start at, as listed in the book (for example 5, "chapter 2", "havamal", or 10b for the second side of a daf). Defaults to the beginning; Bekhorot defaults to today's Daf Yomi page while the cycle is in it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds that reading continues across chapters and proceeds a passage at a time, which is modest behavioral value, but it says nothing about what a call returns or how to know when the book ends.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short and the continuation hint is front-loaded, but the trailing inventory 'daily shabad, plans, search, Ang and shabad lookup' is keyword padding that describes sibling tools rather than this one, diluting an otherwise compact definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should ideally say what a passage call returns and how the agent advances through a book, but it only vaguely gestures at 'follow next.' Everything needed to make a valid call is in the schema, so the definition is minimally adequate rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so book, section, n, and ref are all documented in the schema itself. The description adds no syntax, format, or precedence detail beyond that, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (Gurbani) and an action (scroll/read a passage at a time), and the title's 'follow next' hints at sequential reading. However, 'Scroll the Gurbani' largely restates the tool name and title, and it never distinguishes this from siblings like gurbani_get_reading, gurbani_get_shabad, or gurbani_get_ang.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is 'Follow next for the next passage; it carries on into the next chapter,' which describes continuation behavior but not when to choose this tool over gurbani_get_reading or gurbani_get_shabad. No exclusions, prerequisites, or alternative-routing are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gurbani_search_readingsScroll the Gurbani: Search the curated readings, best match firstCRead-onlyIdempotentInspect
Scroll the Gurbani. Search the curated readings, best match first. Gurbani: daily shabad, plans, search, Ang and shabad lookup; whole books from the Library, read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Words or a bani's name to search for, for example Japji or humility. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive behavior, so the safety profile is fully covered. The description adds genuine behavioral context with 'best match first' (result ordering), but says nothing about limits, pagination, or what the results contain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first two clauses are tight and front-loaded, but the trailing 'Gurbani: daily shabad, plans, search, Ang and shabad lookup; whole books from the Library, read a passage at a time' is a domain-wide catalog that does not describe this tool and dilutes focus.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter search with no output schema, the essentials are present: what to search and that results are ranked. It is adequate but thin — no note on result shape or scope limits left an agent's expectations partly unset, though the annotations carry the safety profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter 'q' is documented in-schema with examples ('Japji or humility'). The description adds no query syntax or matching-rule detail beyond that, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource — 'Search the curated readings' — which clearly identifies it as a search tool with ranked results ('best match first'). However, it never distinguishes itself from siblings like gurbani_list_readings or gurbani_get_reading, and the trailing clause reads like a suite-wide catalog rather than this tool's scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance or named alternative. 'Best match first' hints at ranking intent, and 'read a passage at a time' gestures at reading, but neither tells the agent when to pick this over gurbani_list_readings or gurbani_get_shabad.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
halalornot_ask_is_it_halalHalal or Not: Ask any 'is it halal' questionBRead-onlyIdempotentInspect
Halal or Not. Ask any 'is it halal' question. Covers money (savings, credit cards, mortgages, BNPL, insurance, pensions, trading), crypto, medicine, food and drink, and everyday life (music, dogs, tattoos, nail polish, smoking, games, photos, jobs). Returns the verdict, the main scholarly views and halal alternatives. Also recognises single ingredients and E-numbers.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | The question in plain words, for example 'Is a credit card halal?' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: it discloses the return content (verdict, main scholarly views, halal alternatives) and that it also handles single ingredients and E-numbers, which is not derivable from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then a compact parenthetical enumeration of coverage domains, ending with return content. The domain list is long but each item earns its place by communicating scope. No filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a free-text Q&A tool with no output schema, the description adequately explains what it answers and what it returns. However, in a family with a dozen overlapping halal tools, it omits any guidance on scope boundaries or limits, leaving the agent unable to route confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage, and the schema itself supplies the example question format ('Is a credit card halal?'). The description adds no additional syntax or constraint detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource: answer any 'is it halal' question, and enumerates the covered domains (money, crypto, medicine, food/drink, everyday life) plus ingredient/E-number recognition. The purpose is unmistakable, but it does not differentiate itself from the many dedicated siblings (halalornot_check_crypto, halalornot_check_medicine, halalornot_check_ingredients), so an agent cannot tell when this catch-all is preferred.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is provided, and the description never names or defers to the more specific sibling tools. The broad domain list actively overlaps with halalornot_check_crypto, halalornot_check_medicine, and halalornot_check_ingredients, leaving routing entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
halalornot_check_cryptoHalal or Not: Is this cryptocurrency halal?ARead-onlyIdempotentInspect
Halal or Not. Is this cryptocurrency halal? Classifies a coin by what it does (lending, gambling, meme, stablecoin, staking, general-purpose) and gives the scholarly views on crypto and on how it's used.
| Name | Required | Description | Default |
|---|---|---|---|
| coin | Yes | Coin name or symbol, for example bitcoin, ETH, AAVE. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint), so the bar is lower. The description adds genuine value by disclosing the shape of the answer: a category-based classification plus scholarly views on crypto and its usage. It does not mention limits, sources, or freshness of the rulings.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the core question and followed by the output content. The opening 'Halal or Not. Is this cryptocurrency halal?' mildly duplicates the title, but nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only lookup with no output schema, the description supplies enough about what comes back (category classification plus scholarly views). It is nearly complete; only sourcing/scope of the scholarly opinions is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter exists and schema coverage is 100%, so the schema already documents 'coin' with examples (bitcoin, ETH, AAVE). The description adds no syntax or formatting detail beyond that, which is the expected baseline here rather than a gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Classifies a coin by what it does') and names the taxonomy applied (lending, gambling, meme, stablecoin, staking, general-purpose), so the agent knows exactly what this tool produces. It is implicitly distinct from siblings like halalornot_check_fund and halalornot_screen_stock by being crypto-specific, but 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied — an agent infers it should call this when checking a cryptocurrency's halal status. There is no explicit when-to-use/when-not guidance and no pointer to adjacent tools (e.g., mizan_screen_company for equities), which matters given the dense set of halal-finance siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
halalornot_check_fundHalal or Not: Is this fund, ETF or pension fund halal?ARead-onlyIdempotentInspect
Halal or Not. Is this fund, ETF or pension fund halal? Recognises Shariah funds by name or ticker. For other US-registered funds and ETFs, reads the latest SEC holdings report and screens every holding by industry and debt. UK-listed ETFs (VUSA, CSPX, VWRL, SWDA, EQQQ, ISF and others) and fund names (Vanguard S&P 500, FTSE 100 tracker, LifeStrategy) are answered through a US fund tracking the same index, or from what the index holds, with UK Shariah options.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | Fund or ETF ticker (VOO, QQQ, SPUS) or a Shariah fund name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe, idempotent, open-world read, so the bar is lower, and the description adds real behavioral value by disclosing how the verdict is produced: it reads the latest SEC holdings report and screens each holding by industry and debt. It further explains that UK-listed ETFs are answered via a US fund tracking the same index or the index's constituents, plus UK Shariah options.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded and dense, but the first two sentences ('Halal or Not. Is this fund… halal?') duplicate the title without adding information. The remaining sentences are tightly packed with mechanism and coverage details and earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema, the description covers asset-class scope, recognized identifier types and the screening mechanism well. It does not indicate the shape of the answer (verdict vs. per-holding breakdown) or how ambiguous tickers are resolved, which is a minor remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single ticker parameter is fully documented, so the schema already carries the load. The description adds marginal value by listing accepted UK tickers and fund names (VUSA, CSPX, VWRL, Vanguard S&P 500, LifeStrategy), which expands the accepted-input surface slightly beyond the schema's VOO/QQQ/SPUS examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it determines whether a fund, ETF or pension fund is halal, and it distinguishes scope from the nearby halalornot_screen_stock and halalornot_check_crypto siblings by naming asset classes. The opening two sentences largely restate the title, but the mechanism sentences make the purpose concrete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: an agent can infer this is for funds/ETFs/pension funds while screen_stock covers individual equities, but there is no explicit 'use this when / not when' or named alternative. It also doesn't explain what to do for a non-US, non-UK fund.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
halalornot_check_ingredientsHalal or Not: Check an ingredients listARead-onlyIdempotentInspect
Halal or Not. Check an ingredients list. Takes the ingredients exactly as printed on the pack. Returns an overall verdict, a verdict for each school, and every flagged ingredient with the reason.
| Name | Required | Description | Default |
|---|---|---|---|
| context | No | 'cosmetic' for products used on the skin, 'medicine' for medicines and supplements; these change how alcohol, carmine and necessity are treated. | food |
| ingredients | Yes | Ingredients list as printed, comma separated. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and open-world behavior, so the safety profile is covered. The description adds real value by disclosing the return shape (overall verdict, per-school verdict, flagged ingredients with reasons), which matters since there is no output schema. It does not mention rate limits or edge cases, but none are clearly needed for a stateless lookup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the purpose and output shape; no wasted prose. The leading 'Halal or Not.' branding fragment is mild redundancy that repeats the title, keeping it just short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only tool with no output schema, the description covers input form and return structure adequately, and annotations cover safety. The one notable gap is routing among the many overlapping halalornot siblings, but nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the context enum even explains how cosmetic/medicine change alcohol and carmine handling, so the schema does the heavy lifting. The description only reaffirms the ingredients input format ('exactly as printed'), adding negligible meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (check an ingredients list) and clarifies the input is the list 'exactly as printed on the pack,' plus what it returns. This distinguishes it from the barcode-based sibling, but it never names an alternative, so sibling 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use vs. when-not guidance. The overlap with halalornot_check_medicine and halalornot_check_product_by_barcode (which also judge halal status) is not addressed, and the agent receives no routing cue beyond the input-form hint that ingredients are taken as printed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
halalornot_check_medicineHalal or Not: Is this medicine halal?ARead-onlyIdempotentInspect
Halal or Not. Is this medicine halal? Reads a medicine's active and inactive ingredients from its US label (openFDA) and flags gelatine, alcohol, pig-derived enzymes and heparin. The headline and say line lead with the ruling on necessity, so nobody stops a prescribed medicine; the ingredient reading follows (ingredient_headline, verdict)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Brand or generic name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, openWorld, idempotent, non-destructive), so the bar is lower. The description adds real context beyond annotations: it reads from the US openFDA label, flags specific substances (gelatine, alcohol, pig-derived enzymes, heparin), and explains the output ordering (headline ruling first, ingredient reading second). That behavioral intent is genuinely useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening 'Halal or Not. Is this medicine halal?' simply restates the title before reaching substance, and the closing clause packs field-name parentheticals (ingredient_headline, verdict) somewhat densely. Purpose is front-loaded but there is redundant framing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a read-only annotation set, one fully documented parameter, and no output schema, the description compensates by describing the return structure (headline, say line, ingredient_headline, verdict) and the data source. An agent has most of what it needs to invoke and interpret this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'name' parameter (brand or generic name), so the schema already does the documentation. The description adds no syntax or format detail beyond what the schema states, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: reads a medicine's active and inactive ingredients from its US label (openFDA) and flags named substances. The medicine/US-label scope distinguishes it from generic siblings like check_ingredients, though it does not explicitly name an alternative. Clear, but no explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied. The phrase 'so nobody stops a prescribed medicine' hints that this is meant for prescribed medication contexts, but it never states when to prefer this over ask_is_it_halal or check_ingredients. No exclusions or alternatives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
halalornot_check_product_by_barcodeHalal or Not: Check a product by barcodeARead-onlyIdempotentInspect
Halal or Not. Check a product by barcode. Looks the barcode up in Open Food Facts, then Open Beauty Facts, and checks its ingredients.
| Name | Required | Description | Default |
|---|---|---|---|
| barcode | Yes | EAN-13, EAN-8 or UPC barcode digits. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, open-world behavior, so the bar is lower; the description still adds real value by disclosing the two-step external lookup chain and that the result derives from ingredient checking. It does not say what happens when the barcode is absent from both databases, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with the operation front-loaded, which is appropriately sized for a single-parameter lookup. The opening 'Halal or Not.' restates the title and is mildly redundant, costing it a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter lookup this covers the essentials, but there is no output schema and the description never characterizes the response (e.g. halal verdict, matched database, confidence) or the not-found path. That leaves a meaningful gap for an agent that must interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the barcode format (EAN-13, EAN-8, UPC) is already fully documented in the schema. The description adds no syntax or validation detail beyond that, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('check a product by barcode') and adds the data-source chain (Open Food Facts, then Open Beauty Facts), which distinguishes it from the nutrition-oriented barcode sibling. It stops short of explicitly differentiating from halalornot_check_ingredients or halalornot_search_products, so it is clear but not fully sibling-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The barcode-driven nature implies when to use it, but the description never states when to prefer this over halalornot_search_products (name search) or halalornot_check_ingredients (raw ingredient list). No exclusions or prerequisites are given, leaving the agent to infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
halalornot_explain_ingredientHalal or Not: Explain one ingredient or E-numberBRead-onlyIdempotentInspect
Halal or Not. Explain one ingredient or E-number. For example 'E471', 'carmine', 'prawns', 'whey' or 'alcohol denat'. Returns the verdict for each school and the reasoning.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The ingredient or E-number, for example E471, carmine, gelatin or alcohol denat. | |
| context | No | Whether the ingredient is in food or a cosmetic. Defaults to food. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a read-only, idempotent, open-world lookup, so safety is covered. The description adds genuine value by disclosing the return shape ('verdict for each school and the reasoning'), which matters since there is no output schema, but it says nothing about unknown-ingredient handling or the effect of ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the tool's identity and purpose, with zero filler. The opening 'Halal or Not. Explain one ingredient or E-number.' largely restates the title, which is mild redundancy but not harmful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter lookup with no output schema, the description adequately conveys that a per-school verdict plus reasoning is returned. It omits how the cosmetic/food context changes the verdict and how unrecognized inputs are handled, leaving the agent without full expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented, including the food/cosmetic enum with its default. The description's examples (E471, carmine, prawns, whey, alcohol denat) overlap the schema's own examples and add no new semantics; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('explain') and resource ('one ingredient or E-number') and gives concrete example inputs, so the agent knows exactly what it retrieves. It does not, however, differentiate itself from the sibling halalornot_check_ingredients (bulk ingredient list) or halalornot_ask_is_it_halal, so the 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no exclusions, and no alternative named. The description never says to use this for a single ingredient versus check_ingredients for a full product list, nor does it mention what happens if the ingredient is unknown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
halalornot_explain_schoolsHalal or Not: How the four schools differ on foodCRead-onlyIdempotentInspect
Halal or Not. How the four schools differ on food. Answers 'is it halal?' for food, cosmetics, medicines, stocks, funds, crypto, money products and everyday life, showing where the four Sunni schools and the main scholarly bodies agree and where they differ, with the reasoning and halal alt...
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds only that the output includes reasoning and 'halal alt...' (truncated), with no disclosure of format, depth, sourcing, or how the four-school comparison is presented. With annotations carrying the behavioral burden, the description contributes little extra.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description front-loads the comparative purpose but then pads with an undifferentiated list of domains (food, cosmetics, medicines, stocks, funds, crypto, money products) that duplicates the sibling coverage and dilutes focus. It is overlong for a no-parameter explanatory tool and the trailing text is cut off.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero parameters, no output schema and full annotation coverage, the description only needs to pin down the scope of the explanation. It gestures at the content (agreement/difference across schools, reasoning, alternatives) but the overlap with sibling tools and the truncated ending leave the boundary unclear, so it is only marginally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to clarify beyond the absence of inputs, which is consistent with the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The name/title indicate the tool explains how the four Sunni schools differ on food, and the description restates the comparative-scholarly purpose. However, it then claims to 'Answer is it halal? for food, cosmetics, medicines, stocks, funds, crypto...', which overlaps heavily with the sibling halalornot_ask_is_it_halal and blurs rather than sharpens what makes this tool distinct. The result is a vague, broadened purpose rather than a crisp verb+resource scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus the many related siblings (halalornot_ask_is_it_halal, halalornot_explain_ingredient, halalornot_list_rules, mizan_list_standards). No alternatives or exclusion conditions are named, so the agent must infer the use case 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.
halalornot_get_prayer_timesHalal or Not: Today's prayer times for a place, with Ramadan suhoor and iftarCRead-onlyIdempotentInspect
Halal or Not. Today's prayer times for a place, with both Asr times and Ramadan suhoor and iftar. Answers 'is it halal?' for food, cosmetics, medicines, stocks, funds, crypto, money products and everyday life, showing where the four Sunni schools and the main scholarly bodies agree and where they differ, with the reasoning and halal alt...
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude of the place, in decimal degrees. Goes with lon instead of city. | |
| lon | No | Longitude of the place, in decimal degrees. Goes with lat instead of city. | |
| city | No | City name, for example London or Chicago, IL. | |
| date | No | The day, YYYY-MM-DD. Defaults to today. | |
| method | No | Calculation method: isna (North America), mwl (Muslim World League), umm_al_qura, egypt, karachi or moonsighting. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is fully covered. The description adds useful content detail (Asr times, Ramadan suhoor and iftar) beyond the title, but the appended halal-Q&A text is unrelated to a prayer-times lookup and adds noise rather than behavioral clarity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The genuine purpose is front-loaded in the first sentence, but it is followed by a large, off-topic block about halal verification and a trailing fragment cut off mid-word ('with the reasoning and halal alt...'). This is wasted, potentially misleading length rather than earned conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, five all-optional parameters, and rich annotations, the description partly compensates by naming what is returned (prayer times including Asr, suhoor and iftar). But it omits how location is resolved and how a method is chosen, and the unrelated trailing content dilutes completeness for what should be a simple read-only lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, documenting lat/lon pairing, city examples, date defaulting to today, and the method enum values, so the schema carries the burden. The description adds nothing about parameter meaning beyond the vague phrase 'for a place', so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentences state a specific verb and resource: "Today's prayer times for a place, with both Asr times and Ramadan suhoor and iftar." However, the rest of the description pivots to unrelated brand boilerplate about answering 'is it halal?' for food, cosmetics, stocks and crypto, which describes sibling tools like ask_is_it_halal rather than this one, muddying what the tool actually does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no mention of alternatives like mizan tools, and no note that all parameters are optional or that lat/lon pair with each other while city is an alternative. The agent must infer usage entirely from the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
halalornot_list_rulesHalal or Not: The full rulebookBRead-onlyIdempotentInspect
Halal or Not. The full rulebook. Answers 'is it halal?' for food, cosmetics, medicines, stocks, funds, crypto, money products and everyday life, showing where the four Sunni schools and the main scholarly bodies agree and where they differ, with the reasoning and halal alt...
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds useful content context — that it shows where the four Sunni schools and scholarly bodies agree/differ, including reasoning and halal alternatives — but says nothing about return format, size, or pagination for a 0-parameter dump.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The lead ('Halal or Not. The full rulebook.') is front-loaded and clear, but the body is a run-on that crams eight domains plus a multi-school comparison note into one sentence, with the text trailing off. It is informative but not tightly edited.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-param reference tool with no output schema, the description communicates scope but leaves the shape of the response (a list of rules? grouped by topic?) and the boundary with list_topics unexplained. Annotations carry the safety profile, so the gap is moderate rather than severe.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there are no parameter semantics to document; the 100% schema coverage baseline applies. The description does not need to compensate for any parameter gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description conveys a broad reference ('the full rulebook' covering food, cosmetics, stocks, crypto, etc.), but it opens by claiming it 'Answers is it halal?' — which is literally the job of the sibling halalornot_ask_is_it_halal and the various halalornot_check_* tools. It never clarifies how 'list_rules' differs from list_topics or those answer tools, so the resource is described but not cleanly distinguished.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to reach for this tool versus halalornot_ask_is_it_halal, halalornot_list_topics, or halalornot_explain_schools. With eleven same-family siblings, the absence of any routing guidance is a notable gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
halalornot_list_topicsHalal or Not: Every question the rulebook coversCRead-onlyIdempotentInspect
Halal or Not. Every question the rulebook covers. Answers 'is it halal?' for food, cosmetics, medicines, stocks, funds, crypto, money products and everyday life, showing where the four Sunni schools and the main scholarly bodies agree and where they differ, with the reasoning and halal alt...
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Only topics in this area: money, crypto, medicine, food or life. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds content-level context (shows where the four Sunni schools and main scholarly bodies agree/differ, with reasoning), which is genuinely useful. However, the final sentence is cut off mid-word ('halal alt...'), so the behavioral picture is incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first two sentences duplicate the title and each other ('Halal or Not. Every question the rulebook covers.'), and the description terminates mid-sentence with 'halal alt...'. Two of four sentences fail to earn their place, and the structure is not front-loaded on the actual operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should at minimum imply what a call returns (a list of topics/questions, with categories), but it never does. Combined with the truncation and the absence of any usage guidance for a tool that sits among a dozen halal siblings, the definition leaves the agent short of what it needs to invoke this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the sole parameter is a documented enum (money, crypto, medicine, food, life), so the schema carries the burden. The description adds no filtering semantics beyond what the enum already says, which is the expected baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description conveys the domain (halal rulings on food, cosmetics, medicines, stocks, crypto, money products, life) but never clearly states the verb of THIS tool: enumerating the topics/questions the rulebook covers. The title 'Every question the rulebook covers' is the only hint that this is an enumeration tool, and the opening two sentences largely restate the title. An agent can guess the domain but not the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance, and no routing to obvious siblings such as halalornot_ask_is_it_halal, halalornot_list_rules, or the check_* tools. The description never distinguishes itself from those alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
halalornot_screen_stockHalal or Not: Is this stock halal?ARead-onlyIdempotentInspect
Halal or Not. Is this stock halal? Screens a US-listed stock via Mizan: first the business (each standard's excluded industries), then the AAOIFI, Dow Jones Islamic, S&P Shariah and MSCI Islamic debt screens. A company name also works (nvidia, philip morris). Links to halal alternatives in the same industry.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | A US stock ticker, for example AAPL or TSLA. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), so the bar is lower. The description adds real substance: the two-phase methodology, the specific AAOIFI/Dow Jones/S&P/MSCI debt screens applied, and that output links to halal alternatives in the same industry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core question, then details the screening flow and alternative-link behavior in a compact block. Each sentence contributes, though the standards list is dense and slightly packed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining results, and it does so by outlining the screening steps and that alternative recommendations are returned. The main gap is a lack of explicit routing guidance versus sibling screening tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is only one parameter, so the baseline would be 3. The description adds meaning beyond the schema by stating that a company name (nvidia, philip morris) is also accepted, not just the ticker the schema documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it screens a US-listed stock for halal status and lays out the exact screening sequence (business activity, then four named debt standards). This clearly separates it from stock-adjacent siblings like halalornot_check_fund and halalornot_check_crypto.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the stock focus and the note that a company name works, so an agent can infer it is the tool for equities. However, it never explicitly says when to prefer this over mizan_screen_company or halalornot_ask_is_it_halal, nor states exclusions for non-US listings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
halalornot_search_productsHalal or Not: Find products by name and check themARead-onlyIdempotentInspect
Halal or Not. Find products by name and check them. Searches Open Food Facts by name or brand (for example 'Haribo Starmix') and returns up to five matches, each with a verdict, plus a 'say' line for the best match. Where a brand states the source of an ingredient its label leaves unnamed (Haribo: pork gelatine in its standard UK range), that statement decides it and is quoted in brand_statement.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | A product, brand or barcode to look up, for example Haribo Starmix or 5000159484695. | |
| country | No | Open Food Facts country slug, for example united-kingdom, united-states, france. 'world' means no filter. Also picks the Amazon store for halal versions (amazon.co.uk for the UK and Ireland). | united-kingdom |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, open-world and non-destructive behavior, so the bar is lower. The description still adds real value beyond them: it discloses that up to five matches are returned, that each carries a verdict, that a 'say' line exists for the best match, and that brand statements can override an unnamed ingredient source.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The substantive content (search scope, result shape, brand_statement rule) is useful and reasonably front-loaded, but the opening two sentences largely restate the title and name, spending words without adding information. Middle-heavy rather than tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so: match count, verdict field, 'say' line, and brand_statement. Combined with annotations covering safety, an agent has enough to invoke correctly, though sibling routing remains thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both q and country are already documented in the schema, including the barcode example and country slug semantics. The description repeats the 'Haribo Starmix' example but adds nothing about the country parameter or the Amazon-store side effect, so it sits at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: searches Open Food Facts by name or brand and returns products with a verdict. The name/brand vs barcode framing implicitly separates it from halalornot_check_product_by_barcode, though it never names a sibling. An agent can identify what it does but must infer differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage via 'Find products by name and check them' and the name/brand example, but there is no explicit when-to-use or when-not guidance, and the obvious alternative (halalornot_check_product_by_barcode) is not mentioned. Context is present but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobspotter_about_job_spotterJob Spotter: What Job Spotter can do, for job seekers and employersARead-onlyIdempotentInspect
Job Spotter. What Job Spotter can do, for job seekers and employers. The capabilities, the rules (nothing is sent without a yes) and which tool does what. A ready-to-read summary is in say.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive). The description adds genuinely new behavioral context with the consent rule 'nothing is sent without a yes' and the fact that the content is a ready-to-read summary rather than raw data. That consent guarantee is not derivable from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short and front-loads the purpose, but the first sentence largely restates the tool name and title ('Job Spotter. What Job Spotter can do, for job seekers and employers'), spending words without adding information. The closing 'summary is in `say`' is cryptic and unresolved given no `say` parameter exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema overview tool with annotations already declaring safety, the description covers the essentials: what it returns (a summary of capabilities, rules, and tool routing). However, it never states the expected agent behavior (use this to orient before selecting a sibling) and the undefined `say` reference leaves a loose end.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema declares zero parameters, so there is nothing for the description to document and the baseline is 4. The stray reference to `say` is not a declared parameter and adds minor ambiguity rather than useful parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (Job Spotter itself) and states its function: capabilities, rules, and which tool does what. That 'which tool does what' clause is what separates it from the ~25 jobspotter_* action siblings, so an agent can recognize it as the orientation/routing entry point. It falls short of 5 only because 'What Job Spotter can do' is broad phrasing rather than a single precise verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'which tool does what' implies this is the discovery/routing call to make before picking a sibling, but the description never says 'call this first' or names when not to use it. It also references a summary 'in `say`' without explaining what that means, so the usage path is only implied, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobspotter_apply_kitJob Spotter: Everything needed to apply for a jobARead-onlyIdempotentInspect
Job Spotter. Everything needed to apply for a job. For "help me apply for this", "write my cover letter", "what should I say in my application?". Gives what the job asks for, the lines in the CV that prove each skill, what is missing, keywords to use if true, a cover letter outline and common application questions with how to answer them, so a tailored letter and answers can be written. Job Spotter never applies or sends anything. Nothing sent is stored.
| Name | Required | Description | Default |
|---|---|---|---|
| cv | No | The CV as plain text. Optional if titles and skills are given. | |
| id | No | A job id from a search result, copied exactly. Or give job_text. | |
| skills | No | Skills, comma separated. | |
| titles | No | Current and past job titles, comma separated. | |
| schools | No | Universities or schools, comma separated. | |
| job_text | No | The job advert as plain text, when there is no id. | |
| location | No | Where the person lives or wants to work. | |
| education | No | Highest qualification, for example "BSc Economics". | |
| employers | No | Current and past employers, comma separated. | |
| years_experience | No | Years of work experience. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description reinforces and extends this usefully by stating it 'never applies or sends anything' and that nothing sent is stored, which tells the agent there are no side effects or persistence.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single dense paragraph that is reasonably front-loaded, but the opening 'Job Spotter. Everything needed to apply for a job.' duplicates the tool name and title before adding new information. The long output enumeration could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing what is returned, and it does so in detail (requirements, proof lines, gaps, keywords, letter outline, application questions). Combined with the non-mutation statement, an agent has enough to call it correctly, though parameter usage remains fully delegated to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across 10 parameters, so the schema fully documents each input (cv, id, job_text, skills, etc.). The description only alludes loosely to CV/skills inputs and adds no formatting, pairing, or fallback guidance beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific capability set (job requirements, CV proof lines, gaps, keywords, cover letter outline, application Q&A) rather than restating the title, so the agent can tell this is a full application-preparation kit. It stops short of differentiating itself from close siblings like jobspotter_match_cv or jobspotter_interview_prep, which overlap in scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Example user intents ('help me apply for this', 'write my cover letter', 'what should I say in my application?') give clear triggering contexts. There is no statement of when not to use it or which sibling to prefer for narrower tasks such as matching a CV or prepping an interview.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobspotter_check_job_linkJob Spotter: Check a job link someone pastesARead-onlyIdempotentInspect
Job Spotter. Check a job link someone pastes. For "is this job real?", "what does this one pay?" with a link. Reads the advert from the employer's job board (Greenhouse, Lever, SmartRecruiters, Ashby and most career pages) and gives the title, company, place, pay, when it was posted, whether it looks like a live, open job, visa sponsorship and a short summary. LinkedIn, Indeed and Glassdoor pages can't be read; the advert text can be pasted into the CV match instead.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The full link to the job advert. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive. The description adds valuable behavior beyond annotations: supported sources (Greenhouse, Lever, etc.), unsupported sources, and the exact output fields returned. It doesn't cover rate limits or error handling, but for a read tool this is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose and usage, and the detailed output list and limitation are informative. However, the opening 'Job Spotter. Check a job link someone pastes.' repeats the title and could be trimmed; otherwise efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description carries the burden of return values and does so by listing the fields. Annotations cover safety, and the description adds source coverage and limitations. It is complete enough for an agent to invoke correctly, though it omits error scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single url parameter, so the schema already documents the parameter. The description adds 'with a link' but no syntax or format details beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('check') and resource ('job link'), and elaborates that it reads the advert from employer job boards and returns title, company, place, pay, etc. It distinguishes itself from search-oriented siblings by focusing on a pasted link and from CV match for unreadable pages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use scenarios ('is this job real?', 'what does this one pay?' with a link) and a when-not with alternative: LinkedIn/Indeed/Glassdoor pages can't be read, so paste advert text into CV match instead. This provides clear routing for the main edge case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobspotter_check_salaryJob Spotter: What a job pays in a placeARead-onlyIdempotentInspect
Job Spotter. What a job pays in a place. For "what does a nurse earn in Birmingham", "average salary for a data analyst in Austin", "is £35k good for a junior developer in London". Gives the typical yearly range (middle half of current adverts), the middle figure and the average advertised, from current job adverts. Advertised pay, not offers.
| Name | Required | Description | Default |
|---|---|---|---|
| what | Yes | Job title or field, for example "nurse" or "software engineer". | |
| where | No | A city, region, postcode or country, for example Birmingham, Austin, TX or remote. | |
| country | No | US or UK when the place exists in both, or a country by name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, open-world, idempotent, and non-destructive behavior. The description adds useful context about output composition (typical yearly range, middle figure, average advertised) and source (current job adverts), plus the key distinction that figures are advertised pay rather than offers. It stops short of explaining data freshness or geographic coverage limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads the core purpose before examples and output details. The brand repetition and fragmented sentences are minor inefficiencies, but most content earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only lookup with rich annotations and full schema coverage, the description supplies enough output semantics and source context despite having no output schema. An agent can call it correctly without missing critical information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is already documented. The description's examples loosely map to the what and where parameters, but it adds no syntax, constraints, or meaning beyond the schema, and the country parameter is not mentioned at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and outcome: what a job pays in a place, with clear examples. It distinguishes itself from siblings through the salary-lookup focus, even without naming alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The example queries clearly imply when to use this tool, such as checking pay for a role in a location. However, it does not explicitly name alternatives like compare_jobs or search_jobs, nor does it state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobspotter_check_visa_sponsorJob Spotter: Is this UK employer a licensed visa sponsor?ARead-onlyIdempotentInspect
Job Spotter. Is this UK employer a licensed visa sponsor? For "does Deliveroo sponsor visas?", "can this company sponsor a Skilled Worker visa?". Looks the employer up in the UK Home Office register of licensed sponsors (workers), with its town and the visa routes it is licensed for, and the register date. A licence means the employer can sponsor; each job still has to qualify. Company names on the register are legal names, so try the legal name if the brand name is not found. For US jobs, the visa_sponsorship field on search results comes from the advert. Register data contains public sector information licensed under the Open Government Licence v3.0.
| Name | Required | Description | Default |
|---|---|---|---|
| company | Yes | The employer, for example "Tesco" or its legal name "Tesco Stores Limited". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already declaring readOnly/openWorld/idempotent/non-destructive, the description still adds real behavioral context: the data source (Home Office register), what is returned (town, licensed visa routes, register date), and the important caveat that a licence lets an employer sponsor but each job must still qualify. It omits what a no-match 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the question it answers, then progressively the data source, caveats, and fallback strategy. The closing OGL attribution sentence is boilerplate but short and legally required; everything else earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description correctly supplies the return shape (town, licensed routes, register date) plus the licence-vs-job nuance. Only minor gaps remain, such as behavior on an unknown employer or name-matching ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single company parameter, so baseline is 3, but the description adds genuinely useful guidance beyond the schema: register names are legal names, so retry with the legal name if the brand name fails. That is actionable lookup strategy, not repetition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (looks up employer in the UK Home Office register of licensed sponsors) and frames it around the exact user question it answers. This is clearly distinguishable from data-provider siblings like jobspotter_search_jobs or jobspotter_company_lookup, which do not touch the sponsor register.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Example user phrasings ('does Deliveroo sponsor visas?') make the triggering intent explicit, and it routes US-job questions away to the visa_sponsorship field on search results. It does not name a sibling tool for that alternative case, so it stops just short of a full when/when-not map.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobspotter_company_lookupJob Spotter: Facts about an employer and its hiringARead-onlyIdempotentInspect
Job Spotter. Facts about an employer and its hiring. For "tell me about Monzo as an employer", "is Tesco hiring?", "how big is this company?". Gives what the company does, when it was founded, staff numbers, headquarters and website (from Wikidata), UK company records when available (Companies House, Open Government Licence), how many jobs it has open now with examples, and ready searches for people there. Staff reviews are not included. For US employers it adds what they offered on US work visa filings.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The company name, for example "Monzo" or "Tesco". | |
| where | No | Optional place to narrow its open jobs, for example London. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, non-destructive. The description goes further by disclosing data provenance (Wikidata, Companies House, Open Government Licence), the exact content returned, and the US-visa-filings extension. It stops short of noting rate limits, freshness, or failure modes when a company is not found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and example queries, then a dense enumeration of returned fields. It is longer than minimal but each clause earns its place by describing scope, sources, and exclusions; only the trailing US-visa sentence feels slightly appended.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must convey return values, and it does so thoroughly (company profile, founding, staff numbers, HQ, website, UK company records, current open jobs with examples, US visa filings). Combined with annotations covering the safety profile, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the two parameters are self-documented (name with examples, where for narrowing jobs), so the baseline 3 applies. The description hints at job narrowing via 'how many jobs it has open now' but adds no syntax or format beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (employer + hiring facts) via a clear lookup verb, and anchors it with concrete example queries ('tell me about Monzo as an employer'). It distinguishes itself from siblings by naming what it does not cover ('Staff reviews are not included') and by scoping to company-level facts rather than the people/job-specific siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit trigger phrases that map directly to user intents, and adds a negative boundary ('staff reviews are not included'). It does not name alternative sibling tools, so routing is implied rather than spelled out, but the context is clear enough to select it confidently.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobspotter_compare_jobsJob Spotter: Compare jobs side by sideARead-onlyIdempotentInspect
Job Spotter. Compare jobs side by side. For "compare the first three", "which of these pays best?". Takes two to five ids from search results and gives each job's pay (and yearly equivalent), work type, job type, how new it is, direct employer or agency, visa sponsorship and ghost-job check, plus which is best on pay, newest and remote.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Two to five job ids from search results, comma separated, copied exactly. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is covered. The description adds behavior the annotations do not: it caps input at two-to-five ids, requires ids sourced from search results, and discloses the derived comparison verdicts (best pay, newest, remote).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose and the routing examples, then the return summary. The trailing field list is somewhat long but each item (pay, work type, visa sponsorship, ghost-job check) is informative, so little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining returns and does so explicitly, plus input constraints and comparison verdicts. An agent has everything needed to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single param, so the baseline is 3. The description nonetheless adds meaning beyond the schema: the ids must originate from search results and are bounded to two-to-five, reinforcing the 'copied exactly' provenance the schema only hints at.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Compare jobs side by side') and enumerates exactly what the comparison yields (pay, work type, visa sponsorship, ghost-job check, best-on metrics). This clearly separates it from sibling jobspotter_get_job (single job) and jobspotter_similar_jobs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Quoted user phrasings ('compare the first three', 'which of these pays best?') and the 'two to five ids from search results' constraint give clear activation context. It stops short of naming an explicit alternative or a when-not-to-use case, so it is strong but not fully prescriptive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobspotter_connection_scoreJob Spotter: How relevant a connection is to your goalARead-onlyIdempotentInspect
Job Spotter. How relevant a connection is to your goal. For "should I connect with this person?", "is this contact worth messaging about my job search?". Scores how relevant a connection is to the user's goal, out of 100, from two profiles the user provides (it rates the fit with the goal, not the person), the same way every time: works where they want to work, recruiter or likely hiring manager for the goal, same school, same past employer, shared skills, nearby, more senior. Gives the reasons, a short verdict and an outline for a short note. Profiles can be pasted text (for example from LinkedIn's Save to PDF). Nothing sent is stored.
| Name | Required | Description | Default |
|---|---|---|---|
| me | Yes | A profile: text, and or fields title, company, employers, schools, location, skills. | |
| goal | No | What the person is aiming for, for example "data analyst at Monzo". | |
| them | Yes | A profile: text, and or fields title, company, employers, schools, location, skills. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world. The description adds value beyond them by disclosing determinism ('the same way every time'), a privacy guarantee ('Nothing sent is stored'), and the shape of the response (reasons, short verdict, note outline) despite no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, but the middle is a dense run-on stacking parentheticals and a seven-item factor list, plus it partly restates the name and title. It is understandable but not tightly edited.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully sketches the return (reasons, verdict, note outline), and it covers privacy and determinism. The nested two-object input is referenced but the description leans on the schema for the field-level detail, which is acceptable given full schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the me/them profile fields and the goal. The description adds only marginal meaning — that profiles may be pasted free text (e.g., LinkedIn Save to PDF) and that two profiles are provided — so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — it scores how relevant a connection is to the user's goal — and adds the output scale (out of 100) and the exact inputs (two user-supplied profiles). It also explicitly disambiguates scope: 'it rates the fit with the goal, not the person.' An agent can distinguish this from find_people or referral_note without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The opening quotes the user questions it answers ('should I connect with this person?', 'is this contact worth messaging about my job search?'), which gives clear usage context. It does not explicitly name an alternative sibling (e.g., referral_note for actually writing the note), so it stops short of full when-not/alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobspotter_cover_letterJob Spotter: Draft a cover letter and application answersARead-onlyIdempotentInspect
Job Spotter. Draft a cover letter and application answers. For "write my cover letter for this job" or "help me answer these application questions". Builds a first draft only from the person's own CV lines and the advert: the strongest matching achievements, the skills the job asks for in the CV's own words, an honest gap line, and draft answers to the form's questions. Anything only the person can know is left as a [bracketed] prompt. Job Spotter never applies or sends anything, and nothing sent is stored.
| Name | Required | Description | Default |
|---|---|---|---|
| cv | No | The CV as plain text. Optional if titles and skills are given. | |
| id | No | A job id from a search result, copied exactly. Or give job_text. | |
| skills | No | Skills, comma separated. | |
| titles | No | Current and past job titles, comma separated. | |
| company | No | The employer's name, when the advert is pasted as job_text. | |
| schools | No | Universities or schools, comma separated. | |
| job_text | No | The job advert as plain text, when there is no id. | |
| location | No | Where the person lives or wants to work. | |
| education | No | Highest qualification, for example "BSc Economics". | |
| employers | No | Current and past employers, comma separated. | |
| questions | No | Application form questions to draft answers for, one per line. Common questions are used if left out. | |
| your_name | No | The person's name, to sign the letter. | |
| why_company | No | One specific reason they want this employer, in their words. Left as a gap to fill in if not given. | |
| availability | No | When they could start, for example "I can start in May". | |
| years_experience | No | Years of work experience. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/non-destructive, and the description adds genuinely useful behavior: first-draft-only output, gap lines left as bracketed prompts, and that it never applies or sends and stores nothing sent. No mention of output shape or any limits, so it stops short of exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose, then trigger phrases, the draft mechanism, and the safety note in a tight few sentences. Slightly dense but every clause carries information; nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-param, all-optional drafting tool with no output schema and safety annotations, the description covers what is produced, how unknowns are handled, and the send/store boundary. What the returned letter actually looks like is not described, a minor gap given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with 15 optional params, so the schema already documents each field precisely. The description references concepts behind the params (CV lines, the advert, the gap line, questions) but adds no syntax or format guidance beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Draft a cover letter and application answers") and adds unique scope detail: built only from the person's CV lines and the advert, with gaps left as bracketed prompts. An agent can distinguish this drafting tool from siblings like jobspotter_apply_kit or jobspotter_match_cv without opening their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete trigger phrasing ("write my cover letter for this job", "help me answer these application questions"), but names no alternative sibling or an explicit when-not-to-use condition. Context is clear yet routing between it and apply_kit/match_cv 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.
jobspotter_employer_reply_rateJob Spotter: How often an employer replies to applicationsARead-onlyIdempotentInspect
Job Spotter. How often an employer replies to applications. For "do they actually reply?". From Job Spotter users who track their applications: the share of applications that got any answer (interview, offer or rejection) within the time tracked, and the usual wait. Shown only from 5 tracked applications, so nobody can be singled out.
| Name | Required | Description | Default |
|---|---|---|---|
| company | Yes | The employer, for example "Monzo". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/non-destructive, so safety needs no repetition. The description adds genuinely new behavioral context: the data source (Job Spotter users who track applications), the operational definition of 'answer' (interview, offer or rejection), the inclusion of a wait-time measure, and a disclosure threshold of 5 tracked applications that suppresses small samples.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Compact and front-loaded: the metric is stated first, then the user question it answers, then the data provenance and caveat. The opening repeats the title verbatim, which is mild waste, but every remaining clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, no-output-schema tool this covers what an agent needs: what the number means, its source, the wait-time companion metric, and the 5-application disclosure floor. It stops short of saying what is returned below that floor (empty result vs. explicit suppression), which is the one remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One required parameter with 100% schema description coverage, so the baseline is 3. The description says nothing about the `company` argument beyond what the schema already documents (the example 'Monzo'), giving no extra detail on matching behavior or name format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific metric on a specific resource: the share of applications an employer answered and the usual wait time, sourced from Job Spotter user data. An agent can tell what it returns without opening the schema. However it never distinguishes itself from the closest sibling, jobspotter_company_lookup, which also takes a company.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The line 'For "do they actually reply?"' frames the user intent (assessing responsiveness after applying) but is the only usage cue. There is no explicit when-not guidance and no routing to alternatives such as jobspotter_company_lookup or jobspotter_connection_score for related employer questions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobspotter_fair_hiring_checkJob Spotter: Check an employer against the fair hiring badgeARead-onlyIdempotentInspect
Job Spotter. Check an employer against the fair hiring badge. For "is this employer fair to applicants?". Four checks from what the employer does: shows pay in its adverts on Job Spotter, replies to tracked applications, hires through scored consent-first introductions, and (UK employers with 250 or more staff) reports its gender pay gap on time. Each check comes with its figures; the badge is earned when every check with data passes and at least two have data. Includes a badge image link.
| Name | Required | Description | Default |
|---|---|---|---|
| company | Yes | The employer, for example "Greggs". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the bar is lower. The description adds genuine behavioral value: it lists what the four checks evaluate, states the badge is earned only when every check with data passes and at least two have data, and notes a badge image link is included.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, then the user question, then the checks. Efficient overall, though the leading 'Job Spotter.' duplicates the name/title and the stacked clauses about the four checks are dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only lookup with no output schema, the description adequately explains what a caller gets back: per-check figures, the badge pass/fail logic, and an image link. Minor gap is that no explicit alternative-tool guidance is given, but the core invocation context is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter exists with 100% schema description coverage, so the schema already documents 'company' with an example. The description adds no extra syntax or formatting guidance for the parameter, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Check an employer against the fair hiring badge') and frames it with the user question 'is this employer fair to applicants?'. It enumerates the four checks and how the badge is earned, so an agent can distinguish it from siblings like employer_reply_rate or company_lookup, which each cover a single facet.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear context for use via the quoted user question, which maps intent to this tool well. However, it never names alternatives or when-not-to-use conditions, e.g. that employer_reply_rate or check_salary isolate one of the checks, so routing among near-siblings is left partly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobspotter_find_peopleJob Spotter: People worth contacting at a companyARead-onlyIdempotentInspect
Job Spotter. People worth contacting at a company. For "who should I contact at Monzo about data jobs?", "find the hiring manager". Gives the people who posted the company's hiring ads publicly (they asked applicants to get in touch) and ready LinkedIn and Google searches that open the person's own connections there, its recruiters, likely hiring managers for the role, people in the role (for a referral) and alumni of a school. Nothing is read from LinkedIn and nothing is gathered about anyone.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | The role, for example "data analyst". | |
| where | No | The city, for example London. | |
| school | No | A university or school to look for alumni from. | |
| company | Yes | The company, for example "Monzo". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, non-destructive behavior, so the bar is lower. The description adds genuine value on top: it discloses that results are ready LinkedIn/Google searches, that subjects posted hiring ads publicly, and that nothing is read from LinkedIn or gathered about anyone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The critical information (what it returns and the no-scraping disclosure) is front-loaded, and every clause about returned artifact types earns its place. It opens by echoing the title ('Job Spotter. People worth contacting at a company.'), which is mildly redundant, and the final sentence is a long run-on list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only discovery tool with no output schema, the description fully covers what gets returned (people, recruiters, hiring managers, in-role contacts, alumni, plus ready searches) and the privacy model. Combined with complete parameter documentation and annotations, nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters with matching examples. The description's 'Monzo about data jobs' example only restates what the schema fields already say, adding no new syntax or format detail. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource: finding people worth contacting at a company, with example queries anchoring the intent. It is clearly distinct from generic job-search siblings, though it does not sharply separate itself from near-neighbors like jobspotter_connection_score or jobspotter_hiring_posts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The example prompts ("who should I contact at Monzo about data jobs?", "find the hiring manager") make the triggering situations concrete and easy to match. However, it names no alternative tool and gives no explicit when-not-to-use guidance, which would be needed for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobspotter_get_jobJob Spotter: Details for one job from a search resultARead-onlyIdempotentInspect
Job Spotter. Details for one job from a search result. For when the user asks about one of the results, for example "tell me more about the second one" or "what's the apply link for the Uber job?". Takes the id from a search_jobs result exactly as given; ids carry what is needed, so they keep working later. NHS Jobs and Teaching Vacancies results include the closing date.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The id from a search_jobs result, copied exactly, for example muse-22049500, remotive-2091141 or nhsjobs-C9413-26-0725. Some ids are longer, with a ~ and a code after it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds value beyond that: ids are stable ('they keep working later'), must be copied exactly, and NHS Jobs/Teaching Vacancies results carry a closing date. This is genuine behavioral context, not a restatement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose in the first sentence and every subsequent sentence adds a distinct piece of information (triggers, id provenance, source-specific fields). The opening sentence duplicates the title, which is minor redundancy but not bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries some burden for return values; it discloses one source-specific field (closing date) but not the general shape of a job detail. For a single-parameter lookup tool with full annotation coverage, this is nearly complete, with only minor gaps in return-value description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the id format is already documented, giving a baseline of 3. The description adds meaning beyond the schema by stating the id must come from a search_jobs result and that ids remain valid later, clarifying provenance and persistence.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Details for one job from a search result') and scopes it to a single result, distinguishing it from the sibling jobspotter_search_jobs. An agent can tell it is a detail-fetch, not a search, without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it ('For when the user asks about one of the results') and provides two concrete trigger examples. It also routes the agent to the source of the id (a search_jobs result). It stops short of naming a when-not condition, but for a pure detail-fetcher this is clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobspotter_hiring_postsJob Spotter: Posts from people saying they're hiringARead-onlyIdempotentInspect
Job Spotter. Posts from people saying they're hiring. For "who's posting that they're hiring React developers?", "any startups hiring remote designers?". Public posts from people saying they're hiring, from Hacker News (the monthly Who is hiring? thread), Mastodon and Bluesky, newest first, each with a link to the post. The person posting is often the hiring manager. Also gives a ready search link for X.
| Name | Required | Description | Default |
|---|---|---|---|
| what | No | Job title or field, for example "nurse" or "software engineer". | |
| limit | No | How many posts, 1 to 20. Default 10. | |
| where | No | A city, region, postcode or country, for example Birmingham, Austin, TX or remote. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered. The description adds real behavioral context beyond that: results are newest-first, each carries a link to the original post, the poster is often the hiring manager, and an extra X search link is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core scope and the source list, and every clause carries information. It is mildly repetitive, restating 'posts from people saying they're hiring' from the title at the start and again mid-paragraph.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity, read-only, 3-optional-param tool with no output schema, the description covers sources, ordering, link presence and the extra X search link. It does not state that all parameters are optional (i.e. calling with no arguments returns the newest hiring posts), which is the one gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so what/where/limit are already fully documented in the schema. The description adds only loose semantic color (free-text field/city examples overlap with the schema), so this sits at the baseline for a schema that does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete resource ('public posts from people saying they're hiring') and its sources (Hacker News Who-is-hiring thread, Mastodon, Bluesky), which lets an agent separate it from generic job-board tools like search_jobs. However it never explicitly distinguishes itself from the close sibling jobspotter_whats_hiring, leaving the agent to 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete usage context through example queries ('who's posting that they're hiring React developers?', 'any startups hiring remote designers?'), which clearly frames the intended request shape. It stops short of when-not guidance or naming alternatives such as search_jobs/whats_hiring.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobspotter_interview_practiceJob Spotter: Practise an interview, one question at a timeARead-onlyIdempotentInspect
Job Spotter. Practise an interview, one question at a time. For "practise an interview with me" or "how was that answer?". Send the role to get the first question; send the question and the person's answer to get a score out of 10 with what went well, one thing to fix and the next question. Scored by fixed rules, the same for everyone: structure (situation, task, action, result), what the person did themselves, a concrete result, length and the question's own words. It scores the answer, never the person, and nothing is stored.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | Which practice question to ask, from 0. The reply gives next_n. | |
| role | No | The job being interviewed for, for example "staff nurse". | |
| answer | No | The person's answer, as they would say it. Leave out to get the next question. | |
| question | No | The question that was answered, copied from the last reply. Leave out to get a question. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, but the description adds real value beyond them: the answer is scored out of 10 by fixed rules (STAR structure, personal contribution, concrete result, length, using the question's words), the person is never scored, and nothing is stored. The return shape ('what went well, one thing to fix and the next question') is also disclosed, which is helpful given there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and usage triggers are front-loaded and almost every sentence carries information. The opening 'Job Spotter. Practise an interview, one question at a time.' repeats the title verbatim, which is minor waste, and the scoring-criteria sentence is dense but justified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-turn, stateful tool with no output schema, the description does the essential work: it explains the two call modes, the scoring rubric, the output contents, and non-persistence. The remaining gap is disambiguation from jobspotter_interview_prep, which an agent selecting among Job Spotter tools would want.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description goes beyond it by explaining the stateful relationship between parameters (role alone yields the first question; question+answer yields a score). The 'n' parameter and its next_n contract are only covered in the schema, not the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Practise an interview, one question at a time') and even explains the turn-taking mechanics: send role to get the first question, send question+answer to get a score. It never mentions the close sibling jobspotter_interview_prep, so the agent must guess how these two differ, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete trigger utterances ('practise an interview with me', 'how was that answer?') that map cleanly onto the two modes, and the role/question+answer flow reads as an implicit when-to-use rule. There is no explicit when-not and no routing away from jobspotter_interview_prep, so it stops at clear-context-without-exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobspotter_interview_prepJob Spotter: Interview questions and practiceARead-onlyIdempotentInspect
Job Spotter. Interview questions and practice. For "help me prepare for my interview", "what will they ask a staff nurse?", "do a mock interview". Gives likely role questions, questions drawn from the advert, behavioural questions, good questions to ask them, tips for one-way video and AI interviews, and an order for a practice interview with timings. Takes a job id from a search, or the role and company.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | A job id from a search result, copied exactly. Optional if what is given. | |
| what | No | The role, for example "staff nurse" or "data analyst". | |
| company | No | The company, for example "NHS" or "Monzo". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds non-annotation context by spelling out the shape of the returned content (six categories of output plus a timed practice order), which matters because there is no output schema. It leaves the 'mock interview' phrasing slightly ambiguous — it returns an ordered plan with timings rather than clearly running an interactive simulation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then usage triggers, then output inventory, then inputs — a sensible order with no filler sentences. The trigger-phrase list is long enough to push the description toward the upper end of acceptable length, but each item earns its place for routing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully covers what is returned, and it covers how to supply input either way (job id or role+company). All three parameters are optional, so nothing states what happens if the call arrives with no arguments at all — a small but real gap for a zero-required-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already states that id is optional when 'what' is supplied, so the description's line "Takes a job id from a search, or the role and company" largely restates structured information. Baseline 3 applies; no additional syntax, format, or conflict-resolution guidance is offered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (generate interview questions and a practice plan) and then enumerates the concrete deliverables: role questions, advert-derived questions, behavioural questions, questions to ask the employer, one-way video/AI interview tips, and a timed practice order. This is clearly distinguishable from every jobspotter sibling, none of which produces interview preparation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit trigger utterances ("help me prepare for my interview", "what will they ask a staff nurse?", "do a mock interview"), which tells the agent exactly when to route here. It does not state when NOT to use it or point to a neighbouring tool (e.g. jobspotter_apply_kit), so it stops short of a full when/when-not statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobspotter_job_demandJob Spotter: What job seekers are searching for, by role and placeARead-onlyIdempotentInspect
Job Spotter. What job seekers are searching for, by role and place. For "how many people are looking for care jobs in Leeds?" or "what are people searching for in Bristol?". Anonymous weekly counts of searches on Job Spotter by role words and place over the last 8 weeks, with the listings people found per search. Leave out what to get the most searched roles in a place (with a rising or falling trend), or where to get the places a role is searched most. For a role, it also gives the easiest places to find openings: where each search finds the most listings. A group is shown only when it holds 10 or more searches.
| Name | Required | Description | Default |
|---|---|---|---|
| what | No | The role, for example "care assistant". | |
| where | No | A town or city, or "remote". | |
| country | No | US or UK. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, open world). The description adds real behavioral context beyond that: the data is anonymous, bounded to the last 8 weeks, and small groups are suppressed below 10 searches. It does not describe pagination or exact return shape, keeping it out of 5 territory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and the two invocation modes are front-loaded in a compact paragraph, and every sentence carries information. It is slightly dense with the title restated at the start, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must carry return-value meaning, and it does: counts, rising/falling trends, listings per search, and easiest places to find openings. The 10-search suppression rule is an important caveat. Only units/dates and the response shape remain unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description genuinely adds meaning by explaining what happens when 'what' or 'where' are omitted — a behavioral consequence of the optional parameters that the schema does not convey. The 'what'/'where' string semantics themselves are left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: anonymous weekly search counts on Job Spotter, broken down by role word and place, over an 8-week window, with listings found per search. This is clearly distinguishable from sibling job-search tools like jobspotter_search_jobs or jobspotter_whats_hiring, which deal with listings rather than demand data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Concrete example questions ("how many people are looking for care jobs in Leeds?") anchor when to reach for this tool, and the description explains the two invocation modes: omit 'what' for top roles in a place, omit 'where' for top places for a role. It does not name any sibling alternative or state when NOT to use it, 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.
jobspotter_jobs_for_meJob Spotter: The best current jobs for a CVARead-onlyIdempotentInspect
Job Spotter. The best current jobs for a CV. For "find jobs that fit my CV", "what jobs should I apply for?". Searches current jobs for the person's target roles (or past titles) and place, and ranks them by match score, with matched and missing skills for each. Nothing sent is stored. The score is a fixed formula, not an AI judgement; the person decides what to apply for.
| Name | Required | Description | Default |
|---|---|---|---|
| cv | No | The CV as plain text. Optional if titles and skills are given. | |
| limit | No | How many jobs, 1 to 10. | |
| where | No | Where to look, for example London or remote. | |
| skills | No | Skills, comma separated. | |
| titles | No | Current and past job titles, comma separated. | |
| schools | No | Universities or schools, comma separated. | |
| location | No | Where the person lives or wants to work. | |
| education | No | Highest qualification, for example "BSc Economics". | |
| employers | No | Current and past employers, comma separated. | |
| target_roles | No | Roles to look for, comma separated. Defaults to the CV's titles. | |
| years_experience | No | Years of work experience. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, non-destructive and open-world behavior. The description adds genuinely new context beyond that: 'Nothing sent is stored' (privacy), 'the score is a fixed formula, not an AI judgement' (how ranking is derived), and the output includes matched and missing skills per job. That is substantive behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The body is dense and front-loaded, with the search-and-rank behavior stated before the privacy and scoring caveats. The opening 'Job Spotter. The best current jobs for a CV.' merely restates the name and title, which is the one piece of dead weight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does describe the payload (ranked jobs with matched and missing skills). It also notes nothing is stored and how the score is computed. All 11 parameters are optional, which the description's 'or past titles' framing partly explains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds real meaning on top: it explains that the tool works from target roles 'or past titles', documenting the fallback relationship between target_roles, titles, and the optional cv field that the schema states only in isolation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it 'searches current jobs for the person's target roles (or past titles) and place, and ranks them by match score.' That is concrete enough to distinguish the function. However, it never distinguishes itself from close siblings like jobspotter_search_jobs, jobspotter_match_cv, or jobspotter_whats_hiring, whose functions overlap heavily with this one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Trigger phrases ('for "find jobs that fit my CV"', '"what jobs should I apply for?"') give a clear implied context for when to reach for this tool. But with several near-identical jobspotter siblings in the catalog, no explicit when-not or 'use X instead' routing is given, leaving the agent to guess between jobs_for_me, search_jobs, and match_cv.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobspotter_match_cvJob Spotter: How well a CV matches a jobARead-onlyIdempotentInspect
Job Spotter. How well a CV matches a job. For "how well do I match this job?", "should I apply?", "what's missing from my CV for this?". Scores a CV or profile against a job from a search (or pasted advert) out of 100, the same way every time: skills 45, role 20, experience 15, education 10, place 10. Gives matched and missing skills, strengths, gaps and keywords to add if true. Nothing sent is stored. The score is a fixed formula, not an AI judgement; the person decides what to apply for.
| Name | Required | Description | Default |
|---|---|---|---|
| cv | No | The CV as plain text. Optional if titles and skills are given. | |
| id | No | A job id from a search result, copied exactly. Or give job_text. | |
| skills | No | Skills, comma separated. | |
| titles | No | Current and past job titles, comma separated. | |
| schools | No | Universities or schools, comma separated. | |
| job_text | No | The job advert as plain text, when there is no id. | |
| location | No | Where the person lives or wants to work. | |
| education | No | Highest qualification, for example "BSc Economics". | |
| employers | No | Current and past employers, comma separated. | |
| years_experience | No | Years of work experience. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld, and the description adds genuinely new context: 'Nothing sent is stored' (privacy), 'The score is a fixed formula, not an AI judgement' (determinism), and the exact weighting breakdown. This is exactly the behavioral detail annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and trigger phrases, followed by the scoring model, output contents, and privacy note in a tight sequence. Dense but nearly every sentence carries information; only slight trimming would be possible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing returns and does so ('matched and missing skills, strengths, gaps and keywords to add'). Combined with the scoring formula and privacy assurance, an agent has everything needed to call and interpret this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with all ten parameters individually documented, so the baseline is 3. The description only loosely maps inputs to the 'from a search (or pasted advert)' phrasing, adding marginal semantic value beyond the schema's own id/job_text descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Scores a CV or profile against a job') and reinforces it with concrete user phrasings ('should I apply?', 'what's missing from my CV?'). An agent can distinguish this from sibling tools like compare_jobs (job-vs-job) or connection_score without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear trigger conditions via quoted user intents and explains the two input paths ('a job from a search (or pasted advert)'). However, it never explicitly names or excludes a sibling alternative (e.g. compare_jobs, jobs_for_me), so routing guidance is strong but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobspotter_networking_planJob Spotter: Who to reach out to, from a CVARead-onlyIdempotentInspect
Job Spotter. Who to reach out to, from a CV. For "who should I network with?", "how do I get a job as a data scientist without applying cold?". From a CV or a few details and the role wanted, gives the kinds of people worth contacting in order (hiring managers at the employers hiring most for the role, recruiters who place it, alumni, former colleagues, people who made the same move, community organisers), with ready searches, the employers hiring most now and named people from public posts. Nothing sent is stored.
| Name | Required | Description | Default |
|---|---|---|---|
| cv | No | The CV as plain text. Optional if titles and skills are given. | |
| where | No | Where, for example London. | |
| school | No | A university or school, for alumni. | |
| skills | No | Skills, comma separated. | |
| titles | No | Current and past job titles, comma separated. | |
| schools | No | Universities or schools, comma separated. | |
| location | No | Where the person lives or wants to work. | |
| education | No | Highest qualification, for example "BSc Economics". | |
| employers | No | Current and past employers, comma separated. | |
| goal_role | Yes | The job the person is aiming for, for example "data scientist". | |
| years_experience | No | Years of work experience. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds meaningful context beyond the annotations: it specifies the structure of what comes back (ranked contact categories, ready searches, current top employers, named people from public posts) and discloses 'Nothing sent is stored,' which is useful privacy information not present in the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded, but the long parenthetical list of contact types and the run-on final sentence make it denser than it needs to be. Every element is relevant, yet the middle listing could be tightened without losing information, so it reads as adequate rather than crisp.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter tool with full schema coverage and no output schema, the description covers the essentials an agent needs: what it produces, the shape of the result (ranked categories, searches, employers, named people), and a privacy note. The main omission is routing guidance against the many sibling jobspotter tools, which keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every one of the 11 parameters is already documented in the schema, which sets the baseline at 3. The description only restates the input at a high level ('from a CV or a few details and the role wanted') and adds no syntax, format, or required-vs-optional nuance beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it produces a ranked list of who to network with, generated from a CV plus the target role. It even enumerates the kinds of contacts it returns (hiring managers, recruiters, alumni, etc.), which makes the output concrete. It stops short of naming or contrasting with close siblings such as jobspotter_find_people or jobspotter_hiring_posts, so differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The quoted example questions ('who should I network with?', 'how do I get a job as a data scientist without applying cold?') convey the intended situation and give real context for when to call it. However, there is no explicit when-not guidance and no routing to alternatives like find_people, so an agent must infer the boundary itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobspotter_referral_noteJob Spotter: A ready note asking someone for a referralARead-onlyIdempotentInspect
Job Spotter. A ready note asking someone for a referral. For "write to Amy at Monzo asking for a referral". Gives a LinkedIn connection note under 300 characters and a longer email version that asks for a referral or a short chat, built from how they know each other and why the job fits. Nothing is sent or stored.
| Name | Required | Description | Default |
|---|---|---|---|
| ask | No | Ask: referral (default) or chat. | |
| company | Yes | The company. | |
| why_fit | No | One line on why the job fits. | |
| job_link | No | Link to the job. | |
| job_title | Yes | The job. | |
| your_name | No | The sender. | |
| their_name | No | The person being asked. | |
| how_you_know | No | For example "We worked together at Sunrise". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: 'Nothing is sent or stored' clarifies that no message is delivered, and it specifies the output artifacts (300-char note plus a longer email).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then the example, then output detail; every sentence adds something. Slight redundancy between the title line, the 'Job Spotter' opener, and the restatement of the purpose keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the work of describing the return values (two note variants with a character limit). All eight parameters are covered by the schema, and only two are required. It is nearly complete; it omits any mention of differing quality or edge behavior but nothing an agent needs to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all eight parameters, establishing a 3 baseline. The description adds marginal meaning by tying how_you_know and why_fit to the generated content ('built from how they know each other and why the job fits') and implying the ask parameter via 'referral or a short chat', but not enough to exceed baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: it produces a referral note in two forms (a LinkedIn connection note under 300 characters and a longer email version). The trigger example ('write to Amy at Monzo asking for a referral') makes the purpose concrete. It does not, however, differentiate itself from siblings like jobspotter_networking_plan or jobspotter_apply_kit, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear usage context via the quoted example ('write to Amy at Monzo asking for a referral'), which is exactly the situation that selects this tool. It offers no explicit when-not guidance or named alternative tools, so it is clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobspotter_search_jobsJob Spotter: Search current job listingsARead-onlyIdempotentInspect
Job Spotter. Search current job listings. For requests like "find remote Python jobs", "marketing jobs in New York", "junior data analyst jobs posted this week", "senior software engineer jobs in London", "nurse jobs in Manchester". Job words go in what and the place in where. Everyday phrasing in what also works: level words (junior, senior), "remote", "in " and "this week" are picked out. The say line credits listings from Remotive, Himalayas, Jobicy and Remote OK to their source.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Which page of results, 1 to 20. Default 1. Use 2 for "show me more". | |
| sort | No | Sort: relevance (default), date (newest first) or pay (highest first). | |
| what | No | Job title, skill or field, for example "python developer" or "marketing". Required unless where is given. | |
| level | No | Level: entry (junior, graduate, intern), mid or senior. With entry, jobs asking for more than 2 years of experience are left out and the answer adds apprenticeship and graduate routes. | |
| limit | No | How many results, 1 to 10. Default 10. | |
| shift | No | Shift: day, evening, night, weekend or flexible. | |
| where | No | A city (New York, Austin, TX, London, Birmingham, UK), a US state (Texas), a UK county or region (Kent, Yorkshire), a UK postcode, a city or country abroad (Bangalore, Dublin, Dubai, Sydney, India), a country (USA, UK, Germany), "remote", or remote in a country ("remote US"). | |
| company | No | Only jobs at this company, for example "Tesco". | |
| country | No | US or UK, when the place exists in both (Birmingham, Manchester, Cambridge) and the user's country is known. Optional. | |
| exclude | No | Words the advert must not contain, comma separated, for example "sales, commission". | |
| include | No | Words the advert must contain, comma separated, for example "python, aws". | |
| benefits | No | Benefits the advert must mention, comma separated, for example "pension, private healthcare". | |
| employer | No | Employer: direct for jobs posted by the employer itself, or agency for recruitment agencies. | |
| job_type | No | Job type: full time, part time, contract, temporary or internship. | |
| education | No | Education: degree for jobs asking for a degree, or no degree for jobs that don't. | |
| work_type | No | Work type: remote, hybrid or on-site. | |
| salary_max | No | Highest yearly pay, in the local currency. | |
| salary_min | No | Lowest yearly pay, in the local currency, for example 40000 or 40k. Jobs that list no pay are left out when set. | |
| radius_miles | No | How far from the place, in miles, 1 to 100 (boards that support distance). | |
| visa_sponsorship | No | Set to yes for jobs whose advert says visa sponsorship is offered. | |
| posted_within_days | No | Only jobs posted in the last N days, 1 to 90. Default 30. 7 means this week. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, so safety profile is covered. The description adds that level words, 'remote', 'in <city>' and 'this week' are automatically parsed, and credits listing sources (Remotive, Himalayas, Jobicy, Remote OK). Doesn't describe pagination behavior beyond what schema covers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose and then provides examples. The final sentence about source crediting is less critical but still informative. Slightly long example list, but each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a search tool: how to form queries, what slots to use, what's auto-parsed, and where results come from. With no output schema, it doesn't describe return format, but annotations and typical search semantics make that minor. Could mention pagination but schema covers it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are fully documented. The description adds value beyond the schema by explaining natural-language slot-filling ('what' for job words, 'where' for place) and that 'this week' maps to posted_within_days. Baseline 3, but slot-mapping context is a genuine addition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) and resource (current job listings). The example queries reinforce scope. The sibling list is large but mostly non-overlapping; adjacent tools like jobspotter_similar_jobs or jobspotter_jobs_for_me aren't explicitly disambiguated, though 'current job listings' via natural-language query is distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The example queries show when to use it by mapping everyday phrasing to slots (what/where). No explicit when-not-to-use guidance vs siblings like jobspotter_similar_jobs or jobspotter_whats_hiring. Clear implied usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobspotter_similar_jobsJob Spotter: Jobs like one from a search resultARead-onlyIdempotentInspect
Job Spotter. Jobs like one from a search result. For "show me more like the second one" or "anything similar to that Tesco job?". Takes the id from a search result exactly as given. Returns jobs with a similar title in the same place, without the job itself.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The id from a search result, copied exactly. | |
| limit | No | How many results, 1 to 10. Default 10. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive behavior, so the safety profile is covered. The description adds meaningful return behavior: similar title, same place, and exclusion of the source job. It does not cover pagination or result ordering, but adds more than annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded, and most sentences earn their place by specifying input, usage examples, and output scope. The opening brand repeat 'Job Spotter' is minor redundancy given the title already carries it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only tool with rich annotations and no output schema, the description supplies the missing operational context: where the id comes from and what kind of jobs are returned. An agent has enough to call it correctly without further information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented. The description repeats that the id comes from a search result and must be copied exactly, matching the schema rather than adding new syntax or constraints. Baseline 3 is appropriate when the schema carries the parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: returns jobs similar to one from a search result. It distinguishes the tool from broad search by anchoring on an existing search-result id and excluding the original job. An agent can tell it apart from jobspotter_search_jobs without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete user phrasings ('show me more like the second one', 'anything similar to that Tesco job?') that set the context for use. It does not name a sibling alternative or state when not to use this tool, but the trigger condition is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobspotter_us_visa_salariesJob Spotter: What a US employer offered on work visa filingsARead-onlyIdempotentInspect
Job Spotter. What a US employer offered on work visa filings. For "what does Google pay software engineers?" or "how much does Infosys pay on H-1B?". Wages US employers offered on certified H-1B, H-1B1 and E-3 labour condition applications (US Department of Labor disclosure data): the number of filings, the median and typical range, and the most common job titles with their median offered wage. Offered wages on filings, a guide to pay at that employer; contact people named in the filings are left out.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | A job title to pick out, for example "software engineer". | |
| company | Yes | The employer, for example "Google" or "Amazon.com Services". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world and non-destructive behavior. The description adds substantive context beyond that: the data source (US Department of Labor disclosure data), the specific visa categories, the returned statistics, and a privacy note that named contacts are excluded.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is reasonably front-loaded, leading with the resource and example queries before the data details. It is slightly redundant, restating the title phrase and adding a fragment ('Offered wages on filings, a guide to pay at that employer') that could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so adequately, listing the count of filings, median and typical range, and common job titles with median wage. It is complete enough for an agent to call correctly, though it omits pagination or result-size behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented with examples in the schema. The description reinforces the query intent but adds no syntax or format detail beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (wages US employers offered on certified H-1B/H-1B1/E-3 labour condition applications) and scope, distinguishing it from a generic salary lookup. It does not name sibling alternatives like check_salary or company_lookup, so the differentiation is implied rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete use cases ("what does Google pay software engineers?", "how much does Infosys pay on H-1B?") that clearly indicate when to reach for this tool. There is no explicit when-not or named alternative, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobspotter_whats_hiringJob Spotter: What's hiring most in a placeARead-onlyIdempotentInspect
Job Spotter. What's hiring most in a place. For "who's hiring in Leeds?", "what jobs are in demand in Austin?", "which companies are hiring nurses in Manchester?". Gives the roles advertised most and the employers with the most open jobs.
| Name | Required | Description | Default |
|---|---|---|---|
| what | No | Optional field to narrow it, for example "nurse" or "engineering". | |
| where | Yes | A city, region, postcode or country, for example Birmingham, Austin, TX or remote. | |
| country | No | US or UK when the place exists in both, or a country by name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful context about what the result contains (top roles, top employers), but says nothing about result breadth, ranking basis, or coverage limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded and mostly economical: the example queries earn their space by showing intent and parameter pairing. The opening "Job Spotter. What's hiring most in a place." duplicates the title and is the only dead weight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must sketch the return shape, and it does (most-advertised roles plus top employers). With all three parameters documented in the schema, an agent has enough to invoke it correctly; only ranking methodology and result limits are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is already 100%, so baseline is 3. The description's examples go further by implicitly demonstrating how the parameters combine ("nurses in Manchester" maps 'what' to "nurse" and 'where' to "Manchester"), which adds meaning beyond the schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific aggregate function: the roles advertised most and the employers with the most open jobs for a given place. This clearly separates it in kind from listing-style siblings such as jobspotter_search_jobs, though no sibling is named explicitly. Examples reinforce the purpose rather than merely restating the title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Three concrete example queries ("who's hiring in Leeds?", "jobs in demand in Austin", "companies hiring nurses in Manchester") make the intended use case unmistakable. There are no explicit exclusions or named alternatives, so it stops short of the 5 tier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobspotter_write_job_advertJob Spotter: Write a job advert and check the payARead-onlyIdempotentInspect
Job Spotter. Write a job advert and check the pay. For employers: "help me write an advert for a care assistant", "is £12 an hour enough?". Builds a clear advert from the title, duties, must-haves and pay, flags what puts applicants off (missing pay, too many must-haves, slang like "rockstar", age-coded or gendered wording, "native speaker") and compares the pay with current adverts for the role and place. Nothing is posted or stored; posting is free at jobspotter.pages.dev/employers.
| Name | Required | Description | Default |
|---|---|---|---|
| must | No | Must-haves, comma separated. | |
| nice | No | Nice to have, comma separated. | |
| type | No | Type: full_time, part_time, contract, temporary, internship or per_diem. | |
| about | No | A line or two about the company. | |
| apply | No | How to apply. | |
| title | Yes | Job title. | |
| duties | No | What the person will do, one per line or comma separated. | |
| pay_hi | No | Pay to. | |
| pay_lo | No | Pay from. | |
| remote | No | Remote job. | |
| company | No | Company name. | |
| pay_cur | No | GBP, USD, EUR or CAD. | |
| pay_per | No | Pay per: year, hour, day or month. | |
| benefits | No | Benefits, comma separated. | |
| location | No | Where the job is. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description still adds real value beyond them: 'Nothing is posted or stored' explicitly confirms the no-side-effect behavior an agent might doubt from a 'write' verb, and it points to the free posting destination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then examples, then the flagging/benchmarking detail, then the no-storage note. Information-dense with little waste, though the example list and slang enumeration make it slightly longer than strictly necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter, no-output-schema tool this covers the essentials: what it produces (an advert plus flagging and pay comparison), the audience, and the no-persistence guarantee. The remaining gap is that it doesn't indicate how results are returned (e.g. structured advert text vs. annotated issues), which an agent would benefit from knowing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% across all 15 parameters, so the schema already documents every field. The description maps inputs loosely ('title, duties, must-haves and pay') but adds no format, unit, or constraint detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Write a job advert and check the pay') and enumerates the concrete functions: building an advert from title/duties/must-haves/pay, flagging applicant-repelling content, and benchmarking pay against local adverts. An agent can separate this from siblings like jobspotter_check_salary or jobspotter_search_jobs without reading schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description scopes the audience ('For employers') and gives two concrete example prompts ('help me write an advert for a care assistant', 'is £12 an hour enough?'), which make the intended invocation clear. It stops short of naming an alternative or stating when NOT to use it (e.g. vs jobspotter_check_salary for pay-only questions), so it's clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lore_get_cardScroll the Lore: Today's reading one line at a time, for voiceCRead-onlyIdempotentInspect
Scroll the Lore. Today's reading one line at a time, for voice.. Greek and Norse myth: daily readings explained line by line, plans, search, and the whole Theogony, Iliad, Odyssey and Poetic Edda read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | Which card, starting at 1. Defaults to 1. | |
| date | No | Optional day as YYYY-MM-DD. Defaults to today (UTC). | |
| reading | No | A reading or plan id from list_readings. Defaults to today's reading. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive behavior, so the safety profile is covered. The description adds one genuine behavioral trait, that output is delivered 'one line at a time, for voice,' which is useful but thin; it says nothing about determinism across dates or the shape of a card.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence duplicates the title verbatim, down to the double period ('for voice..'), which is pure repetition. The second sentence is broad product marketing listing Theogony, Iliad, Odyssey, Edda, plans, and search, none of which helps invoke this specific tool, and the front-loaded content is the least informative part.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With full schema coverage and rich annotations, the description only needs to clarify the tool's role and output concept, yet 'card' and 'line at a time' are never defined and the relationship to lore_get_today is unstated. It is minimally viable but leaves an ambiguity an agent must resolve.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with n, date, and reading all fully documented in the schema itself, so the baseline is 3. The description adds no parameter detail beyond a vague mention of 'plans' and 'search,' leaving the schema to do all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource loosely as 'today's reading one line at a time' and hints the output is voice-oriented, but 'Scroll the Lore' and 'card' remain undefined, and it never distinguishes lore_get_card from close siblings like lore_get_today or lore_get_reading. An agent can guess it retrieves a daily reading fragment but cannot tell why it would pick this tool over its siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for voice' faintly implies a TTS/voice use case, but there is no explicit when-to-use, no when-not, and no named alternative among the six sibling lore_* tools. Guidance is essentially absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lore_get_readingScroll the Lore: One reading or plan, line by lineCRead-onlyIdempotentInspect
Scroll the Lore. One reading or plan, line by line. Greek and Norse myth: daily readings explained line by line, plans, search, and the whole Theogony, Iliad, Odyssey and Poetic Edda read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | A reading or plan id from list_readings, or a plan name such as "japji" or "The Gita in 18 Days". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds only that content is read 'a passage at a time' / 'line by line', which is a modest behavioral detail about granularity, but nothing about rate limits, auth, or return shape. Appropriate for the lowered bar set by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The title is restated verbatim twice ('Scroll the Lore. One reading or plan, line by line') before any new information arrives, and the final sentence is a comma-spliced list of corpus names that does not help an agent call the tool. Structure is back-loaded with marketing rather than front-loaded with operational content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should orient the agent on what comes back; 'line by line' gives a partial hint but the rest is corpus trivia. For a one-parameter, annotation-covered read tool this is minimally adequate, but it spends its budget on titles and book names rather than the retrieval behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'id' parameter, and the schema already explains that the id comes from list_readings or may be a plan name such as 'japji'. The description adds no syntax or format guidance beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first two sentences convey that this retrieves a single reading or plan ('One reading or plan, line by line'), which roughly matches the name. However, the trailing sentence collapses the whole product surface into the description ('daily readings explained line by line, plans, search, and the whole Theogony...'), so it reads like a corpus blurb rather than this tool's specific function and even name-checks 'search', which is the job of the sibling lore_search_readings. Sibling differentiation is weak.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance or comparison to alternatives like lore_get_today, lore_get_card or lore_read_book. The only routing hint ('id from list_readings') lives in the schema, not the description. Usage must be inferred entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lore_get_todayScroll the Lore: Today's reading, line by line (same as the app shows today)BRead-onlyIdempotentInspect
Scroll the Lore. Today's reading, line by line (same as the app shows today). Greek and Norse myth: daily readings explained line by line, plans, search, and the whole Theogony, Iliad, Odyssey and Poetic Edda read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Optional day as YYYY-MM-DD. Defaults to today (UTC). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety and idempotency profile is covered. The description adds only that output is 'line by line' and matches the app's today view; it does not discuss rate limits, offline behavior, or what an empty day returns. Modest added value on top of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is tight and front-loaded with the key fact. The second sentence is product-marketing copy listing the corpus and other features (plans, search) that do not belong in a single-tool definition, so it does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should ideally sketch the return shape; 'line by line' gives a hint of the format but nothing about structure, verse references, or empty-day behavior. For a simple one-optional-param read tool it is minimally adequate rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the single optional 'date' parameter is fully documented as YYYY-MM-DD defaulting to today (UTC). The description adds no syntax or format detail beyond that, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening establishes a specific resource and scope: today's reading, delivered 'line by line (same as the app shows today).' That is enough to distinguish it from lore_get_reading and lore_search_readings. The second sentence, however, describes the whole Lore product (plans, search, the entire Theogony/Iliad/Odyssey) rather than this tool, blurring the purpose slightly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: an agent can infer this is the default 'what should I read today' entry point, and 'same as the app shows today' signals the default/date-driven use case. But there is no explicit when-to-use versus lore_get_reading or lore_get_card, and no mention of what happens when no reading exists for a day.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lore_list_booksScroll the Lore: The whole books in the Library that can be read a passage at a timeBRead-onlyIdempotentInspect
Scroll the Lore. The whole books in the Library that can be read a passage at a time. Greek and Norse myth: daily readings explained line by line, plans, search, and the whole Theogony, Iliad, Odyssey and Poetic Edda read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds genuine domain context (Greek and Norse myth, line-by-line exposition, specific works: Theogony, Iliad, Odyssey, Poetic Edda), but says nothing about what a listing call returns or whether results are paginated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, but 'read a passage at a time' is repeated verbatim and the feature list (plans, search, Theogony) pads rather than informs a zero-parameter listing call. It is not bloated, but the opening line is branding rather than information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (no params, no output schema), so little is strictly required, but for a listing endpoint the description never tells the agent what the returned book list represents or how many/major works are included. It is adequate but leaves the core question of the tool's return content unanswered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and schema coverage is 100%, so there is nothing for the description to disambiguate. Baseline 4 applies: no parameter semantics gap exists.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title and the phrase 'the whole books in the Library' imply a catalogue of available books, but the description never states the action plainly ('list the books available in the Lore library'). Instead it leads with the marketing phrase 'Scroll the Lore' and mixes in features belonging to siblings (daily readings, plans, search), so the actual purpose must be inferred from the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus lore_list_readings, lore_read_book, lore_search_readings, or lore_get_card. Worse, by advertising 'daily readings', 'plans' and 'search' inside a listing tool, the description actively blurs the boundary with those siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lore_list_readingsScroll the Lore: All curated daily readings and plansBRead-onlyIdempotentInspect
Scroll the Lore. All curated daily readings and plans. Greek and Norse myth: daily readings explained line by line, plans, search, and the whole Theogony, Iliad, Odyssey and Poetic Edda read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is fully covered. The description adds corpus-scope context (passage-at-a-time coverage of specific epics) but says nothing about ordering, pagination, or result size for an unbounded 'list all' operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the tool's scope, which is good. But the middle clause is a sprawling corpus inventory ('daily readings explained line by line, plans, search, and the whole Theogony, Iliad, Odyssey and Poetic Edda') that mixes marketing with a stray 'search' feature that does not belong to this listing tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with rich annotations and no output schema, the description is adequate but leaves key sibling distinctions unresolved (list all vs. today vs. search vs. books) and provides no expectation of result shape or volume.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters and 100% schema coverage, there is nothing to document. Baseline of 4 applies; the description does not need to compensate for any parameter gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description conveys a list/scroll of 'all curated daily readings and plans', which combined with the name makes the resource discernible. However, the bulk of the text describes the corpus (Greek/Norse myth, line-by-line commentary) rather than the tool's function, and it explicitly names 'search', which collides with the sibling lore_search_readings and blurs what this tool actually does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus lore_get_today, lore_list_books, or lore_search_readings. The stray mention of 'search' actively muddies the routing decision rather than helping it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lore_read_bookScroll the Lore: Follow next for the next passage; it carries on into the next chapterCRead-onlyIdempotentInspect
Scroll the Lore. Follow next for the next passage; it carries on into the next chapter. Greek and Norse myth: daily readings explained line by line, plans, search, and the whole Theogony, Iliad, Odyssey and Poetic Edda read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | Passage within the section, starting at 1. | |
| ref | No | Optional: jump straight to a passage by its reference, for example "Havamal 139", "Meditations 4.3", "Gita 2.47", "Iliad 1.5" or "10b". Overrides section and n. | |
| book | Yes | Book id or title from list_books, for example iliad, odyssey. | |
| section | No | Chapter, book, poem, letter or daf to start at, as listed in the book (for example 5, "chapter 2", "havamal", or 10b for the second side of a daf). Defaults to the beginning; Bekhorot defaults to today's Daf Yomi page while the cycle is in it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, openWorld, and non-destructive behavior. The description adds that it reads a passage at a time and that 'next' carries on into the next chapter, but it does not describe auth needs, rate limits, or return format. No contradiction is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description repeats the title almost verbatim and then appends a run-on sentence mixing read-book behavior with 'daily readings', 'plans', and 'search', which belong to sibling tools. It is padded and not tightly front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with full parameter schemas and safety annotations, the description is adequate but incomplete. It gives content scope and sequential-reading behavior, yet omits return shape, ref behavior details, and routing from list_books to a valid book id.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains n, ref, book, and section in detail. The description names some corpus examples such as Iliad and Odyssey, but this adds no syntax or format meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says it reads a passage at a time and names the Greek/Norse corpus, which gives a specific verb+resource. However, it does not clearly distinguish this tool from siblings like lore_get_reading, lore_search_readings, or lore_list_books, and 'Scroll the Lore' plus 'daily readings ... plans, search' blur the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance. 'Follow next for the next passage' implies sequential reading, but the description never tells the agent to use lore_list_books first or when to choose lore_search_readings or lore_get_reading instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lore_search_readingsScroll the Lore: Search the curated readings, best match firstARead-onlyIdempotentInspect
Scroll the Lore. Search the curated readings, best match first. Greek and Norse myth: daily readings explained line by line, plans, search, and the whole Theogony, Iliad, Odyssey and Poetic Edda read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Words or a name to search for, for example Loki or Persephone. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description usefully adds the ranking behavior ('best match first'), but says nothing about result limits, pagination, or match quality beyond ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and ordering rule in the first two short sentences. The third sentence is a content dump naming books, which is informative but somewhat loose for a tool definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A single-parameter, read-only search with no output schema; the description's scope and ranking note are sufficient for correct invocation. Missing only explicit routing versus sibling browse/fetch tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter with 100% schema description coverage, including examples ('Loki', 'Persephone'), so the schema does the work. The description adds no syntax or matching rules beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (search the curated readings) and adds ranking behavior ('best match first') plus the domain (Greek and Norse myth). It's clear what the tool does, though it does not explicitly differentiate itself from siblings like lore_list_readings or lore_get_reading.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'search' and the example terms, but there is no stated condition for choosing this over lore_list_readings (browse) or lore_get_reading (fetch one). No when-not guidance is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lowermybill_get_bill_helpLower My Bill: Official help programmes for a billARead-onlyIdempotentInspect
Lower My Bill. Official help programmes for a bill. For requests like "is there help paying my internet bill?", "is there a broadband social tariff?", "help with my energy bill in the UK", "help with my electric bill", "cheap internet for low income", "does Xfinity have a low-income plan?". Returns programmes with who qualifies and how to apply.
| Name | Required | Description | Default |
|---|---|---|---|
| bill | Yes | Bill: internet, mobile, electricity (or heating, gas), water, tv, streaming, car insurance, home insurance, credit card, council tax (UK), or a provider name. Up to 60 characters. | |
| state | No | US state name or two-letter code. For electricity, adds the state's energy discount programme (California, New York, Ohio, New Jersey, Pennsylvania, Georgia). England, Scotland, Wales, Northern Ireland or UK gives the UK answer. | |
| country | No | Two-letter country code. GB (or UK) gives UK schemes (Ofcom social tariffs, Warm Home Discount, WaterSure, Council Tax Reduction). Defaults to the caller's country, else US. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered; the description adds that results are programmes with eligibility criteria and application instructions. It says nothing about coverage gaps, rate limits, or what happens when no programme matches, which caps it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first two sentences, then a block of example queries follows. The examples are repetitive in structure but each maps to a distinct intent, so they mostly earn their place; the list is slightly longer than strictly necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter read-only lookup with no output schema, the description covers intent, input framing and the shape of the result (programmes, eligibility, how to apply). Annotations carry the safety profile and the schema carries parameter detail, leaving no blocking gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the meaning of bill, state and country (including which states unlock energy discounts and the GB/UK behaviour) is fully documented in the schema itself. The description's examples align with those semantics but add no syntax or format detail beyond them, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (retrieve official help programmes for a bill) and reinforces it with concrete user-phrasing examples covering internet, broadband, energy and provider-specific cases. An agent can distinguish this from lowermybill_get_bill_script and lowermybill_get_call_reminder purely from the description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The example queries ('is there help paying my internet bill?', 'does Xfinity have a low-income plan?') give an agent clear routing signal for when this tool applies. It stops short of naming alternatives or stating when not to use it, so it is clear context without explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lowermybill_get_bill_scriptLower My Bill: A call script to lower a billARead-onlyIdempotentInspect
Lower My Bill. A call script to lower a bill. For requests like "help me lower my Comcast bill", "get my BT broadband cheaper", "lower my Council Tax", "script to get a better phone plan", "how do I negotiate my car insurance?", "lower my credit card interest", "I pay for too many streaming services". Give the bill type, the provider, or both. If the provider doesn't sell that bill, provider_note says so and the general script is returned.
| Name | Required | Description | Default |
|---|---|---|---|
| bill | No | Bill: internet (or broadband), mobile, tv, streaming, car insurance, home insurance, electricity (or energy, gas), water, credit card, gym or council tax (UK). Up to 60 characters. | |
| state | No | US state name or two-letter code. For electricity, adds the state's energy discount programme where there is one. England, Scotland, Wales, Northern Ireland or UK gives the UK answer. | |
| country | No | Two-letter country code. GB (or UK) gives UK scripts, schemes and complaint routes; otherwise it picks the Amazon store in own_modem (US by default; IE uses amazon.co.uk). Defaults to the caller's country. | |
| provider | No | Company name, for example Comcast, Xfinity, Spectrum, AT&T, Verizon, Frontier, T-Mobile, Cox, Optimum, Mediacom, Astound, DIRECTV, DISH, GEICO, Progressive, State Farm, Allstate, USAA; UK: BT, Sky, Virgin Media, TalkTalk, Vodafone, EE, O2, Three, Plusnet, NOW Broadband, Hyperoptic, British Gas, Octopus, EDF, E.ON Next, OVO, ScottishPower. Up to 60 characters. | |
| deal_ends | No | The date the current promotional price, contract or insurance policy ends, YYYY-MM-DD. Adds call_by (about 30 days earlier, on a weekday, or today if that has passed) and add_to_calendar, a link to a calendar reminder with the script. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent/non-destructive, so the safety profile is covered. The description adds genuine behavioral context beyond that: the fallback when the provider doesn't sell the bill (provider_note plus a general script), which is output behavior an agent cannot get from the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose and then lists representative intents, which is efficient for intent matching. The opening 'Lower My Bill. A call script to lower a bill.' partially duplicates the name and title, a minor waste, but the remainder earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Read-only tool with no output schema, so the description carries output-shape detail but doesn't need to explain return values extensively. It covers the bill/provider combination and the fallback path, though it never states what happens when no argument is supplied, despite zero required parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the schema (bill types, state programmes, country effects, provider examples). The description only restates the 'bill, provider, or both' combination rule and adds no new syntax or constraint, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it produces a call script to lower a named bill, and the example prompts ('help me lower my Comcast bill', 'lower my Council Tax') make the resource scope concrete. It does not, however, distinguish itself from the sibling lowermybill_get_bill_help or lowermybill_get_call_reminder, so agent routing between them relies on inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives real routing signal by listing example intents and saying to supply 'the bill type, the provider, or both'. But it never states when to prefer this tool over lowermybill_get_bill_help or lowermybill_get_call_reminder, so usage 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.
lowermybill_get_call_reminderLower My Bill: Calendar reminder to call before a deal endsARead-onlyIdempotentInspect
Lower My Bill. Calendar reminder to call before a deal ends. Returns a calendar file (.ics) with an all-day event about 30 days before the deal ends, holding the full script, offers to ask for and a confirm-in-writing message, with alerts at 9am the day before and on the day. Nothing is stored. get_bill_script gives this link as add_to_calendar when deal_ends is given.
| Name | Required | Description | Default |
|---|---|---|---|
| bill | No | Bill type, as for get_bill_script. Give bill, provider or both. | |
| country | No | Two-letter country code. GB (or UK) gives the UK script when no provider is named. Defaults to the caller's country, else US. | |
| provider | No | Company name, as for get_bill_script. | |
| deal_ends | Yes | The date the current price or policy ends, YYYY-MM-DD. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, yet the description adds real behavior: the exact .ics contents, alert timing at 9am the day before and on the day, and crucially 'Nothing is stored.' That persistence disclosure is 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the one-line purpose, then efficient detail on the artifact and routing. Sentences are long and dense (the .ics contents run on), but every clause carries actionable information and nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must describe the return value, and it does so concretely (calendar file contents, event timing, alerts). Combined with the 'nothing is stored' guarantee and the get_bill_script routing note, an agent has what it needs to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so bill/provider/country/deal_ends are already documented with their own descriptions, and the tool defers to get_bill_script for their meaning. The description adds only the deal_ends positioning, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and artifact ('Returns a calendar file (.ics) with an all-day event') rather than restating the title. It names the exact event timing and payload (30 days before deal end, full script, offers, confirm-in-writing), so an agent can distinguish it from get_bill_script and get_bill_help without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It ties itself to the routing flow, noting 'get_bill_script gives this link as add_to_calendar when deal_ends is given,' which tells the agent when this tool is the right target. It stops short of explicit when-not guidance or naming alternatives directly, so it's clear context rather than full routing rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
medbillcheck_check_priceMed Bill Check: Compare a charge with Medicare's rate for one serviceARead-onlyIdempotentInspect
Med Bill Check. Compare a charge with Medicare's rate for one service. For when someone asks whether a charge is high or what Medicare pays, for example "I was charged $450 for a 99213 office visit in Texas, is that too high?" or "what does Medicare pay for an MRI of the knee?". Takes the billing code if they have it, otherwise the service in plain words as q. Returns Medicare's 2026 rate for the state (or the city's own pricing area when city is given) in medicare_2026, the amount providers typically billed in 2024, and how many times the Medicare rate the charge is. For care in a hospital, hospital_facility_2026 gives Medicare's national rate for the hospital's own facility fee and comparison.compared_with says what the charge was set against. Dental work has no Medicare rate and returns 404 with a pointer to a free dental cost source.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | The service in plain words, used when there is no code, like "knee MRI" or "ER visit". | |
| city | No | City, for states where Medicare pays big cities differently, like Houston, Chicago, Miami or Los Angeles. Other places use the rest-of-state rate. | |
| code | No | Five-character CPT or HCPCS code from the bill, like 99213, 73721 or G0121. | |
| state | No | US state name or two-letter code, like Texas or TX. Med Bill Check is for US bills; a UK place gets a short answer pointing to UK sources. | |
| charged | No | The amount on the bill in US dollars, like 450. | |
| setting | No | Setting: office (clinic, office, imaging center) or facility (hospital or surgery center). Leave out to use the usual setting. | |
| billed_by | No | Whose bill the charge is on when the service was in a hospital: hospital (the hospital's own facility charge) or doctor (the doctor's or physician group's bill). Leave out if not known: the charge is then compared with both together. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only/idempotent/non-destructive, and the description adds substantial behavioral context beyond them: which fields come back (medicare_2026, typical billed amounts, comparison.compared_with), how hospital facility pricing differs, and the dental-work 404-with-pointer edge case.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: purpose, trigger conditions, examples, then return-value and edge-case details. Every sentence carries information an agent needs; no filler or repetition of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so (named result fields, comparison semantics). For a 7-param, all-optional tool it also covers the non-obvious cases (hospital facility fee, dental 404, UK input).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds the code-vs-q precedence ('takes the billing code if they have it, otherwise the service in plain words as q') and the city-specific pricing-area rule, which are useful selection cues beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: compare a charge against Medicare's rate for one service. It is clearly distinguishable from the sibling medbillcheck_check_whole_bill (single service vs whole bill) and medbillcheck_search_services.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit trigger conditions ('when someone asks whether a charge is high or what Medicare pays') with two realistic example phrasings. It does not name the sibling tools it should be preferred over, which is the only gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
medbillcheck_check_whole_billMed Bill Check: Check several lines of an itemized bill at onceARead-onlyIdempotentInspect
Med Bill Check. Check several lines of an itemized bill at once. For when someone reads out or pastes several lines from an itemized bill, for example "my ER bill has 99284 for $2,500, 85025 twice for $120 and 36415 three times, does anything look off?". Takes the lines as code, optional x and units, then the amount. Returns each line against Medicare's rate, totals, and questions_to_ask: repeated codes, units above Medicare's automated daily limit, the highest visit levels, hospital clinic facility fees and charges far above what providers typically bill. Lines of a hospital bill (any bill with an ER visit on it, or setting=facility) are compared with Medicare's hospital outpatient rate plus the doctor's part; each such line says compared_with.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City, for big cities with their own Medicare rates. | |
| lines | Yes | Up to 15 bill lines separated by commas: code, then x and units if more than one, then the amount. Example: 99284:2500, 85025x2:120, 36415:45. | |
| state | No | US state name or two-letter code. | |
| setting | No | Setting: office or facility. Leave out if not known. | |
| billed_by | No | Whose bill the charge is on when the service was in a hospital: hospital (the hospital's own facility charge) or doctor (the doctor's or physician group's bill). Leave out if not known: the charge is then compared with both together. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, non-destructive), and the description goes well beyond them: it discloses the Medicare-rate comparison basis, the special handling of hospital bills (facility rate plus doctor's part) and the per-line compared_with field, and the specific output content (each line, totals, questions_to_ask). That is rich behavioral context an agent cannot get from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then usage, then input format, then return behavior. The long quoted example is illustrative but costs space; a shorter example would earn the same clarity. Overall every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so adequately (per-line Medicare comparison, totals, questions_to_ask). It omits any mention of rate-limiting or error behavior for malformed line strings, which is a minor gap for a 5-param tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real semantics: the positional 'code, optional x and units, then the amount' ordering, the <=15 line cap interpretation, and the default behavior of billed_by when omitted ('compared with both together').
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Check several lines of an itemized bill at once') and scopes it to batch line checking, which cleanly separates it from medbillcheck_check_price (single price) and medbillcheck_search_services. The example of the ER bill makes the intended input shape concrete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it: someone reads out or pastes several lines from an itemized bill. It doesn't name the sibling (check_price) or state when not to use it, so it stops just short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
medbillcheck_draft_bill_letterMed Bill Check: Draft a letter to a billing office for the user to sendARead-onlyIdempotentInspect
Med Bill Check. Draft a letter to a billing office for the user to send. For requests like "help me dispute this bill", "write a letter asking for an itemized bill", "can I ask for a discount?" or "how do I apply for charity care?". Returns a letter as plain text with [brackets] for anything not given, tips, and the user's No Surprises Act and Good Faith Estimate rights with official CMS links. It never sends anything.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | Billing code of the charge. With amount, a dispute letter adds Medicare's benchmark (for a hospital charge, the hospital outpatient rate as well as the doctor's part). | |
| date | No | Date of service. | |
| name | No | Patient or account holder name. | |
| type | Yes | Type: itemized (ask for an itemized bill), dispute (ask for a charge to be reviewed), discount (prompt-pay or self-pay discount), or assistance (financial assistance or charity care). | |
| state | No | US state, used for the benchmark in a dispute letter. | |
| amount | No | Amount charged or balance due, in US dollars. | |
| reason | No | A sentence on what the user wants checked, for a dispute letter. | |
| account | No | Account or invoice number on the bill. | |
| insured | No | Set to no if paying without insurance (self-pay), for a discount letter. | |
| service | No | The service in plain words. | |
| setting | No | Setting: office or facility (hospital or surgery center), for the benchmark in a dispute letter. ER visits and hospital clinic visits count as facility anyway. | |
| provider | No | Hospital, clinic or provider name. | |
| billed_by | No | Whose bill the charge is on when the service was in a hospital: hospital (the hospital's own facility charge) or doctor (the doctor's or physician group's bill). Leave out if not known: the charge is then compared with both together. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral detail beyond the annotations: it discloses the return format (plain text with [brackets] for missing information), the content (tips and No Surprises Act/Good Faith Estimate rights with official CMS links), and explicitly states 'It never sends anything.' This reinforces the read-only and non-destructive hints with useful nuance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action, followed by concrete usage examples and then return/behavior details. Every sentence is useful and there is no redundant or wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 13 parameters, no output schema, and rich annotations, the description covers the purpose, trigger examples, output format, and safety behavior. An agent has everything needed to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 13 parameters are well documented in the schema itself. The description adds no parameter-level meaning beyond what the schema provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Draft a letter to a billing office for the user to send.' It is clearly distinct from sibling tools like check_price or search_services, but it does not explicitly name an alternative tool or draw a direct comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Four example user requests ('help me dispute this bill', 'write a letter asking for an itemized bill', etc.) give clear context for when to use this tool. However, there is no explicit guidance on when not to use it or which sibling tool to choose instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
medbillcheck_look_up_hospitalMed Bill Check: Whether a hospital is nonprofit, for financial assistanceARead-onlyIdempotentInspect
Med Bill Check. Whether a hospital is nonprofit, for financial assistance. For requests like "is St. Luke's in Boise a nonprofit?" or "does this hospital have to offer charity care?". Returns how Medicare lists the hospital's ownership (nonprofit, government, for-profit), its city and main phone number, and what that means for financial assistance. Nonprofit hospitals must have a financial assistance policy.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City, to pick between hospitals with the same name. | |
| name | Yes | Hospital name as on the bill, like St. Luke's Regional Medical Center. | |
| state | No | US state name or two-letter code. Recommended, since many hospitals share names. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld). The description goes beyond them by disclosing the return contents (Medicare ownership classification, city, phone) and an important domain rule ("Nonprofit hospitals must have a financial assistance policy"), which is genuinely useful behavioral context. It doesn't discuss rate limits or match ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then examples, then return contents, in a logical order. It is a touch redundant, restating the title's phrase "whether a hospital is nonprofit, for financial assistance" at the start, but the sentences otherwise earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries return-value disclosure and does so adequately, listing ownership classification, city, phone number, and the financial-assistance implication. It stops short of describing behavior when multiple hospitals match, though the city/state params imply that handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter (name, city, state) is already well documented in the schema. The description adds no parameter-level syntax or disambiguation guidance beyond hinting that ownership results are location-aware, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise transactional purpose: looking up whether a hospital is nonprofit to determine eligibility for financial assistance. It grounds this with concrete example questions ("is St. Luke's in Boise a nonprofit?"), which makes the resource and scope unmistakable and naturally distinct from medbillcheck siblings that handle prices, whole bills, or letters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is clear via the example user requests, which effectively communicate when to reach for this tool. However, no alternative tools are named and no exclusions are given, so an agent must infer the boundary against siblings like check_price or check_whole_bill on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
medbillcheck_search_servicesMed Bill Check: Find billing codes and Medicare rates by plain wordsARead-onlyIdempotentInspect
Med Bill Check. Find billing codes and Medicare rates by plain words. For when someone describes a service but has no code, or asks what a code means, for example "what's the code for a colonoscopy?", "how much does Medicare pay for a chest x-ray in Ohio?" or "what is code 99214?". Returns up to eight matching codes with Medicare's typical allowed and billed amounts.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Plain words or a code, like "hernia repair" or 99214. | |
| state | No | US state name or two-letter code. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safe read-only, idempotent, open-world profile, so the bar is lower. The description still adds real behavior beyond the schema: a result cap ('up to eight matching codes') and the shape of returned Medicare data ('typical allowed and billed amounts').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then usage framing, then return shape. The three examples are slightly redundant with the stated trigger but each maps to a distinct query type, so little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-param, read-only lookup with no output schema, the description supplies purpose, trigger, examples, and the return shape, and the state example signals locality-dependent rates. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both q and state are already documented in-schema; baseline is 3. The description reinforces that q accepts either plain words or a raw code and that state drives the rate shown (the Ohio example implies locality), but adds no format or syntax detail the schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (find) and resource (billing codes and Medicare rates) with the discriminating input style (plain words). It is clear what the tool does, but it never names or contrasts with the sibling medbillcheck_check_price, leaving the boundary between 'search services' and 'check price' to be inferred.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit trigger conditions — 'someone describes a service but has no code, or asks what a code means' — plus three concrete query examples spanning code lookup, price lookup, and code explanation. It stops short of stating when NOT to use it or pointing to the sibling alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mizan_calculate_zakatMizan: Zakat owed on cash, gold, silver, shares and business stockBRead-onlyIdempotentInspect
Mizan. Zakat owed on cash, gold, silver, shares and business stock, using live gold and silver prices.
| Name | Required | Description | Default |
|---|---|---|---|
| cash | No | Cash and bank balances. | |
| nisab | No | Which nisab to use. Defaults to silver. | |
| currency | No | Defaults to USD. | |
| gold_grams | No | Gold held, in grams. | |
| gold_value | No | Or the value of gold held. | |
| owed_to_you | No | Money owed to you that you expect to be repaid. | |
| silver_grams | No | Silver held, in grams. | |
| silver_value | No | Or the value of silver held. | |
| debts_due_now | No | Debts due now, deducted. | |
| business_stock | No | Value of business stock for sale. | |
| shares_trading | No | Market value of shares held for trading (counted in full) | |
| shares_longterm | No | Market value of shares held long term. | |
| share_zakatable_pct | No | Share of long-term holdings treated as zakatable, default 25. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the description's only added behavioral fact is that valuation uses live gold and silver prices – useful context explaining why results vary over time. It says nothing about the calculation method, output shape, or how nisab affects the result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler. It is efficient, though it is arguably too terse given the 13-parameter surface it fronts, and the second sentence largely echoes the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter financial calculation with all-optional inputs and no output schema, the description never says what the tool returns (zakat due, nisab threshold applied) or that all inputs may be supplied independently. The schema covers inputs adequately, but the omitted result description leaves a gap an agent would notice.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter, including defaults (silver nisab, USD, 25% share zakatable), is documented in the schema itself. The description adds no syntax, unit, or default information beyond what the schema already states, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (zakat owed) and enumerates the exact asset classes covered – cash, gold, silver, shares, business stock – which lets an agent distinguish it from mizan_purify_dividend and mizan_screen_company. It does not state the verb explicitly (the name carries 'calculate'), but the scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus its mizan siblings, no mention of prerequisites, and no guidance on the nisab or currency choices despite them being meaningful inputs. Usage is only implied by the asset list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mizan_find_halal_alternativesMizan: Halal alternatives to a holdingARead-onlyIdempotentInspect
Mizan. Halal alternatives to a holding. Companies Mizan covers in the same industry (or the nearest related one) whose business is permitted and whose debt passes all four standards at the last quarter-end, largest first, plus Shariah index funds for US and UK investors. Screen a pick live with screen_company before buying.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | The holding to replace: a US listing symbol or company name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=true), so the bar is lower. The description adds substantive non-annotation behavior: the exact compliance filter (all four standards at last quarter-end), largest-first ordering, and that index funds are included in the results. It omits any result-count limit 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, followed by the qualification criteria and a short actionable routing sentence. Every clause carries information, though the criteria sentence is dense and packs multiple distinct facts (industry matching, compliance standards, ordering, index funds) into one run-on string.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of describing returns and it does: company universe, compliance condition, ordering, and the inclusion of Shariah index funds. Combined with one fully documented parameter, nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is already documented as 'a US listing symbol or company name.' The description only refers to it obliquely as 'a holding,' so it adds no syntax, accepted-format, or fallback guidance beyond the schema. Baseline 3 is appropriate when the schema does the heavy lifting for one parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action and resource: find halal-permitted replacement companies for a given holding, constrained to the same or nearest related industry. It also states the qualification criteria (business permitted, debt passes all four standards at last quarter-end), the ordering (largest first), and the extra content (Shariah index funds for US/UK investors). An agent can distinguish this from mizan_screen_company and mizan_screen_portfolio without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames the tool as replacing an existing holding and adds a workflow instruction: 'Screen a pick live with screen_company before buying.' That is a clear next step, but the description never states when this tool should be preferred over siblings like mizan_screen_portfolio or the halalornot screening tools, so no exclusion guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mizan_list_standardsMizan: The four standards, their denominators and thresholdsCRead-onlyIdempotentInspect
Mizan. The four standards, their denominators and thresholds. Screens a US-listed company against four published Shariah equity standards (AAOIFI, Dow Jones Islamic Market, S&P Shariah, MSCI Islamic), first on its business (prohibited industries each standard excludes) and then on its debt, using live...
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, openWorld behavior, so the safety profile is covered. Beyond that the description adds almost nothing: it is cut off at 'using live...' and never explains what the returned thresholds/denominators mean, whether they are versioned or dated, or how often the published standards change.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text ends mid-sentence ('using live...'), which is a structural defect, and the long screening sentence is off-topic for a catalog tool — it consumes most of the budget while the actual deliverable (the four standards and their thresholds) is only asserted, not described.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists and no parameters exist, so the description carries the full burden of telling the agent what it gets back. It names the four standards (AAOIFI, DJIM, S&P, MSCI) but never states whether the response includes threshold values, calculation denominators, source citations, or effective dates — and the truncation leaves the reader without a complete picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the schema and description cannot conflict. Baseline 4 for a 0-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening fragment ('The four standards, their denominators and thresholds') matches the title and names the resource, but the bulk of the text describes *screening a US-listed company* against those standards — which is what the sibling `mizan_screen_company` does, not what a parameterless `list_standards` tool does. An agent reading this could not reliably distinguish this catalog tool from the screening tools, so the purpose is muddled rather than specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus `mizan_screen_company`, `mizan_screen_portfolio`, or `halalornot_screen_stock`. The screening narrative actually points the agent toward a different tool, so the description supplies no routing guidance at all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mizan_purify_dividendMizan: How much of a dividend to give to charityARead-onlyIdempotentInspect
Mizan. How much of a dividend to give to charity. Returns the company's purification ratio (interest income over total revenue, from its latest 10-K that reports interest income; 'latest_annual_filing' and 'note' say when that is older than the latest 10-K) and, if a dividend amount is given, the amount to give to charity. For a company whose main business every standard excludes, 'business_screen' explains that purification does not make it permissible.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | US listing symbol. | |
| dividend | No | The dividend received, in any currency. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, open world), so the bar is lower, yet the description adds real context: the ratio comes from the latest 10-K that reports interest income, and 'latest_annual_filing'/'note' signal when that is stale. It also warns that purification does not make an excluded business permissible, a meaningful behavioral caveat.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core purpose, then the return values, then the caveat. Dense but purposeful; the parenthetical about 'latest_annual_filing' and 'note' is slightly nested but earns its place by explaining staleness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of explaining returns, and it does: it defines the purification ratio, names the fields indicating data recency, describes the conditional charity amount, and flags the business-screen limitation. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds meaning beyond the schema by explaining that 'dividend' is optional and changes the output (charity amount is returned only when a dividend is supplied). That conditional coupling of the parameter to the response is not in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb+resource pair: it computes a company's purification ratio (interest income over total revenue) and, given a dividend, the charity amount. It also discloses the exact formula and the fallback data source, which clearly separates it from mizan_calculate_zakat and mizan_screen_company.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied — call it after receiving a dividend to learn the charitable portion — but there is no explicit when-to-use or when-not-to-use statement, and no sibling tool is named as an alternative. The business_screen caveat implies screening happens elsewhere, which is helpful but only indirectly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mizan_screen_companyMizan: Screen one company against all four standardsARead-onlyIdempotentInspect
Mizan. Screen one company against all four standards. Returns a 'say' sentence, the live price, the consolidated share count, the filing figures used, the business screen per standard ('business': main_business, by_standard pass/fail/review, excluded_under), and each standard's ratio, threshold and verdict. In each screens entry, 'compliant' is the overall verdict (false when that standard excludes the company's business, null when the business needs a closer look) and 'debt_compliant' is the debt test alone. Verdicts within one percent of a threshold are flagged borderline. A company name (for example nvidia) also works.
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | US listing symbol (a common company name also works). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, non-destructive, openWorld), and the description goes well beyond them: it enumerates the return payload, explains that 'compliant' is the overall verdict with null meaning 'needs a closer look', distinguishes 'debt_compliant', and discloses the borderline-within-one-percent flagging behavior. This is exactly the added context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose sentence before listing return details, and the dense parenthetical clauses each carry distinct field semantics rather than filler. It is on the longer side for a single-parameter tool, but nearly every clause earns its place by clarifying output meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full burden of explaining return values, and it does so thoroughly: the 'say' sentence, price, share count, filing figures, per-standard business screen and ratio/threshold/verdict, plus verdict semantics. Nothing an agent needs to interpret results is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is documented as accepting a symbol or common company name. The description's 'a company name (for example nvidia) also works' adds a concrete example but is largely redundant with the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Screen one company against all four standards'), and 'one company' implicitly distinguishes it from mizan_screen_portfolio. However, it does not explicitly name the sibling it is not, so an agent infers the boundary 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The framing 'screen one company against all four standards' implies the single-company screening use case, and 'four standards' signals it is the comprehensive path. But there is no explicit when-to-use, when-not, or routing to alternatives such as mizan_screen_portfolio or mizan_list_standards; usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mizan_screen_portfolioMizan: Screen a whole portfolioARead-onlyIdempotentInspect
Mizan. Screen a whole portfolio. Screens up to 15 holdings under all four standards and returns the share of the portfolio that is compliant under each, the holdings that fail, and a combined dividend purification ratio.
| Name | Required | Description | Default |
|---|---|---|---|
| holdings | Yes | Comma-separated tickers, each optionally followed by a colon and the value held, for weighting. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnly, idempotent, non-destructive, openWorld), so the description only needs to add context. It does so by disclosing the return contents: compliance share per standard, failing holdings, and a combined dividend purification ratio. It does not, however, mention rate limits or weighting behavior beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded in one tight sentence that leads with the action and scope. Minor waste in the opener 'Mizan. Screen a whole portfolio.' which restates the name and title, but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries return-value explanation and does so adequately (compliance share per standard, failures, purification ratio). It also notes the 15-holding cap. It leaves the referenced 'four standards' unexplained, relying on mizan_list_standards, which is a small gap for a low-complexity one-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single 'holdings' parameter and its weighting syntax are fully documented in the schema. The description adds no parameter detail beyond what the schema already provides, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (screen) and resource (a whole portfolio) with the scope detail 'up to 15 holdings under all four standards,' which clearly separates it from mizan_screen_company. It does not explicitly name the sibling, but the batch-vs-single distinction is inferable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the batch 'whole portfolio' framing and the 15-holding boundary, but there is no explicit when-to-use versus mizan_screen_company or when-not-to-use guidance. An agent must infer the routing from scope alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
planmyworkout_get_exercisePlan My Workout: How to do one exercise, the muscles it works and a pictureARead-onlyIdempotentInspect
Plan My Workout. How to do one exercise, the muscles it works and a picture. For requests like "how do I do a Romanian deadlift?", "what is a goblet squat?", "what muscles do face pulls work?". Understands everyday names like RDL, press-up and lat pulldown. muscles.main lists the muscles the move mainly works (hand-checked for the main lifts) and muscles.also the ones that help.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The exercise, for example Romanian deadlift or push-up. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, open-world, and non-destructive behavior, so the description's added value is return-field semantics: muscles.main vs muscles.also and the hand-checked main-lift data. It does not describe picture format or how-to step structure, but it meaningfully extends the structured metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loads the purpose before examples and output details. The opening 'Plan My Workout.' repeats the title and is mild filler, but the rest is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must carry return-value explanation; it names the key returned elements (how-to, muscles, picture) and clarifies the muscles subfields. It leaves some detail about picture or step format unspecified, but is sufficient for a one-parameter lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already gives examples for the name parameter, but the description adds that everyday names/aliases (RDL, press-up, lat pulldown) are accepted. That is useful semantic guidance beyond the schema's formal examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource and output: one exercise's how-to, muscles, and picture, with example queries. It distinguishes itself from a workout plan by being singular, but it never names planmyworkout_list_exercises or get_workout_plan to route the agent explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context via example user requests ('how do I do a Romanian deadlift?') and notes alias support. It stops short of explicit when-not or alternative-tool guidance, so an agent must infer that this is for single-exercise detail rather than listing or planning.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
planmyworkout_get_workout_planPlan My Workout: A weekly workout plan with sets, reps and restARead-onlyIdempotentInspect
Plan My Workout. A weekly workout plan with sets, reps and rest. For requests like "make me a 3 day beginner gym plan", "home workout with just dumbbells, 30 minutes", "a 5 day muscle building split", "I have a pull-up bar and dumbbells", "a 20 minute workout" (days=1 gives a single session), "a workout plan to lose weight", "couch to 5K" or "a 10K running plan" (a 10K or longer goal gets the build-up plan unless the user says they are a beginner), or "give me another one" (the same inputs with seed plus one). Takes either the fields, or the user's words in q, from which the service reads days, minutes, level, goal and equipment from them. Fields win over q. Running plans also return weeks: every week's sessions (a 9-week walk-run build to 30 minutes of running for beginners; easy, interval, tempo and long runs for intermediates), with week 1 laid out in days.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | The user's request in their own words, for example "3 day beginner gym plan, 45 minutes". | |
| days | No | Days per week, 1 to 6 (1 gives a single session). More than 6 (or "every day") is planned as 6 with a rest day, and the answer says so in say and in plan.days_asked and plan.days_note. Default 3. | |
| goal | No | Goal: strength, muscle, general (default), conditioning (covers fat loss or weight loss requests), running or mobility. | |
| seed | No | 0 to 9999. Change it for a different mix of exercises with the same setup. Default 0. | |
| level | No | Level: beginner (default) or intermediate. Advanced is treated as intermediate. | |
| country | No | Two-letter country code for kit links (US, GB, IE, CA, AU). Defaults to the visitor's country. | |
| minutes | No | Minutes per session including warm-up, 15 to 120. Default 45. | |
| equipment | No | Comma separated: none (default), dumbbells, barbell, gym, bands, kettlebell, pullupbar (a pull-up bar), jumprope. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered. The description does add real behavior beyond that: the seed increment trick for repeat requests, the days>6 capping with a note surfaced in say and plan.days_asked/days_note, and advanced being treated as intermediate. However, it doesn't disclose the shape of the returned plan or whether generated plans are stable across identical calls (relevant given idempotentHint).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first two sentences before the example list. The long parenthetical example block is justified for a natural-language-driven tool, but the run-on sentence structure makes the routing rules harder to scan than they need to be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 optional parameters, no output schema and no required fields, the description carries what the agent needs: it explains input precedence, edge-case handling, output shape at a high level (plan with sets/reps/rest; running plans return per-week sessions with week 1 laid out), and points at output fields that report deviations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parameters are already documented and the baseline would be 3. The description adds genuine semantics on top: q-versus-fields precedence, days=1 collapsing to a single session, seed reuse for another mix, and goal 'conditioning' covering fat/weight-loss wording. Only the country parameter is left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it produces a weekly workout plan with sets, reps and rest, and the example phrasings make the scope unmistakable against the exercise-lookup siblings (get_exercise, list_exercises). An agent can tell what it produces without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use examples covering the main request shapes, plus precise routing rules: 'Fields win over q', 'days=1 gives a single session', days>6 is planned as 6 with a rest day, longer running goals get the build-up plan unless the user self-identifies as beginner, and 'give me another one' means the same inputs with seed plus one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
planmyworkout_list_exercisesPlan My Workout: Exercises for a muscle and the equipment the user hasARead-onlyIdempotentInspect
Plan My Workout. Exercises for a muscle and the equipment the user has. For requests like "what can I do for chest with no equipment?", "glute exercises with bands", "back exercises with dumbbells", "some mobility moves". Give a muscle, equipment or both.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | Level: beginner leaves out harder moves. | |
| limit | No | 1 to 10. Default 8. | |
| muscle | No | Muscle: chest, back, shoulders, arms, biceps, triceps, legs, quads, hamstrings, glutes, calves, core (or abs), cardio or mobility. Also forearms (grip) and traps. | |
| equipment | No | Equipment: none, dumbbells, barbell, gym, bands, kettlebell, pullupbar or jumprope. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety/behavior profile is covered. The description adds essentially no behavioral context beyond that (no note on result count behavior, exhaustiveness, or that any flaky matching is fuzzy). It neither contradicts nor enriches the annotations materially.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening 'Plan My Workout. Exercises for a muscle and the equipment the user has' largely restates the tool name and title, wasting the front-loaded position on redundant text before reaching the genuinely useful example utterances. The examples and closing instruction do earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, zero-required-param list tool with full schema coverage and no output schema, the description supplies enough to call it correctly, including example phrasings and the muscle/equipment expectation. Richer detail on sibling differentiation and result breadth would make it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with enums and ranges documented inline, so the schema does the heavy lifting. The description's 'Give a muscle, equipment or both' adds the intent that at least one filter is expected even though all four parameters are technically optional, which is a small but real clarification over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the resource clearly (exercises filtered by muscle and/or equipment) and supports it with concrete example phrasings. It does not, however, distinguish itself from sibling planmyworkout_get_exercise or planmyworkout_get_workout_plan, so an agent must infer which one returns a list versus a single item or a full plan.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The four example requests ('what can I do for chest with no equipment?', 'glute exercises with bands', etc.) give clear, concrete context for when to select this tool. It stops short of explicit exclusions or naming the alternative siblings to use instead, so it is clear-context guidance rather than full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
platepal_get_barcode_nutritionPlate Pal: Nutrition for a packaged product by barcode, with UK traffic lightsARead-onlyIdempotentInspect
Plate Pal. Nutrition for a packaged product by barcode, with UK traffic lights. For requests like "is this barcode high in sugar?", "how many calories in this?" after a scan, or "what's the salt in 5000157024886?". Returns per 100 g (or 100 ml) and per serving values, traffic lights for fat, saturates, sugars and salt, Nutri-Score, allergens and a Halal or Not? link for checking the ingredients.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Barcode digits (8 to 14). | |
| servings | No | Number of servings to total up (0.25 to 20). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld/non-destructive, but with no output schema the description carries the return-value burden and does it well: per 100 g (or 100 ml) and per serving, traffic lights for fat/saturates/sugars/salt, Nutri-Score, allergens, Halal link. What it omits is behavior on invalid or unknown barcodes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then trigger examples, then a compact enumeration of returned fields. The example-question list is longer than strictly necessary, but every sentence earns its place by clarifying when and what.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only lookup with no output schema, the description supplies the missing return contract (units, traffic lights, Nutri-Score, allergens) and the intent triggers. Only gap is error/edge behavior for unknown barcodes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both 'code' (8-14 digits) and 'servings' (0.25-20). The description adds only unit framing ('per 100 g or 100 ml') and never mentions the servings aggregation parameter at all, so it does not go beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb-scope-resource: nutrition for a packaged product looked up by barcode, with UK traffic lights. The 'by barcode' / 'packaged product' framing distinguishes it from the sibling platepal_get_food_nutrition, which covers generic food lookup. An agent can pick between the two without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete trigger phrases ('is this barcode high in sugar?', 'after a scan', 'what's the salt in 5000157024886?') that tell the agent exactly which user intent maps here. It does not explicitly name when NOT to use it or point at a sibling 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.
platepal_get_food_nutritionPlate Pal: Calories and macros for a food, dish or product, for the amount the user saysARead-onlyIdempotentInspect
Plate Pal. Calories and macros for a food, dish or product, for the amount the user says. For requests like "how many calories in a Big Mac?", "protein in 200g chicken breast", "calories in chicken biryani", "a slice of pepperoni pizza", "a large latte" or a whole meal like "2 eggs, 2 slices of toast and a coffee". Takes the whole amount and food in q, or grams or servings separately. Generic foods and dishes (thousands, including fast food and restaurant dishes) use USDA values with real portion weights (slice, cup, small, medium, large, one item); brands come from Open Food Facts. Chain items ("McDonald's large fries", "a Greggs sausage roll", "KFC Zinger burger", "grande latte from Starbucks", "6 inch Italian BMT from Subway", "20 piece McNuggets") use the chain's own published figures for that size, UK or US by country, and return a chain object (name, region, item, size, weight_published); when the chain doesn't publish a weight, amount.grams is null and per_100 values are null. For a chain item not in the table, a typical USDA version is used and the say line says so. A whole meal returns items (each food with its amount and nutrition) and total. Returns nutrition for the amount, per_100 values, portions, UK traffic lights (per 100 g, or per 100 ml for drinks) and caffeine_mg for drinks that have it.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | The food or meal, optionally with amounts, for example 200g chicken breast, a large banana, or 2 eggs and a slice of toast. | |
| grams | No | Amount in grams (1 to 5000). Overrides any amount in q. | |
| country | No | Two-letter country code. Picks UK or US chain figures (GB and IE get UK ones) and prefers local versions of branded products. Default from the request. | |
| servings | No | Number of servings or items (0.25 to 20). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral detail beyond the annotations: data-source selection, chain item handling, region-specific figures, null behavior when chain weights are unpublished, whole-meal aggregation, and return fields including traffic lights and caffeine. It is consistent with readOnlyHint, idempotentHint, openWorldHint, and 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but front-loaded with the core purpose and then organized by data source and return behavior. The numerous examples are useful for an agent, though the text could be trimmed without losing essential guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and a read-only annotation profile, the description is complete enough for correct invocation and interpretation. It describes the return shape, edge cases, region handling, meal totals, and null-value behavior in detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents q, grams, country, and servings. The description reinforces how q can carry amounts and that grams or servings can be supplied separately, but it adds little semantic detail beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: fetching calories and macros for a food, dish or product for a user-specified amount. It is clear about scope (natural-language food/meal queries, generic foods, brands, chain items), but it does not explicitly name or distinguish the sibling platepal_get_barcode_nutrition alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives many usage examples and explains when different data sources apply (USDA, Open Food Facts, chain-published figures, fallback for missing chain items). However, it does not explicitly state when not to use this tool or direct users to the barcode-based sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
platepal_get_meal_ideasPlate Pal: Simple meal ideas by goal, diet and meal, with rough macrosARead-onlyIdempotentInspect
Plate Pal. Simple meal ideas by goal, diet and meal, with rough macros. For requests like "give me a high protein halal dinner idea", "a quick vegan lunch", "cheap vegetarian breakfast ideas". Goals: high protein, low carb, budget, quick, high fibre. Diets: vegetarian, vegan, pescatarian, halal. Meals: breakfast, lunch, dinner, snack. The user's words can go in q instead. Ideas rotate daily. It does not set calorie or weight targets; a weight-loss request gets lighter, filling ideas (goal lighter, 450 calories or less) and a pointer to a doctor or dietitian, with no shop links.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | How many ideas, 1 to 8. Default 3. | |
| q | No | Free text, for example high protein halal dinner. | |
| diet | No | Diet: vegetarian, vegan, pescatarian or halal. | |
| goal | No | Goal: high protein, low carb, budget, quick or high fibre. | |
| meal | No | Meal: breakfast, lunch, dinner or snack. | |
| country | No | Two-letter country code for the shop links (US, GB and IE get local Amazon links). Default from the request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/openWorld/non-destructive, so the bar is lower, and the description still adds genuinely useful traits: ideas rotate daily (non-deterministic output), it deliberately refuses calorie/weight targets, and it emits shop links (with a no-shop-links carve-out for weight-loss). It does not describe the response shape or pagination, but the added context is substantive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then examples, then the allowed values, then the exclusions — a logical progression with little waste. The opening sentence largely repeats the title verbatim, a minor redundancy that keeps it out of 5 territory.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so acceptably by noting rough macros, rotating ideas, and shop links. Combined with the explicit scope exclusions, an agent has enough to call it correctly, though the exact response structure is only implied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter is already documented there, so baseline is 3. The description adds only marginal value beyond the schema — it clarifies that user phrasing belongs in q and reiterates the allowed goal/diet/meal values — without new syntax or interaction rules (e.g. how q combines with the structured filters).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (generate simple meal ideas) and enumerates the three axes it filters on (goal, diet, meal) plus rough macros. An agent can distinguish this idea-generation tool from the nutrition-lookup siblings (platepal_get_food_nutrition, platepal_get_barcode_nutrition) without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete trigger phrases ("high protein halal dinner idea", "quick vegan lunch") and routes free-form user wording to q. It also defines the negative case (weight-loss requests) and its specific response behaviour. It never explicitly names an alternative sibling tool, so it falls just short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pricedropback_check_price_drop_claimPrice Drop Back: Can I get the difference back?ARead-onlyIdempotentInspect
Price Drop Back. Can I get the difference back? For requests like "I bought a TV at Best Buy 9 days ago for $499 and it's $449 now, can I get the difference?". Says whether a claim is likely (likely, likely_if_member, unlikely, check or no_drop), the amount, and the steps. With an item name it adds a Cheapest Price link and Amazon and eBay links to check today's price. Likely claims also get claim_message, ready to paste into the store's chat or email. policy.refund_paid_as flags stores that pay store credit (Newegg)
| Name | Required | Description | Default |
|---|---|---|---|
| now | No | Today's price, 0 to 100000 (US dollars, or pounds for UK stores). | |
| item | No | Optional item name, up to 100 characters, to link today's price on Cheapest Price, Amazon and eBay. | |
| paid | No | What you paid, 0 to 100000 (US dollars, or pounds for UK stores). | |
| store | Yes | Store name, up to 60 characters. | |
| country | No | Two-letter country code. GB (or UK) gives the UK policy where the store has one (Apple, Amazon, IKEA) and UK rules; it also picks the price links (US, GB and IE get local Amazon and eBay links). Default from the request. | |
| purchase_date | No | The date you bought it, YYYY-MM-DD, instead of days_since_purchase. Adds deadlines: the last day to claim with the store (and in a members' longer window) and Capital One card protection. | |
| days_since_purchase | No | Days since you bought it (or since delivery), 0 to 400. Give this or purchase_date. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnly/idempotent/non-destructive, so safety is covered, but the description adds substantial context: it enumerates the outcome values (likely, likely_if_member, unlikely, check, no_drop), what extra fields appear conditionally (links with an item name, claim_message for likely claims), and the policy.refund_paid_as store-credit flag. It stops short of discussing rate limits or anything about auth, but the behavioral payoff is rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and outcome list, then the example, then the conditional extras; every sentence carries information. It is a touch long and the title question is echoed at the start, but there is no real filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description takes on the burden of explaining returns and does so thoroughly: outcome values, amount, steps, conditional links, claim_message, and the store-credit flag. All 7 parameters are schema-documented and annotations cover the safety profile, so nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter including ranges, country behavior, and the purchase_date-vs-days_since_purchase relationship. The description's notes on item-driven links and purchase_date deadlines largely restate what the schema already says, so it adds only marginal meaning. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource (checks whether a price-drop claim is likely, returns outcome, amount, and steps) and enumerates the possible outcomes, which is far beyond the title's restatement. It does not explicitly name or contrast against its siblings (get_store_policy, get_claim_reminder, list_stores, cheapestprice_check_price), so an agent must infer the boundary itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The worked example ('I bought a TV at Best Buy 9 days ago for $499 and it's $449 now') concretely establishes the situation this tool is for, effectively implying when to call it. However, there is no explicit statement of when NOT to use it or which sibling to pick instead (e.g. get_store_policy for raw policy, get_claim_reminder for follow-ups).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pricedropback_get_claim_reminderPrice Drop Back: Calendar reminder for the last day to claim a price dropARead-onlyIdempotentInspect
Price Drop Back. Calendar reminder for the last day to claim a price drop. Returns a calendar file (.ics) with an all-day event on the store's last claim day, how to claim and the policy link, with alerts 3 days before and on the day. Nothing is stored. check_price_drop_claim gives this link as add_to_calendar when purchase_date is given and a claim is likely.
| Name | Required | Description | Default |
|---|---|---|---|
| item | No | Optional item name for the event title, up to 100 characters. | |
| store | Yes | Store name. | |
| member | No | Set to true to use the longer members' window where the store has one (for example My Best Buy Plus or Total). | |
| country | No | Two-letter country code. GB (or UK) uses the UK policy where the store has one. Default from the request. | |
| purchase_date | Yes | The date you bought it, YYYY-MM-DD. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds genuinely new behavioral context: 'Nothing is stored', plus the event payload contents (all-day event, claim instructions, policy link, alerts 3 days before and on the day). That is useful disclosure no structured field provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the deliverable before the routing hint. The opening 'Price Drop Back. Calendar reminder for the last day to claim a price drop.' mildly restates the name/title, which is the only waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, yet the description fully covers the return artifact (.ics with all-day event, claim steps, policy link, two alerts) and the side-effect profile ('Nothing is stored'). Nothing an agent needs to call and interpret this tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% across all 5 parameters, so the schema already documents each one. The description adds nothing about parameter syntax or defaults beyond what the schema states, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — it returns a .ics calendar file with an all-day event on the store's last claim day — and distinguishes itself from pricedropback_check_price_drop_claim by describing the link the sibling emits. An agent can tell what this tool produces without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear routing condition: use this when check_price_drop_claim returns add_to_calendar (purchase_date present, claim likely). No explicit when-not guidance, but the trigger context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pricedropback_get_store_policyPrice Drop Back: A store's price adjustment and price match policyARead-onlyIdempotentInspect
Price Drop Back. A store's price adjustment and price match policy. For requests like "does Target do price matching?", "does John Lewis refund if the price drops?", "Currys price promise", "what's Best Buy's price adjustment policy?", "will Costco refund the difference?". With an item name it adds links to check today's price.
| Name | Required | Description | Default |
|---|---|---|---|
| item | No | Optional item name, up to 100 characters, to link today's prices for it. | |
| store | Yes | Store name in everyday words, up to 60 characters. | |
| country | No | Two-letter country code. GB (or UK) gives the UK policy where the store has one (Apple, Amazon, IKEA) and UK rules; it also picks the price links (US, GB and IE get local Amazon and eBay links). Default from the request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is supplied elsewhere. The description adds one genuinely new behavioral trait -- that supplying an item name changes the output to append today's-price links -- but says nothing about response size, freshness, or coverage limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, then examples, then the item-name behavior. The redundant repetition of "Price Drop Back" as the first fragment is minor waste, and the five examples are slightly long but each targets a distinct phrasing, so they earn their place for routing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only lookup with full schema coverage and no output schema, the description covers purpose, triggering intents, and the item-name output variation adequately. It could say more about what the policy payload contains, but nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, covering store, item and country, including the country code's effect on policy selection and price links. The description's note that an item name adds price links largely restates what the schema's item description already states, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb-and-resource: it retrieves a store's price adjustment and price match policy. The sample queries ("does Target do price matching?", "Currys price promise") make the exact subject matter unmistakable and distinguish it from the write/claim-oriented siblings check_price_drop_claim and get_claim_reminder.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The five example requests clearly map real user intents to this tool, so an agent knows exactly which questions select it. It stops short of naming alternatives (e.g. list_stores for store discovery) or stating exclusions, so it is clear context rather than 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.
pricedropback_list_storesPrice Drop Back: Every store covered, plus card price protectionARead-onlyIdempotentInspect
Price Drop Back. Every store covered, plus card price protection. For requests like "which stores give you money back if the price drops?" or "does my credit card have price protection?". With country=GB, lists the UK policies.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | Two-letter country code. GB (or UK) lists only stores with a UK policy. Default from the request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds scope context—every store plus card price protection—and country-based UK filtering, but does not add details like output format, auth needs, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads the core coverage claim before giving examples and the country note. It repeats the title/brand in the first two sentences, which is mildly redundant, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, read-only list tool with one optional parameter, no output schema, and rich annotations, the description gives enough context to call it correctly. It could more explicitly state that it returns a list of all supported stores, but the example queries and coverage claim make the function clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single country parameter has 100% schema description coverage, including the GB/UK behavior and default. The description repeats the GB/UK example but does not add meaning beyond what the schema already provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states what the tool covers: "Every store covered, plus card price protection," and gives example queries that clarify the resource. It distinguishes from a single-store tool by emphasizing complete store coverage, though it does not explicitly say "lists all supported stores" in the first sentence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides concrete usage contexts: requests like "which stores give you money back if the price drops?" or "does my credit card have price protection?". It does not name an alternative sibling tool or state when not to use it, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spinmyday_list_vibesSpin My Day: The vibes you can ask forCRead-onlyIdempotentInspect
Spin My Day. The vibes you can ask for. Spin up a full day out (morning, lunch, afternoon, dinner, evening) around the weather and what is open, in a city, near a location, or in a random city.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered structurally. The description adds nothing behavioral — it never says whether this enumerates a fixed list, how many items come back, or what the response looks like, and it implies inputs that the tool does not accept.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two of the three sentences merely restate the tool name and title ('Spin My Day. The vibes you can ask for.'), and none of them describe the actual verb, so the text is short but not efficiently front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and no output schema, the description is the only place an agent can learn what vibes exist and what a call returns — and it omits both, describing a different tool's behavior instead.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero parameters, so on the baseline rule this would be a 4, but the description actively misleads by offering 'in a city, near a location, or in a random city' as if those were inputs. No such parameters exist, so an agent may try to pass arguments that will be rejected.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The name and title promise a listing of available 'vibes', but the description instead describes generating an itinerary (morning, lunch, afternoon, dinner, evening) — which is the job of the sibling spinmyday_spin_my_day. The agent cannot tell from this text what spinmyday_list_vibes actually returns or how it differs from spin_my_day.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus spinmyday_spin_my_day, no prerequisites, and no trigger conditions. The single sentence describes an outcome without saying what the caller supplies or when this tool is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spinmyday_spin_my_daySpin My Day: Build a day outARead-onlyIdempotentInspect
Spin My Day. Build a day out. Leave out city and location to spin for a random city. Spin up a full day out (morning, lunch, afternoon, dinner, evening) around the weather and what is open, in a city, near a location, or in a random city.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude, in decimal degrees, instead of city. | |
| lon | No | Longitude, in decimal degrees, instead of city. | |
| city | No | The city to plan the day in, for example Manchester or Austin, TX. Leave out with lat and lon for a random city. | |
| date | No | The day to plan, YYYY-MM-DD. Leave it out for today, or tomorrow when it is already past 5pm there (the answer then says tomorrow: true). | |
| diet | No | Food needs, comma separated: halal, kosher, vegetarian, vegan, pescatarian, gluten_free, dairy_free, jain. Lunch and dinner then name real places that OpenStreetMap lists for all of them (each meal says which in diet and diet_note). halal=true still works. | |
| seed | No | Repeat a spin exactly; each answer includes a spin_again link with a new seed. | |
| vibe | No | The feel of the day: chill, adventure, date, family, culture or foodie. | |
| budget | No | Budget: any, or free for free things only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld). The description adds genuinely useful context beyond them: the plan is weather- and open-status-aware, diet filtering names real OpenStreetMap places, and each meal reports diet/diet_note. It does not describe the response structure in detail, but for a read tool with annotations this is solid added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening 'Spin My Day. Build a day out.' merely restates the name and title, and the trailing 'in a city, near a location, or in a random city' repeats the random-city instruction already given one sentence earlier. The middle sentence carries real information, but roughly a third of the text is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter, all-optional, read-only tool with no output schema, the description conveys the intent, the random-city fallback, weather/open awareness, and diet behavior. Nothing critical is missing, though a hint about the returned itinerary shape (beyond diet_note and tomorrow) would round it out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents lat/lon, city, date, diet, seed, vibe and budget. The description restates the city-omission and diet semantics without adding format or edge-case detail the schema lacks (e.g., how diet lists are parsed, how seed interacts with idempotentHint). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific outcome (spin up a full day out with named time blocks: morning, lunch, afternoon, dinner, evening) and scopes it by weather and opening status. An agent can tell what it produces. It does not explicitly differentiate from the only sibling, spinmyday_list_vibes, but the resource is distinct enough not to confuse them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Leave out city and location to spin for a random city' gives one clear conditional for the random-mode path, and the schema reinforces it. There is no guidance on when to prefer this over list_vibes (e.g., to discover valid vibes first), so usage is only partially covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stoics_get_cardStoic Scroller: Today's reading one line at a time, for voiceCRead-onlyIdempotentInspect
Stoic Scroller. Today's reading one line at a time, for voice.. The Stoics: daily readings from Marcus Aurelius, Epictetus and Seneca explained line by line, plans, search, and the whole Meditations, Enchiridion and Seneca's letters read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | Which card, starting at 1. Defaults to 1. | |
| date | No | Optional day as YYYY-MM-DD. Defaults to today (UTC). | |
| reading | No | A reading or plan id from list_readings. Defaults to today's reading. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, openWorld and non-destructive behavior, so the safety burden is largely lifted. The one genuinely new piece of context is 'for voice,' hinting the output is shaped for text-to-speech, but the description does not specify what a card actually contains or how multiple calls relate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description opens by restating the title almost verbatim, including a stray double period ('for voice..'), then repeats the same idea. The one useful line — 'one line at a time, for voice' — is buried inside redundant marketing prose rather than front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should characterize what a 'card' returns. 'One line at a time, for voice' gives a partial answer, but for a tool with three parameters and no output contract, the payload, ordering, and pagination semantics remain unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: 'n', 'date' and 'reading' all carry their own descriptions and defaults. The description adds no syntax, format, or defaulting detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description conveys a resource (a daily Stoic reading 'card') and a format constraint ('one line at a time'), which distinguishes it loosely from read_book's 'a passage at a time'. However, it never clearly separates card from its closest siblings (get_today, get_reading), and the sentence is dominated by marketing copy about Marcus Aurelius, Epictetus and Seneca rather than stating the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to use this tool versus get_today, get_reading, or read_book. The phrase 'plans, search' gestures at other capabilities but gives no condition for selecting this tool over any alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stoics_get_readingStoic Scroller: One reading or plan, line by lineCRead-onlyIdempotentInspect
Stoic Scroller. One reading or plan, line by line. The Stoics: daily readings from Marcus Aurelius, Epictetus and Seneca explained line by line, plans, search, and the whole Meditations, Enchiridion and Seneca's letters read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | A reading or plan id from list_readings, or a plan name such as "japji" or "The Gita in 18 Days". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds a small content-shape hint (readings "explained line by line," "read a passage at a time"), but it offers no behavioral detail about permissions, framing, or error handling beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first two sentences redundantly echo the title, and the third is one long promotional run-on listing the app's content rather than being front-loaded on the tool's action. Little of the text earns its place for an agent deciding whether and how to call the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter, idempotent read tool with full schema coverage and an output schema absent, the description is minimally adequate. However, it never states what is returned for a reading versus a plan, leaving a gap for a tool whose title explicitly promises "one reading or plan."
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the sole id parameter is fully documented in the schema (id from list_readings or a plan name like "japji"). The description adds no syntax or format meaning beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description largely restates the title ("One reading or plan, line by line") and then describes the Stoic Scroller product as a whole, not the specific action of retrieving one reading by id. It never states a clear verb+resource like "retrieve a single reading or plan by its id," and it does not distinguish this tool from siblings such as stoics_list_readings or stoics_search_readings, which it only vaguely gestures at.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance. The mention of "plans, search, and the whole Meditations" hints at other capabilities but never tells the agent to prefer this tool for a single id-based fetch versus stoics_search_readings or stoics_get_today. The agent must infer usage entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stoics_get_todayStoic Scroller: Today's reading, line by line (same as the app shows today)BRead-onlyIdempotentInspect
Stoic Scroller. Today's reading, line by line (same as the app shows today). The Stoics: daily readings from Marcus Aurelius, Epictetus and Seneca explained line by line, plans, search, and the whole Meditations, Enchiridion and Seneca's letters read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Optional day as YYYY-MM-DD. Defaults to today (UTC). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds limited behavioral context by noting 'same as the app shows today' and 'line by line,' but it does not describe return format, authentication needs, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is concise and front-loaded, but the second sentence is a broad product description that mentions plans, search, and whole texts read a passage at a time. Those features belong to sibling tools and do not help an agent call stoics_get_today correctly, so the description contains avoidable noise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only daily-reading tool, the annotations cover the safety profile and the schema covers the optional date. However, no output schema exists and the description only vaguely indicates the return as 'line by line,' without describing the output structure, so it is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for the single optional 'date' parameter, so the schema already documents that parameter fully. The description adds no parameter-specific meaning beyond what the schema provides, which makes the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a clear resource and temporal scope: 'Today's reading, line by line.' The tool name and title make the verb-plus-resource easy to infer. However, the description does not explicitly distinguish this tool from siblings like stoics_get_reading or stoics_search_readings, and the second sentence conflates other app features.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'Today's reading' and the title, so an agent can infer it should be used for the daily reading. But there is no explicit when-to-use guidance, no when-not-to-use guidance, and no named alternatives among the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stoics_list_booksStoic Scroller: The whole books in the Library that can be read a passage at a timeCRead-onlyIdempotentInspect
Stoic Scroller. The whole books in the Library that can be read a passage at a time. The Stoics: daily readings from Marcus Aurelius, Epictetus and Seneca explained line by line, plans, search, and the whole Meditations, Enchiridion and Seneca's letters read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety behavior is fully covered by structured data. The description adds no behavioral context of its own - it says nothing about what is returned, ordering, or the size of the result set, only promotional content about the corpus.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is repetitive and poorly front-loaded: 'the whole books in the Library that can be read a passage at a time' is restated as 'the whole Meditations, Enchiridion and Seneca's letters read a passage at a time'. It leads with a brand name rather than the tool's action, and repeats itself instead of using the space to say what the tool returns.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with no output schema, the description is the only place to explain what the list contains and in what form. Instead the description is ambiguous about whether it lists books at all, so an agent cannot confidently distinguish this from stoics_list_readings or stoics_read_book.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate in the input schema. Baseline 4 applies; no parameter detail is expected or needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description never states that the tool returns a list of books; it reads as marketing copy for the Stoic Scroller app ('daily readings... plans, search, and the whole Meditations... read a passage at a time'). It merely restates the title, and it conflates several sibling capabilities (get_reading, search_readings, read_book) rather than defining this one. There is no clear verb+resource statement like 'returns the books available in the library'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no alternatives are named, even though obvious siblings exist (stoics_read_book, stoics_get_reading, stoics_list_readings). The phrase 'books that can be read a passage at a time' hints at scope but does not tell the agent when to choose this over those siblings or what prerequisites exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stoics_list_readingsStoic Scroller: All curated daily readings and plansCRead-onlyIdempotentInspect
Stoic Scroller. All curated daily readings and plans. The Stoics: daily readings from Marcus Aurelius, Epictetus and Seneca explained line by line, plans, search, and the whole Meditations, Enchiridion and Seneca's letters read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds nothing beyond that — no note on ordering, pagination, scope of 'all', or whether unread plans are included. It discloses no behavior the structured fields don't already provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single run-on sentence that front-loads a redundant restatement of the title and then trails into promotional copy about Stoic authors and works. Most of the second half is irrelevant to invoking a parameterless list tool and should be cut.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema list tool in a dense family of stoics_* siblings, the description should at minimum state what is returned (cards? reading entries?) and how it relates to stoics_list_books and stoics_search_readings. Instead it spends its words on marketing and does not differentiate itself, leaving a real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the schema is trivially complete (empty object, no required fields), so there is nothing for the description to clarify. Baseline 4 applies: no parameter semantics are needed here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The body 'All curated daily readings and plans' largely restates the name/title rather than stating a specific verb+resource. The rest is a content catalogue ('Marcus Aurelius, Epictetus and Seneca... plans, search, and the whole Meditations, Enchiridion and Seneca's letters') that describes the corpus, not the operation, and even mentions 'search' which is a sibling tool. An agent cannot tell from this text how it differs from stoics_list_books or stoics_search_readings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no exclusions, and no named alternative among the many stoics_* siblings. The only vaguely orienting clause is the 'All curated...' phrasing, which implies a full listing but never says when to prefer it over stoics_get_today or stoics_search_readings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stoics_read_bookStoic Scroller: Follow next for the next passage; it carries on into the next chapterCRead-onlyIdempotentInspect
Stoic Scroller. Follow next for the next passage; it carries on into the next chapter. The Stoics: daily readings from Marcus Aurelius, Epictetus and Seneca explained line by line, plans, search, and the whole Meditations, Enchiridion and Seneca's letters read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | Passage within the section, starting at 1. | |
| ref | No | Optional: jump straight to a passage by its reference, for example "Havamal 139", "Meditations 4.3", "Gita 2.47", "Iliad 1.5" or "10b". Overrides section and n. | |
| book | Yes | Book id or title from list_books, for example meditations, enchiridion. | |
| section | No | Chapter, book, poem, letter or daf to start at, as listed in the book (for example 5, "chapter 2", "havamal", or 10b for the second side of a daf). Defaults to the beginning; Bekhorot defaults to today's Daf Yomi page while the cycle is in it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description does add one useful behavioral trait: sequential pagination ('follow next... it carries on into the next chapter'), implying the reader advances continuously. It offers nothing about return format, error behavior, or permissions, which is a modest gap given the annotations already carry safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description opens by restating the title almost verbatim ('Stoic Scroller. Follow next for the next passage; it carries on into the next chapter'), which is wasted space before any new information. It then bundles in unrelated-sounding mentions of 'plans, search', diluting the focus of an otherwise short passage-reading tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with full annotation coverage, complete parameter schema, and no output schema, the description needn't explain returns. But it fails to clarify its relationship to the crowded stoics_* family, and the 'next passage' continuity claim is not tied to any parameter or output, leaving an agent uncertain how it differs from get_reading.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents n, ref, book, and section, including ref-overrides-section behavior and Bekhorot/Daf Yomi defaults. The description adds no parameter-level detail beyond the schema, which is the expected baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the corpus (Marcus Aurelius, Epictetus, Seneca; Meditations, Enchiridion, letters) and the mechanism ('read a passage at a time'), which conveys the general resource. However, the operation is blurred by side references to 'plans' and 'search' that are likely handled by sibling tools, and it never cleanly distinguishes this from stoics_get_reading or stoics_get_today. The purpose is inferable but not crisply stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus its many siblings (stoics_get_reading, stoics_get_today, stoics_search_readings, stoics_list_books). The mention of 'search' and 'plans' hints at other capabilities but never routes the agent to an alternative tool. Usage must be inferred entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stoics_search_readingsStoic Scroller: Search the curated readings, best match firstBRead-onlyIdempotentInspect
Stoic Scroller. Search the curated readings, best match first. The Stoics: daily readings from Marcus Aurelius, Epictetus and Seneca explained line by line, plans, search, and the whole Meditations, Enchiridion and Seneca's letters read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Words to search for, for example anger or death. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds the 'best match first' relevance-ordering behavior, which is genuinely useful, but says nothing about result counts, pagination, or matching semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first two sentences are front-loaded and efficient, but the trailing run-on about Marcus Aurelius, Epictetus, Seneca, plans, and letters is promotional filler that does not help an agent select or invoke the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter search tool with full schema coverage, annotations covering safety, and no output schema, the description is sufficient to call it correctly. The content sentence, while verbose, does signal what corpus is being searched.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'q' parameter is documented with examples ('anger or death'), so the schema does the heavy lifting. The description adds no keyword syntax, phrase, or matching details beyond what the schema provides, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (search) and resource (curated readings) and adds a ranking behavior ('best match first'). This implicitly separates it from siblings like stoics_get_reading, stoics_list_readings, and stoics_read_book, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb: use it to find readings by keyword, ranked by relevance. However, there is no explicit guidance on when to prefer this over stoics_list_readings or stoics_get_reading, nor any note on result scope or fallback behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
supplementcheck_check_doseSupplement Check: Compare an amount of a vitamin or mineral with the adult RDA and upper limitARead-onlyIdempotentInspect
Supplement Check. Compare an amount of a vitamin or mineral with the adult RDA and upper limit. For requests like "is 5000 IU of vitamin D too much?", "is 500 mg of magnesium glycinate safe?", "is 10 mg of melatonin a lot?" or "is 300 mg of caffeine too much?". Handles IU, mcg, mg and g, including IU for vitamins A, D and E and DFE for folate. For vitamins and minerals, status is above, at, within or no_upper_limit; when the name is a compound (magnesium glycinate, ferrous sulfate, zinc gluconate) the compound field also gives how much of the mineral the compound holds, as US and UK labels list the mineral itself; when only one reading is over the limit, the say line gives both and compared_with.depends_on_label is true. Fish oil, cod liver oil and krill oil amounts are the oil weight, so EPA plus DHA is estimated (amount.epa_dha_estimate_mg). With country=GB the limit is the NHS guidance (compared_with.reference is UK (NHS), with us_upper_limit alongside). For other supplements the answer compares with an official ceiling where one exists (caffeine) or the amounts studies have used, with status above, at, within, above_studied_range, within_studied_range, below_studied_range or no_set_amount, plus cautions. Adult values only, with a note.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | The whole question instead, for example 5000 IU vitamin D. | |
| unit | No | IU, mcg, mg, g, mcg DFE, or billion (CFU) for probiotics. Defaults to IU for vitamin D amounts of 200 or more, otherwise the usual unit. | |
| amount | No | The amount taken per day, in the unit given. | |
| country | No | Two-letter country code. GB compares with NHS guidance and gives UK amounts. Default from the request. | |
| nutrient | No | The vitamin, mineral or supplement, for example vitamin D, magnesium or melatonin. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, but the description adds extensive behavioral context. It explains status values, compound handling for mineral salts, oil EPA/DHA estimation, UK NHS reference behavior, studied-range statuses for other supplements, and the adult-only limitation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and then expands into edge cases and return semantics. It is dense and longer than average, but most sentences carry necessary distinction; it is slightly heavy rather than wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must explain return behavior, and it does so thoroughly: status values, compound details, say-line behavior, compared_with fields, UK NHS references, oil estimates, and cautions. Combined with complete input schema coverage and read-only annotations, an agent has enough context to call and interpret this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description goes beyond the schema by clarifying unit handling for IU across vitamins A, D, and E, DFE for folate, oil weight versus EPA/DHA estimates, and UK-specific reference behavior, adding meaningful semantic context for several parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('compare'), resource ('an amount of a vitamin or mineral'), and reference scope ('adult RDA and upper limit'). It is also clearly differentiated from sibling supplement tools like get_nutrient and get_supplement, which retrieve information rather than compare a dose against limits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides concrete request examples such as 'is 5000 IU of vitamin D too much?' and 'is 500 mg of magnesium glycinate safe?', which makes the intended use clear. It does not explicitly state when not to use it or name sibling alternatives, 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.
supplementcheck_check_stackSupplement Check: Add up everything someone takes and check the daily totalsARead-onlyIdempotentInspect
Supplement Check. Add up everything someone takes and check the daily totals against adult upper limits. For requests like "I take Centrum, vitamin D 5000 IU and zinc 50 mg, is that too much?" or "is it OK to take OLLY Sleep with extra melatonin?". Takes up to 6 items separated by semicolons: product names, barcodes, or amounts like vitamin D 5000 IU. Products are counted at the most each label suggests per day. Returns totals (each vitamin and mineral added up, with the items it comes from, compared with the adult upper limit, or NHS guidance with country=GB), other_totals (caffeine, melatonin and similar added up, or marked when a label hides the amount), items (what each was matched to) and not_found. Fish oil amounts count the EPA and DHA they typically hold.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | What the user takes, separated by semicolons, for example Centrum Silver Men; vitamin D 5000 IU; zinc 50 mg. | |
| country | No | Two-letter country code. GB compares totals with NHS guidance. Default from the request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent annotations: discloses the 6-item cap, that products are counted at the most per-day amount each label suggests, that country=GB switches to NHS guidance, how hidden amounts and fish-oil EPA/DHA are handled, and what totals/other_totals/items/not_found contain. Rich operational detail an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose and the outcome in the first two sentences, then adds examples and interval/return detail. It is dense but nearly every sentence carries unique information; only minor tightening (semicolon restatement) is possible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return contract itself, enumerating totals, other_totals, items, and not_found plus the upper-limit comparison logic. An agent has everything needed to call and interpret this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real semantics: a hard 'up to 6 items' limit and the interpretation rule that each product is counted at its maximum per-day label amount. The semicolon format is echoed from the schema rather than added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: it adds up everything a user takes and checks daily totals against adult upper limits. The scope (aggregate multi-item checking) clearly distinguishes it from siblings like supplementcheck_check_dose and supplementcheck_get_nutrient.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides two concrete trigger examples ('I take Centrum, vitamin D 5000 IU and zinc 50 mg, is that too much?' and the OLLY Sleep melatonin case) that make the intended use obvious. It does not explicitly name or exclude the sibling dose-checking tool, so it stops 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.
supplementcheck_get_nutrientSupplement Check: What a vitamin, mineral or supplement does and how much adults needARead-onlyIdempotentInspect
Supplement Check. What a vitamin, mineral or popular supplement does, how much adults need or studies used, limits, cautions and food sources. For requests like "what does magnesium glycinate do?", "what is vitamin K for?", "how much vitamin D do I need?", "is ashwagandha safe?" or "what is creatine?". Covers vitamins A, B1, B2, B5, B6, B12, C, D, E and K, niacin, folate, biotin, choline, calcium, iron, zinc, magnesium, potassium, selenium, iodine, copper, chromium, manganese, molybdenum, phosphorus, boron and omega-3, and explains common forms. Also covers creatine, melatonin, caffeine, ashwagandha, turmeric, CoQ10, collagen, protein powder, probiotics, psyllium, glucosamine, St John's wort, green tea extract, berberine, L-theanine and elderberry: for these it returns supplement, what_studies_looked_at, studied_amounts, ceiling, cautions and source instead of rda and upper_limit. Links the NIH fact sheet. With country=GB the answer gives the UK amounts and NHS supplement guidance, also in the uk field.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | A vitamin, mineral, form or supplement, for example magnesium glycinate or ashwagandha. | |
| country | No | US, GB, IE, CA, AU. GB gives UK (NHS) amounts; also picks the shop link site. Default from the request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuine behavioral detail beyond that: it discloses the differing return shape for herbal/other supplements (supplement, what_studies_looked_at, studied_amounts, ceiling, cautions, source instead of rda/upper_limit), the country=GB branch returning NHS amounts in a uk field, and the NIH fact-sheet link.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the core purpose and example questions before the long enumeration of covered nutrients and supplements, and each sentence carries distinct information (scope, examples, coverage lists, alternate return shape, UK behavior). The exhaustive nutrient/supplement enumerations are heavy, but they serve recall for a lookup tool and are not purely redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully compensates by naming the return fields and how they change between nutrient and herbal categories, plus the country variant. Coverage, examples and output shape are all present; only edge behavior (e.g., unknown or ambiguous nutrient names, relationship to the get_supplement sibling) is left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented there, so the baseline is 3. The description adds only marginal semantics: it reinforces that name accepts forms like 'magnesium glycinate' and clarifies that country=GB also surfaces UK amounts plus NHS guidance in a uk field, which is slightly more than the schema's text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: it returns what a vitamin, mineral or supplement does, how much adults need, limits, cautions and food sources, backed by concrete example questions. It is clear about the scope of content returned. However, it never distinguishes itself from the closely-named sibling supplementcheck_get_supplement (or check_dose/check_stack), so an agent cannot disambiguate within the family from the text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is well established through example requests ('what does magnesium glycinate do?', 'how much vitamin D do I need?', 'what is creatine?'), which clearly signals informational/lookup queries. It does not, however, name an explicit alternative or exclusion (e.g., 'for safety/dose checking use supplementcheck_check_dose'), which matters here since 'is ashwagandha safe?' could plausibly route to a sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
supplementcheck_get_supplementSupplement Check: A supplement's label, dose check and halal statusARead-onlyIdempotentInspect
Supplement Check. A supplement's label: amounts per serving, upper limit check, halal status and a buy link. For requests like "what's in Nature Made vitamin D3?", "is Centrum halal?", "how much melatonin is in OLLY Sleep?" or "is this supplement halal?" with a barcode. Give q (brand and product name) or barcode. Returns per-serving amounts, dose_check (each vitamin and mineral compared with the adult upper limit at the most the label suggests per day, with per_day_base amounts), other_checks (melatonin, caffeine, creatine, ashwagandha and similar, including when a blend hides the amount), halal (likely_halal, doubtful, not_halal or depends_on_school, with the ingredients that need a confirmed source), alternatives (other sizes or versions), an Amazon link, and halal_options (links to halal-certified or gelatine-free versions) when the halal answer is not likely_halal. For a general name like "creatine monohydrate" it reads one common label and says so. With country=GB, dose_check uses the NHS guidance where it sets one (upper_limit says NHS guidance). Salt forms such as magnesium glycinate are counted as the mineral they hold (estimated: true), and omega-3 is read from EPA and DHA, total omega-3, or estimated from the fish oil weight.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Brand and product name, for example Nature Made vitamin D3 2000 IU. | |
| id | No | A label id from the NIH database, for example from alternatives. | |
| barcode | No | UPC or EAN barcode digits (8 to 14). | |
| country | No | US, GB, IE, CA, AU. GB uses NHS guidance for the dose checks; also picks the buy link site. Default from the request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds real behavioral context beyond that: estimation flags (estimated: true for salt forms), the NHS-guidance switch for GB, the 'reads one common label and says so' fallback for general names, and halal_options only appearing when the answer is not likely_halal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and example triggers are front-loaded, and the dense return-value enumeration is informative rather than filler. It is long and read as one block, which slightly hurts scannability, but every clause carries content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the return-value burden and does so well, enumerating dose_check, other_checks, halal, alternatives, links and halal_options. Minor gaps remain, e.g. it does not describe what happens for mixed/blend products beyond the amount-hiding case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: country=GB switches dose checks to NHS limits (upper_limit says NHS guidance) and also changes the buy-link site, and q is clarified as brand plus product name. id and barcode are left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (read a supplement's label, dose check and halal status) and enumerates the exact outputs. It is clearly distinguishable from siblings like supplementcheck_check_dose, check_stack and get_nutrient because it is the per-product label lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete example requests ("is Centrum halal?", barcode queries) and states the input rule: 'Give q (brand and product name) or barcode.' It also explains the general-name fallback. It does not, however, explicitly say when to prefer this over check_dose/check_stack/get_nutrient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
syncmycycle_get_todays_phaseSync My Cycle: Today's cycle phase, with workout and food ideasARead-onlyIdempotentInspect
Sync My Cycle. Today's cycle phase, with workout and food ideas. For when the user asks what phase they are in, what workout or food suits them today, or why their energy is up or down, for example "what phase am I in, my last period started September 12th" or "what should I train today?". Needs the first day of their last period. Not for getting pregnant, fertile days, ovulation timing, contraception or pregnancy: this is general wellbeing only, not for pregnancy planning or contraception, and a doctor or pharmacist is the right person for those. When period_may_be_late is true the say line says the period may be late and suggests checking with a doctor.
| Name | Required | Description | Default |
|---|---|---|---|
| tz | No | The user's IANA time zone, for example Europe/London or America/Chicago, so today is the user's today. Optional: country is enough in most places. | |
| date | No | Day to ask about, YYYY-MM-DD, a real calendar day. Default today where the user is: from tz, else country, else the request, else UTC. | |
| diet | No | Comma separated: vegetarian, vegan, pescatarian, halal. Food ideas are filtered to suit. | |
| country | No | Two-letter country code (UK is read as GB). Sets the kit links (US, GB and IE get local Amazon links) and the time zone for today. Default from the request. | |
| last_period | Yes | First day of the user's most recent period, YYYY-MM-DD. Must be within the last 120 days. | |
| cycle_length | No | Usual days from one period start to the next, 20 to 45. Default 28. | |
| period_length | No | Usual days of bleeding, 2 to 10. Default 5. | |
| last_period_start | No | Older name for last_period, kept for existing callers; last_period is the current name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), so the bar is lower. The description adds real behavioral context beyond them: it requires the last period start, discloses that the 'say' line flags a late period when period_may_be_late is true, and warns against medical interpretation. It does not describe pagination or response shape, but that is minor for a single-result tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then triggers, then inputs, then exclusions — good ordering with every sentence carrying weight except the mild redundancy of restating the pregnancy/contraception exclusion twice ('not for getting pregnant... not for pregnancy planning or contraception').
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries return-value burden and does reasonably well: it says the tool yields phase, workout and food ideas, and a 'say' line that can flag a late period. It is complete enough to call correctly, though it doesn't spell out the full response structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents tz, date, diet, country, cycle_length, period_length and the last_period/last_period_start aliasing. The description only reinforces that last_period is required, adding no syntax or edge-case detail, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — today's cycle phase plus workout and food ideas — and the scope ('Today's') cleanly separates it from syncmycycle_get_week_ahead and syncmycycle_list_phases. An agent can route between the three siblings without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit trigger scenarios with two quoted user utterances ('what phase am I in, my last period started September 12th', 'what should I train today?'), names the required input, and states clear exclusions (pregnancy planning, fertile days, ovulation, contraception) with a redirect to a doctor or pharmacist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
syncmycycle_get_week_aheadSync My Cycle: The days ahead by phaseARead-onlyIdempotentInspect
Sync My Cycle. The days ahead by phase. For when the user wants to plan training or meals for the week, for example "plan my training this week around my cycle". Returns each day's likely phase, workout focus, intensity and food focus. Not for getting pregnant, fertile days, ovulation timing, contraception or pregnancy: this is general wellbeing only, not for pregnancy planning or contraception, and it is not a fertility calendar. When period_may_be_late is true, days is empty and the say line suggests checking with a doctor.
| Name | Required | Description | Default |
|---|---|---|---|
| tz | No | The user's IANA time zone, for example Europe/London or America/Chicago, so today is the user's today. Optional: country is enough in most places. | |
| date | No | First day of the plan, YYYY-MM-DD, a real calendar day. Default today where the user is: from tz, else country, else the request, else UTC. | |
| days | No | How many days, a whole number from 1 to 35. Default 7. | |
| diet | No | Accepted for symmetry with get_todays_phase; the week view has no food list, so it has no effect here. | |
| country | No | Two-letter country code (UK is read as GB), used for the time zone of today. | |
| last_period | Yes | First day of the user's most recent period, YYYY-MM-DD. Must be within the last 120 days. | |
| cycle_length | No | Usual cycle length, 20 to 45. Default 28. | |
| period_length | No | Usual days of bleeding, 2 to 10. Default 5. | |
| last_period_start | No | Older name for last_period, kept for existing callers; last_period is the current name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, open-world, and non-destructive behavior, while the description adds the returned fields and the special case where period_may_be_late=true returns empty days and a doctor-suggestion line. However, that edge case references `days` and `period_may_be_late` without an output schema, and `days` is also an integer input parameter, creating minor ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It front-loads purpose and usage, then returns, exclusions, and edge case, making it easy to scan. The negative scope is repeated in several near-synonymous clauses, which is a small structural inefficiency but appropriate for a safety disclaimer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nine-parameter, no-output-schema tool, the description gives enough to select and call it: purpose, usage, return fields, exclusions, and an edge case. It leaves the output structure and the origin/type of period_may_be_late and the 'say line' undefined, which keeps it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all nine parameters, including defaults, bounds, and aliases. The description adds little parameter meaning; its only parameter-adjacent note (days empty when period_may_be_late) does not map cleanly to the integer `days` input, so it cannot be credited as useful semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the resource (the week ahead by phase) and the concrete return payload (each day's likely phase, workout focus, intensity, food focus), so it is not a tautology. It scopes itself to week planning, which helps distinguish it from the today-oriented sibling, though it does not explicitly name alternatives like get_todays_phase or list_phases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit trigger ('For when the user wants to plan training or meals for the week') with a user-phrase example, and it provides extensive negative scope ('Not for getting pregnant, fertile days, ovulation timing, contraception or pregnancy'). It also flags the period_may_be_late edge case, so the agent knows when the tool is and is not appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
syncmycycle_list_phasesSync My Cycle: What each phase usually feels like, with workout and food ideasARead-onlyIdempotentInspect
Sync My Cycle. What each phase usually feels like, with workout and food ideas. For general questions about cycle syncing that need no dates, for example "what should I eat in my luteal phase?". Not for conception, fertile days, contraception or pregnancy: general wellbeing only, not for pregnancy planning or contraception.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so safety and idempotence are covered. The description adds the important scope boundary (general wellbeing only, not medical/pregnancy/contraception advice), which is valuable behavioral context. It does not describe the output format or prohibitive medical disclaimers beyond scope, keeping it at 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus an example, front-loaded with the tool's purpose and then scope. The example is helpful and earns its place, but the title repetition slightly pads the opening. Efficient overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, no output schema, and rich annotations, the description is nearly complete: it explains purpose, when to use, and exclusions. It could be improved by mentioning how to obtain phase-specific advice (e.g., invoking a phase argument). Adequate but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0 parameters, the baseline is 4. Schema is empty and the description appropriately doesn't invent parameters, correctly indicating a parameterless, prompt-based tool. No further parameter semantics are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool does via the title ('What each phase usually feels like, with workout and food ideas') and a concrete example ('what should I eat in my luteal phase?'). It distinguishes itself from siblings by being the no-dates general-information tool, implicitly contrasting with syncmycycle_get_todays_phase and syncmycycle_get_week_ahead. Not a full 5 because the core verb is somewhat buried in the title rather than the body.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a specific usage condition: 'For general questions about cycle syncing that need no dates.' It also lists clear exclusions ('Not for conception, fertile days, contraception or pregnancy'). Missing is explicit routing to the sibling tools for date-specific or phase-dated queries, so 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
talmud_get_cardTalmud Scroller: Today's reading one line at a time, for voiceCRead-onlyIdempotentInspect
Talmud Scroller. Today's reading one line at a time, for voice.. Talmud: daily readings, plans, search and original text lookup; whole books from the Library, read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | Which card, starting at 1. Defaults to 1. | |
| date | No | Optional day as YYYY-MM-DD. Defaults to today (UTC). | |
| reading | No | A reading or plan id from list_readings. Defaults to today's reading. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, covering the safety profile. The description adds only that output is 'for voice' and delivered 'one line at a time,' which is useful behavioral context but does not describe pagination, indexing behavior, or response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text begins by redundantly repeating the title, contains a double period, and then spends its remaining length on generic suite-level information rather than tool-specific details. It is short but poorly front-loaded and does not earn its sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with a rich schema and annotations, the description still fails to explain what a 'card' is or how this tool relates to its close siblings (talmud_get_reading, talmud_get_today). An agent lacks the context needed to choose this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema fully explains all three parameters (n, date, reading) with defaults. The description adds no parameter meaning beyond what the schema provides, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description largely restates the title ("Talmud Scroller. Today's reading one line at a time, for voice..") and then appends a generic blurb about the entire Talmud suite. It never defines what a 'card' is or distinguishes this tool from sibling tools like talmud_get_reading or talmud_get_today, so an agent cannot tell what unique resource it returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The generic suite blurb ("daily readings, plans, search and original text lookup...") applies to many siblings and gives no condition that would select talmud_get_card over talmud_get_reading or talmud_get_today.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
talmud_get_readingTalmud Scroller: One reading or plan, line by lineCRead-onlyIdempotentInspect
Talmud Scroller. One reading or plan, line by line. Talmud: daily readings, plans, search and original text lookup; whole books from the Library, read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | A reading or plan id from list_readings, or a plan name such as "japji" or "The Gita in 18 Days". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds a little context with "line by line" and "read a passage at a time," implying the return is an incremental passage rather than a whole book, but it says nothing about output shape or limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is brief, but the sentences are wasteful: the title is echoed and the second half enumerates capabilities of the whole Talmud suite (search, original text lookup, whole books) rather than this tool, which misleads rather than informs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description should at minimum say what a call returns (a passage, verse lines, plan steps). Instead it fills the space with sibling-tool capability blurbs, leaving the agent without a clear picture of the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single id parameter is fully documented in the schema (including example plan names like "japji"). The description adds no syntax or format detail beyond what the schema already provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description largely restates the title ("One reading or plan, line by line") and then lists domain-wide capabilities ("daily readings, plans, search and original text lookup; whole books") that belong to the sibling tools rather than this one. It never states plainly that it fetches a single reading/plan by id, and it does not distinguish itself from talmud_get_today, talmud_get_card, or talmud_get_talmud_text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no routing away from alternatives such as talmud_get_today or talmud_read_book. The only soft hint is the id's provenance, which lives in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
talmud_get_talmud_textTalmud Scroller: Original text of any Talmud page or passage, or a Mishnah such as Pirkei...BRead-onlyIdempotentInspect
Talmud Scroller. Original text of any Talmud page or passage, or a Mishnah such as Pirkei Avot 1:14, from Sefaria.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | A tractate and page, for example "Berakhot 2a", "Bava Metzia 59b" or "Shabbat 31a:6". Spoken forms such as "Bava Metzia page 59 b" also work. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered. The description adds only the data source ('from Sefaria'), which is mildly useful but not substantive behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short and front-loaded, but the leading 'Talmud Scroller.' restates the title and consumes space without adding meaning, making one of the two sentences largely redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only tool this is nearly adequate, and the description implies what is returned ('original text'). However, with no output schema and heavy sibling overlap, it leaves the agent without enough to confidently pick this tool over talmud_get_reading or talmud_read_book.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the parameter doc is thorough (examples plus tolerance for spoken forms like 'Bava Metzia page 59 b'). The description adds nothing beyond the schema for the single ref parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (retrieves original text) and resource (a Talmud page, passage, or Mishnah), with a concrete example reference (Pirkei Avot 1:14). It does not, however, differentiate itself from closely related siblings such as talmud_get_reading or talmud_read_book, so an agent cannot tell them apart from the text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives. With seven overlapping talmud_* siblings (get_reading, read_book, search_readings, etc.), the description should route the agent but does not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
talmud_get_todayTalmud Scroller: Today's reading, line by line (same as the app shows today)CRead-onlyIdempotentInspect
Talmud Scroller. Today's reading, line by line (same as the app shows today). Talmud: daily readings, plans, search and original text lookup; whole books from the Library, read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Optional day as YYYY-MM-DD. Defaults to today (UTC). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds only the 'line by line' output shape and 'same as the app shows today' framing, which is mild added context but says nothing about ordering, fallback when no reading exists, or whether the result is empty on non-reading days.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The front-loaded line is fine, but the opening repeats the brand and title, and the trailing 'Talmud: daily readings, plans, search and original text lookup; whole books from the Library, read a passage at a time' is generic catalog copy that doesn't help an agent invoke this specific tool. Several words here don't earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, read-only, single-optional-param tool this is adequate: it conveys that the tool returns today's reading rendered line by line. However, it omits any note on date semantics in prose, sibling differentiation, or what happens on days without a reading — leaving gaps that matter given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single optional 'date' parameter with 100% schema coverage, and the schema already documents the YYYY-MM-DD format and UTC default. The description adds no parameter meaning beyond that, so the baseline 3 for full schema coverage is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The core intent — today's reading, line by line — is stated, but it is buried behind a brand name ('Talmud Scroller') that merely restates the tool and followed by a generic product blurb ('daily readings, plans, search and original text lookup; whole books from the Library'). It never distinguishes this tool from the sibling talmud_get_reading, so an agent can't cleanly tell why 'today' differs from an arbitrary reading.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives like talmud_get_reading or talmud_search_readings. The only scoping hint ('today') is implied by the name, not explained or contrasted with other retrieval tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
talmud_list_booksTalmud Scroller: The whole books in the Library that can be read a passage at a timeCRead-onlyIdempotentInspect
Talmud Scroller. The whole books in the Library that can be read a passage at a time. Talmud: daily readings, plans, search and original text lookup; whole books from the Library, read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered without the description. The description adds nothing beyond that: it does not say what a 'book' entry contains, whether the list is paginated, or how the result feeds into siblings such as talmud_read_book.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The two sentences are largely redundant: 'read a passage at a time' appears verbatim twice, and the middle clause enumerates unrelated app features (daily readings, plans, search, original text lookup) that do not describe this tool. The useful content would fit in a single short sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must explain what the call returns; it does not. For a discovery tool whose whole value is producing book identifiers that talmud_read_book consumes, the absence of any mention of the returned shape leaves an agent incomplete about how to chain the calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. The empty schema with additionalProperties=false is self-explanatory and there is no parameter syntax for the description to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The phrase 'The whole books in the Library that can be read a passage at a time' gestures at listing books, and the name talmud_list_books reinforces it, but the description never says plainly 'list all available books'. The second sentence ('daily readings, plans, search and original text lookup') describes the whole Talmud suite rather than this one tool, muddying rather than sharpening the scope, and nothing distinguishes it from siblings like talmud_read_book.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to call this tool versus talmud_read_book, talmud_list_readings, or talmud_get_reading. An agent must infer that a no-parameter tool named list_books enumerates titles. No prerequisites, no exclusions, no named alternatives despite an obvious cluster of near-identical siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
talmud_list_readingsTalmud Scroller: All curated daily readings and plansCRead-onlyIdempotentInspect
Talmud Scroller. All curated daily readings and plans. Talmud: daily readings, plans, search and original text lookup; whole books from the Library, read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds nothing behavioral beyond that—no mention of what the returned list contains, its scope, or ordering—so it does not earn credit beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first fragment is front-loaded and useful, but the second sentence is a suite-level tagline repurposed for a single listing tool, adding length and ambiguity rather than information. It is short but not efficiently structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with annotations covering safety, the essential missing piece is what a 'reading' or 'plan' entry looks like on return, and there is no output schema to cover that. The description is minimally adequate but leaves the agent guessing at return content.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema carries no semantic burden and the baseline is 4. There are no inputs the description would need to disambiguate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The phrase 'All curated daily readings and plans' names the resource and implies an enumeration, but no explicit verb is given. The second sentence then describes the entire Talmud suite ('daily readings, plans, search and original text lookup'), overlapping with siblings like talmud_search_readings and talmud_get_talmud_text, which muddies what this specific tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no indication of when to call this list tool versus talmud_get_today, talmud_get_reading, or talmud_search_readings. The suite-overview sentence gestures at sibling capabilities but gives no selection criteria or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
talmud_read_bookTalmud Scroller: Follow next for the next passage; it carries on into the next chapterCRead-onlyIdempotentInspect
Talmud Scroller. Follow next for the next passage; it carries on into the next chapter. Talmud: daily readings, plans, search and original text lookup; whole books from the Library, read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | Passage within the section, starting at 1. | |
| ref | No | Optional: jump straight to a passage by its reference, for example "Havamal 139", "Meditations 4.3", "Gita 2.47", "Iliad 1.5" or "10b". Overrides section and n. | |
| book | Yes | Book id or title from list_books, for example pirkei-avot, bekhorot. | |
| section | No | Chapter, book, poem, letter or daf to start at, as listed in the book (for example 5, "chapter 2", "havamal", or 10b for the second side of a daf). Defaults to the beginning; Bekhorot defaults to today's Daf Yomi page while the cycle is in it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so safety and idempotency are covered. The description adds the pagination trait that following 'next' continues across chapters, a modest behavioral detail beyond the annotations, but says nothing about response shape or how the book/passage traversal terminates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first two sentences duplicate the title verbatim, and the third is a run-on blurb listing capabilities (daily readings, plans, search, original text lookup) that belong to other sibling tools rather than this one, muddying scope. Structure is front-loaded but contains recycled and off-tool content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With full schema coverage and a complete annotation set for a simple read tool, the description is adequate to call the tool correctly. It falls short only on sibling differentiation and return/traversal expectations, which is a moderate gap rather than a blocking one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so book, section, n, and ref (including the 'ref overrides section and n' rule) are fully documented in the schema itself. The description adds no parameter-level meaning and only alludes to 'a passage at a time', so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The name plus 'whole books from the Library, read a passage at a time' conveys that this reads a book passage by passage, but the description leads with the 'Talmud Scroller' branding and never states the core action as a clean verb+resource. It does not distinguish this tool from close siblings like talmud_get_reading, talmud_get_talmud_text, or talmud_list_readings, so an agent still has to guess which one to reach for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Follow next for the next passage; it carries on into the next chapter' does describe the sequential-reading workflow, which is real usage guidance for chaining calls. However, there is no explicit when-to-use versus the sibling reading/text tools, and the trailing feature list (daily readings, plans, search) blurs rather than sharpens the usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
talmud_search_readingsTalmud Scroller: Search the curated readings, best match firstBRead-onlyIdempotentInspect
Talmud Scroller. Search the curated readings, best match first. Talmud: daily readings, plans, search and original text lookup; whole books from the Library, read a passage at a time.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Words to search for, for example kindness or Shabbat. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is fully covered. The description adds only the ranking behavior ('best match first'), which is mildly useful but is not a rich behavioral disclosure — no result count, no empty-result behavior, no scope of the corpus searched.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The useful content is front-loaded in the first two sentences, but the third sentence is generic app-level boilerplate about daily readings, plans, and the Library that does not belong in a search tool's definition. It dilutes rather than earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter search with full annotation coverage and no output schema, the description is minimally adequate. It never states what a result contains or how many matches come back, which is a real gap given the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter with 100% schema description coverage, so the schema already documents 'q' with an example. The description adds no syntax, matching, or format guidance beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first two sentences give a specific verb and resource ('Search the curated readings, best match first'), which is clearer than most siblings. However, the trailing sentence ('Talmud: daily readings, plans, search and original text lookup; whole books from the Library...') describes the whole app rather than this tool, so it does not sharpen the distinction from talmud_list_readings or talmud_get_reading.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to use this over talmud_list_readings, talmud_get_reading, or talmud_get_talmud_text, and no prerequisites or exclusions. The agent must infer that 'search' means keyword lookup rather than listing or fetching a known passage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wardrobeconnect_find_clothesWardrobe Connect: Find clothes that match a descriptionARead-onlyIdempotentInspect
Wardrobe Connect. Find clothes that match a short description of one item, such as "black pleated wide-leg trousers" or "cream cable-knit jumper". Takes only the item description and, if wanted, a size, a price limit, the condition and a country; it needs nothing else from the conversation. Returns eBay listings in the Clothing, Shoes and Accessories category, closest matches first and then cheapest first, plus search links for other shops and a Facebook Marketplace search phrase. Listings must match the colour, fabric and kind of garment named, and men's or women's if given; kids' items only when asked for. Adult, fetish and costume listings are never shown, repeat listings of the same item count once, and listings far below the typical price for the search (usually bait or junk) are left out.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Just the item, in a few words: colour, type, fabric or style, and brand if known, for example "navy midi wrap dress". Up to 100 characters, with no other conversation text or personal details. | |
| size | No | The size to match, for example M, XL, 12, UK 9, US 8.5, EU 39 or W32. Dress and shoe sizes are converted between UK, US and EU. | |
| country | No | Two-letter country code for the eBay site and currency. Defaults to where the request comes from. | |
| condition | No | Condition: new, used (pre-owned) or any. Default any. pre-owned and second-hand are read as used. | |
| max_price | No | Most to pay, in the local currency, shipping included. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, open world), yet the description goes well beyond them: result ranking (closest match then cheapest), sources returned (eBay plus other-shop links and a Facebook Marketplace phrase), match requirements (colour/fabric/garment, men's vs women's, kids only on request), and exclusion rules (adult/fetish/costume never shown, duplicates collapsed, below-market bait listings removed).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the tool identity and worked examples before the operational detail, and most clauses (ranking, exclusions, dedupe) carry real decision value. It is long and slightly repetitive about colour/fabric/garment matching, which costs it the top mark.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the return-value burden — and it does, describing ranking order, the eBay source, the supplementary links and the Facebook Marketplace phrase. Combined with annotation coverage of safety and the 100%-documented input schema, an agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter including enums and the size-conversion and condition-normalisation behaviour. The description restates the optional fields (size, price limit, condition, country) without adding syntax or format detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (find) and resource (clothes matching a short description of one item), and the example queries make the scope concrete. Implicitly distinguishes itself from the sibling wardrobeconnect_find_clothes_by_image, which takes an image rather than text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says it needs only the item description plus optional size, price, condition and country, and that it "needs nothing else from the conversation" — useful anti-pattern guidance against dumping chat context. It never names the image-based sibling as the alternative path, so the when-to-use-vs-alternative dimension is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wardrobeconnect_find_clothes_by_imageWardrobe Connect: Find clothes that look like a pictureARead-onlyIdempotentInspect
Wardrobe Connect. Find clothes that look like a picture of one item. Takes the picture's direct https link and, if wanted, a few words naming the item, a size, a price limit, the condition and a country; it needs nothing else from the conversation. Returns visually similar eBay listings from the Clothing, Shoes and Accessories category only, in eBay's look-alike order. If the picture does not show one piece of clothing, matches is empty and the say line asks what the item is. A short item name in q makes the results match it, which removes look-alikes of the wrong kind.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Which item in the picture, in a few words, for example "the camel coat". | |
| size | No | Clothing or shoe size to match, for example M, 10 or UK 8. | |
| country | No | Two-letter country code for the eBay site and currency. Defaults to where the request comes from. | |
| condition | No | Condition: any, new or used. | |
| image_url | Yes | Direct https link to one JPEG, PNG or WebP picture, 6 MB at most. | |
| max_price | No | Highest price, in the local currency. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), so the bar is lower. The description still adds genuine behavioral context beyond them: results are restricted to the eBay Clothing/Shoes/Accessories category, returned in look-alike order, and `matches` is empty when the picture isn't a single garment.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and each sentence conveys distinct information (purpose, params, return format, edge case). The middle sentence enumerating optional params is long and run-on, and the leading brand tag 'Wardrobe Connect.' is minor filler, but there is no outright redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return burden and does so: it names the source, category restriction, ordering, and the empty-matches edge case plus the clarifying follow-up. Missing only secondary details like result count or pagination behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds real semantics on top: the optional params are framed as refinements ('if wanted'), and it explains the behavioral effect of `q` (it makes results match the named item and removes look-alikes of the wrong kind) and that country controls site/currency with a default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (find clothes that look like a picture of one item) and clearly establishes the image-input mechanism. It distinguishes itself functionally from the text sibling wardrobeconnect_find_clothes by requiring a picture link, but never names or contrasts 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage by describing what the tool 'takes' (an https picture link plus optional refinements) and notes 'it needs nothing else from the conversation.' However, it gives no explicit when-to-use/when-not and never routes the agent to the text-search sibling for cases without an image, leaving the choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
wardrobeconnect_find_clothes8 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Two-letter country code. Defaults to where the request comes from. Supported: US, GB, IE, CA, AU, DE, FR, IT, ES."New value: +"Two-letter country code for the eBay site and currency. Defaults to where the request comes from." - added
Input schema / properties / country / enumAdded value: +[ + "US", + "GB", + "IE", + "CA", + "AU", + "DE", + "FR", + "IT", + "ES" +] - changed
Input schema / properties / max_price / descriptionPrevious value: -"Most the user wants to pay, in their local currency, shipping included."New value: +"Most to pay, in the local currency, shipping included." - added
Input schema / properties / max_price / minimumAdded value: +0 - changed
Input schema / properties / q / descriptionPrevious value: -"A clear description of the item: colour, type, fabric or style, brand if known."New value: +"Just the item, in a few words: colour, type, fabric or style, and brand if known, for example \"navy midi wrap dress\". Up to 100 characters, with no other conversation text or personal details." - added
Input schema / properties / q / maxLengthAdded value: +100 - changed
Input schema / properties / size / descriptionPrevious value: -"The user's size, for example M, XL, 12, UK 9, US 8.5, EU 39 or W32. Numbers without UK, US or EU are read in the country's usual sizes. Dress and shoe sizes are converted between UK, US and EU, and dress sizes to S, M and L. Listings that state a different size are left out; listings that state the size come first (size_listed true), then ones that don't say."New value: +"The size to match, for example M, XL, 12, UK 9, US 8.5, EU 39 or W32. Dress and shoe sizes are converted between UK, US and EU." - added
Input schema / properties / size / maxLengthAdded value: +20
- Changed
wardrobeconnect_find_clothes_by_image9 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Two-letter country code for the eBay site and currency, for example US or GB."New value: +"Two-letter country code for the eBay site and currency. Defaults to where the request comes from." - added
Input schema / properties / country / enumAdded value: +[ + "US", + "GB", + "IE", + "CA", + "AU", + "DE", + "FR", + "IT", + "ES" +] - changed
Input schema / properties / image_url / descriptionPrevious value: -"Direct https link to a JPEG, PNG or WebP picture, 6 MB at most."New value: +"Direct https link to one JPEG, PNG or WebP picture, 6 MB at most." - added
Input schema / properties / image_url / formatAdded value: +"uri" - added
Input schema / properties / image_url / maxLengthAdded value: +2048 - added
Input schema / properties / max_price / minimumAdded value: +0 - changed
Input schema / properties / q / descriptionPrevious value: -"Which item in the picture, for example \"the camel coat\". Results must match it, and it is used as a fallback text search."New value: +"Which item in the picture, in a few words, for example \"the camel coat\"." - added
Input schema / properties / q / maxLengthAdded value: +60 - added
Input schema / properties / size / maxLengthAdded value: +20
1 tool update
- Changed
jobspotter_connection_score2 fields changed- changed
Input schema / properties / me / descriptionPrevious value: -"A profile: text, and or fields title, company, past_companies, schools, location, skills."New value: +"A profile: text, and or fields title, company, employers, schools, location, skills." - changed
Input schema / properties / them / descriptionPrevious value: -"A profile: text, and or fields title, company, past_companies, schools, location, skills."New value: +"A profile: text, and or fields title, company, employers, schools, location, skills."
3 tool updates
- Added
jobspotter_about_job_spotter - Removed
jobspotter_join_matching - Removed
jobspotter_post_job
20 tool updates
- Added
artspotter_calculate_resale_royalty - Added
artspotter_check_art_listing - Added
artspotter_check_artworks_feed - Added
artspotter_compare_where_to_sell - Added
artspotter_get_artist_funding - Added
artspotter_get_fair_art_price - Added
artspotter_list_open_calls - Added
artspotter_make_artwork_passport - Added
artspotter_price_commission - Added
artspotter_search_art - Added
artspotter_size_art_for_wall - Added
artspotter_verify_artwork_passport - Added
fairfare_best_time_to_ride - Added
fairfare_check_driver_licence - Added
fairfare_check_fare - Added
fairfare_check_fleet_file - Added
fairfare_estimate_fare - Added
fairfare_get_airport - Added
fairfare_get_taxi_tariff - Added
fairfare_list_cities
6 tool updates
- Added
jobspotter_cover_letter - Added
jobspotter_interview_practice - Added
jobspotter_join_matching - Added
jobspotter_post_job - Changed
jobspotter_search_jobs1 field changed- changed
Input schema / properties / level / descriptionPrevious value: -"Level: entry (junior, graduate, intern), mid or senior."New value: +"Level: entry (junior, graduate, intern), mid or senior. With entry, jobs asking for more than 2 years of experience are left out and the answer adds apprenticeship and graduate routes."
- Added
jobspotter_us_visa_salaries
2 tool updates
- Added
jobspotter_fair_hiring_check - Added
jobspotter_job_demand
19 tool updates
- Added
jobspotter_apply_kit - Added
jobspotter_check_job_link - Added
jobspotter_check_salary - Added
jobspotter_check_visa_sponsor - Added
jobspotter_company_lookup - Added
jobspotter_compare_jobs - Added
jobspotter_connection_score - Added
jobspotter_employer_reply_rate - Added
jobspotter_find_people - Added
jobspotter_hiring_posts - Added
jobspotter_interview_prep - Added
jobspotter_jobs_for_me - Added
jobspotter_match_cv - Added
jobspotter_networking_plan - Added
jobspotter_referral_note - Changed
jobspotter_search_jobs16 fields changed- added
Input schema / properties / benefitsAdded value: +{ + "description": "Benefits the advert must mention, comma separated, for example \"pension, private healthcare\".", + "type": "string" +} - added
Input schema / properties / companyAdded value: +{ + "description": "Only jobs at this company, for example \"Tesco\".", + "type": "string" +} - added
Input schema / properties / educationAdded value: +{ + "description": "Education: degree for jobs asking for a degree, or no degree for jobs that don't.", + "enum": [ + "degree", + "no degree" + ], + "type": "string" +} - added
Input schema / properties / employerAdded value: +{ + "description": "Employer: direct for jobs posted by the employer itself, or agency for recruitment agencies.", + "enum": [ + "direct", + "agency" + ], + "type": "string" +} - added
Input schema / properties / excludeAdded value: +{ + "description": "Words the advert must not contain, comma separated, for example \"sales, commission\".", + "type": "string" +} - added
Input schema / properties / includeAdded value: +{ + "description": "Words the advert must contain, comma separated, for example \"python, aws\".", + "type": "string" +} - added
Input schema / properties / job_typeAdded value: +{ + "description": "Job type: full time, part time, contract, temporary or internship.", + "enum": [ + "full time", + "part time", + "contract", + "temporary", + "internship" + ], + "type": "string" +} - added
Input schema / properties / pageAdded value: +{ + "description": "Which page of results, 1 to 20. Default 1. Use 2 for \"show me more\".", + "maximum": 20, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / radius_milesAdded value: +{ + "description": "How far from the place, in miles, 1 to 100 (boards that support distance).", + "maximum": 100, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / salary_maxAdded value: +{ + "description": "Highest yearly pay, in the local currency.", + "type": "string" +} - added
Input schema / properties / salary_minAdded value: +{ + "description": "Lowest yearly pay, in the local currency, for example 40000 or 40k. Jobs that list no pay are left out when set.", + "type": "string" +} - added
Input schema / properties / shiftAdded value: +{ + "description": "Shift: day, evening, night, weekend or flexible.", + "enum": [ + "day", + "evening", + "night", + "weekend", + "flexible" + ], + "type": "string" +} - added
Input schema / properties / sortAdded value: +{ + "description": "Sort: relevance (default), date (newest first) or pay (highest first).", + "enum": [ + "relevance", + "date", + "pay" + ], + "type": "string" +} - added
Input schema / properties / visa_sponsorshipAdded value: +{ + "description": "Set to yes for jobs whose advert says visa sponsorship is offered.", + "enum": [ + "yes" + ], + "type": "string" +} - changed
Input schema / properties / where / descriptionPrevious value: -"A city (New York, Austin, TX, London, Birmingham, UK), a US state (Texas), a UK county or region (Kent, Yorkshire), a UK postcode, a country (USA, UK, Germany), \"remote\", or remote in a country (\"remote US\")."New value: +"A city (New York, Austin, TX, London, Birmingham, UK), a US state (Texas), a UK county or region (Kent, Yorkshire), a UK postcode, a city or country abroad (Bangalore, Dublin, Dubai, Sydney, India), a country (USA, UK, Germany), \"remote\", or remote in a country (\"remote US\")." - added
Input schema / properties / work_typeAdded value: +{ + "description": "Work type: remote, hybrid or on-site.", + "enum": [ + "remote", + "hybrid", + "on-site" + ], + "type": "string" +}
- Added
jobspotter_similar_jobs - Added
jobspotter_whats_hiring - Added
jobspotter_write_job_advert
52 tool updates
- Changed
appealmyclaim_draft_appeal_letter3 fields changed- changed
Input schema / properties / plan_type / descriptionPrevious value: -"Same values as /v1/rights. Changes the wording for Medicare."New value: +"Same values as plan_type in get_appeal_rights. Changes the wording for Medicare." - changed
Input schema / properties / reason / descriptionPrevious value: -"Why the claim was denied: medical_necessity, emergency (said it wasn't an emergency), experimental, out_of_network, prior_auth, coding or generic. Plain words work too. Required unless denial_code is given."New value: +"Why the claim was denied: medical_necessity, emergency (said it wasn't an emergency), experimental, out_of_network, prior_auth, coding or generic. Required unless denial_code is given." - changed
Input schema / properties / urgent / descriptionPrevious value: -"yes to ask for an expedited review."New value: +"Set to yes to ask for an expedited review."
- Changed
appealmyclaim_explain_denial_code1 field changed- changed
Input schema / properties / plan_type / descriptionPrevious value: -"Same values as /v1/rights. Carried into the letter link."New value: +"Same values as plan_type in get_appeal_rights. Carried into the letter link."
- Changed
appealmyclaim_get_appeal_deadlines2 fields changed- changed
Input schema / properties / plan_type / descriptionPrevious value: -"Same values as /v1/rights. Default: most private plans."New value: +"Same values as plan_type in get_appeal_rights. Default: most private plans." - changed
Input schema / properties / urgent / descriptionPrevious value: -"yes if waiting could seriously harm the person's health."New value: +"Set to yes if waiting could seriously harm the person's health."
- Changed
appealmyclaim_get_appeal_rights1 field changed- changed
Input schema / properties / plan_type / descriptionPrevious value: -"marketplace, employer, employer_insured, employer_self_funded, medicare, medicare_advantage, part_d or medicaid. Everyday words work too, like \"job\", \"Obamacare\" or \"Medi-Cal\". Default: most private plans."New value: +"Plan type: marketplace, employer, employer_insured, employer_self_funded, medicare, medicare_advantage, part_d or medicaid. Everyday words work too, like \"job\", \"Obamacare\" or \"Medi-Cal\". Default: most private plans."
- Changed
bible_get_card1 field changed- changed
Input schema / properties / reading / descriptionPrevious value: -"A reading or plan id from /readings. Defaults to today's reading."New value: +"A reading or plan id from list_readings. Defaults to today's reading."
- Changed
bible_get_passage1 field changed- changed
Input schema / properties / ref / descriptionPrevious value: -"For example: John 3:16"New value: +"For example: John 3:16."
- Changed
bible_get_reading1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"A reading or plan id from /readings, or a plan name such as \"japji\" or \"The Gita in 18 Days\"."New value: +"A reading or plan id from list_readings, or a plan name such as \"japji\" or \"The Gita in 18 Days\"."
- Changed
cancelmysub_get_cancel_reminder1 field changed- changed
Input schema / properties / service / descriptionPrevious value: -"The subscription, as for getCancelSteps."New value: +"The subscription, as for get_cancel_steps."
- Changed
cancelmysub_list_services1 field changed- changed
Input schema / properties / category / descriptionPrevious value: -"streaming, music, membership, gym, news, meal kit, software, app store, dating, wellness, home security, phone and internet, tv and broadband."New value: +"Category: streaming, music, membership, gym, news, meal kit, software, app store, dating, wellness, home security, phone and internet, tv and broadband."
- Changed
cheapestprice_check_price2 fields changed- changed
Input schema / properties / q / descriptionPrevious value: -"The product, as specific as possible, for example AirPods Pro 2"New value: +"The product, as specific as possible, for example AirPods Pro 2." - changed
Input schema / properties / used / descriptionPrevious value: -"Include used items on eBay"New value: +"Include used items on eBay."
- Changed
faredeals_cheapest_dates1 field changed- changed
Input schema / properties / month / descriptionPrevious value: -"2026-11"New value: +"2026-11."
- Changed
faredeals_find_deals3 fields changed- changed
Input schema / properties / max_price / descriptionPrevious value: -"Budget in US dollars"New value: +"Budget in US dollars." - changed
Input schema / properties / month / descriptionPrevious value: -"Departure month 2026-11 or date 2026-11-14"New value: +"Departure month 2026-11 or date 2026-11-14." - changed
Input schema / properties / return / descriptionPrevious value: -"Return month or date"New value: +"Return month or date."
- Changed
findmymoney_get_sources1 field changed- changed
Input schema / properties / type / descriptionPrevious value: -"tax, retirement, bonds, banks, investments, refunds, insurance, deceased, wages, courts, tribal or all. Everyday words like 401k, pension, stocks or \"my dad died\" also work; UK words like HMRC, Premium Bonds or Child Trust Fund give the UK answer."New value: +"Type: tax, retirement, bonds, banks, investments, refunds, insurance, deceased, wages, courts, tribal or all. Everyday words like 401k, pension, stocks or \"my dad died\" also work; UK words like HMRC, Premium Bonds or Child Trust Fund give the UK answer."
- Changed
formguide_compare_teams3 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Pass US or CA to add US Eastern kick-off times to the say line (and to each fixture's us_eastern, which is always there when a time is known)."New value: +"US or CA adds US Eastern kick-off times to the say line (and to each fixture's us_eastern, which is always there when a time is known)." - changed
Input schema / properties / team1 / descriptionPrevious value: -"Older name for home, kept for existing callers. Use home."New value: +"Older name for home, kept for existing callers; home is the current name." - changed
Input schema / properties / team2 / descriptionPrevious value: -"Older name for away, kept for existing callers. Use away."New value: +"Older name for away, kept for existing callers; away is the current name."
- Changed
formguide_get_fixtures1 field changed- changed
Input schema / properties / country / descriptionPrevious value: -"Pass US or CA to add US Eastern kick-off times to the say line (and to each fixture's us_eastern, which is always there when a time is known)."New value: +"US or CA adds US Eastern kick-off times to the say line (and to each fixture's us_eastern, which is always there when a time is known)."
- Changed
formguide_get_team1 field changed- changed
Input schema / properties / q / descriptionPrevious value: -"Older name for team, kept for existing callers. Use team."New value: +"Older name for team, kept for existing callers; team is the current name."
- Changed
gita_get_card1 field changed- changed
Input schema / properties / reading / descriptionPrevious value: -"A reading or plan id from /readings. Defaults to today's reading."New value: +"A reading or plan id from list_readings. Defaults to today's reading."
- Changed
gita_get_reading1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"A reading or plan id from /readings, or a plan name such as \"japji\" or \"The Gita in 18 Days\"."New value: +"A reading or plan id from list_readings, or a plan name such as \"japji\" or \"The Gita in 18 Days\"."
- Changed
gita_get_verse1 field changed- changed
Input schema / properties / verse / descriptionPrevious value: -"For example: 47-51"New value: +"For example: 47-51."
- Changed
gita_read_book1 field changed- changed
Input schema / properties / book / descriptionPrevious value: -"Book id or title from /books, for example gita."New value: +"Book id or title from list_books, for example gita."
- Changed
gurbani_get_card1 field changed- changed
Input schema / properties / reading / descriptionPrevious value: -"A reading or plan id from /readings. Defaults to today's reading."New value: +"A reading or plan id from list_readings. Defaults to today's reading."
- Changed
gurbani_get_reading1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"A reading or plan id from /readings, or a plan name such as \"japji\" or \"The Gita in 18 Days\"."New value: +"A reading or plan id from list_readings, or a plan name such as \"japji\" or \"The Gita in 18 Days\"."
- Changed
gurbani_read_book1 field changed- changed
Input schema / properties / book / descriptionPrevious value: -"Book id or title from /books, for example japji, sukhmani."New value: +"Book id or title from list_books, for example japji, sukhmani."
- Changed
halalornot_get_prayer_times2 fields changed- changed
Input schema / properties / lat / descriptionPrevious value: -"Latitude of the place, in decimal degrees. Use with lon instead of city."New value: +"Latitude of the place, in decimal degrees. Goes with lon instead of city." - changed
Input schema / properties / lon / descriptionPrevious value: -"Longitude of the place, in decimal degrees. Use with lat instead of city."New value: +"Longitude of the place, in decimal degrees. Goes with lat instead of city."
- Changed
halalornot_search_products1 field changed- changed
Input schema / properties / country / descriptionPrevious value: -"Open Food Facts country slug, for example united-kingdom, united-states, france. Use 'world' for no filter. Also picks the Amazon store for halal versions (amazon.co.uk for the UK and Ireland)."New value: +"Open Food Facts country slug, for example united-kingdom, united-states, france. 'world' means no filter. Also picks the Amazon store for halal versions (amazon.co.uk for the UK and Ireland)."
- Changed
jobspotter_get_job1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"The id from a /v1/jobs result, copied exactly, for example muse-22049500, remotive-2091141 or nhsjobs-C9413-26-0725. Some ids are longer, with a ~ and a code after it."New value: +"The id from a search_jobs result, copied exactly, for example muse-22049500, remotive-2091141 or nhsjobs-C9413-26-0725. Some ids are longer, with a ~ and a code after it."
- Changed
jobspotter_search_jobs2 fields changed- changed
Input schema / properties / level / descriptionPrevious value: -"entry (junior, graduate, intern), mid or senior."New value: +"Level: entry (junior, graduate, intern), mid or senior." - changed
Input schema / properties / posted_within_days / descriptionPrevious value: -"Only jobs posted in the last N days, 1 to 90. Default 30. Use 7 for \"this week\"."New value: +"Only jobs posted in the last N days, 1 to 90. Default 30. 7 means this week."
- Changed
lore_get_card1 field changed- changed
Input schema / properties / reading / descriptionPrevious value: -"A reading or plan id from /readings. Defaults to today's reading."New value: +"A reading or plan id from list_readings. Defaults to today's reading."
- Changed
lore_get_reading1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"A reading or plan id from /readings, or a plan name such as \"japji\" or \"The Gita in 18 Days\"."New value: +"A reading or plan id from list_readings, or a plan name such as \"japji\" or \"The Gita in 18 Days\"."
- Changed
lore_read_book1 field changed- changed
Input schema / properties / book / descriptionPrevious value: -"Book id or title from /books, for example iliad, odyssey."New value: +"Book id or title from list_books, for example iliad, odyssey."
- Changed
lowermybill_get_bill_help1 field changed- changed
Input schema / properties / bill / descriptionPrevious value: -"internet, mobile, electricity (or heating, gas), water, tv, streaming, car insurance, home insurance, credit card, council tax (UK), or a provider name. Up to 60 characters."New value: +"Bill: internet, mobile, electricity (or heating, gas), water, tv, streaming, car insurance, home insurance, credit card, council tax (UK), or a provider name. Up to 60 characters."
- Changed
lowermybill_get_bill_script1 field changed- changed
Input schema / properties / bill / descriptionPrevious value: -"internet (or broadband), mobile, tv, streaming, car insurance, home insurance, electricity (or energy, gas), water, credit card, gym or council tax (UK). Up to 60 characters."New value: +"Bill: internet (or broadband), mobile, tv, streaming, car insurance, home insurance, electricity (or energy, gas), water, credit card, gym or council tax (UK). Up to 60 characters."
- Changed
lowermybill_get_call_reminder2 fields changed- changed
Input schema / properties / bill / descriptionPrevious value: -"Bill type, as for getBillScript. Give bill, provider or both."New value: +"Bill type, as for get_bill_script. Give bill, provider or both." - changed
Input schema / properties / provider / descriptionPrevious value: -"Company name, as for getBillScript."New value: +"Company name, as for get_bill_script."
- Changed
medbillcheck_check_price1 field changed- changed
Input schema / properties / setting / descriptionPrevious value: -"office (clinic, office, imaging center) or facility (hospital or surgery center). Leave out to use the usual setting."New value: +"Setting: office (clinic, office, imaging center) or facility (hospital or surgery center). Leave out to use the usual setting."
- Changed
medbillcheck_check_whole_bill1 field changed- changed
Input schema / properties / setting / descriptionPrevious value: -"office or facility. Leave out if not known."New value: +"Setting: office or facility. Leave out if not known."
- Changed
medbillcheck_draft_bill_letter3 fields changed- changed
Input schema / properties / insured / descriptionPrevious value: -"no if paying without insurance (self-pay), for a discount letter."New value: +"Set to no if paying without insurance (self-pay), for a discount letter." - changed
Input schema / properties / setting / descriptionPrevious value: -"office or facility (hospital or surgery center), for the benchmark in a dispute letter. ER visits and hospital clinic visits count as facility anyway."New value: +"Setting: office or facility (hospital or surgery center), for the benchmark in a dispute letter. ER visits and hospital clinic visits count as facility anyway." - changed
Input schema / properties / type / descriptionPrevious value: -"itemized (ask for an itemized bill), dispute (ask for a charge to be reviewed), discount (prompt-pay or self-pay discount), or assistance (financial assistance or charity care)."New value: +"Type: itemized (ask for an itemized bill), dispute (ask for a charge to be reviewed), discount (prompt-pay or self-pay discount), or assistance (financial assistance or charity care)."
- Changed
mizan_calculate_zakat10 fields changed- changed
Input schema / properties / business_stock / descriptionPrevious value: -"Value of business stock for sale"New value: +"Value of business stock for sale." - changed
Input schema / properties / cash / descriptionPrevious value: -"Cash and bank balances"New value: +"Cash and bank balances." - changed
Input schema / properties / debts_due_now / descriptionPrevious value: -"Debts due now, deducted"New value: +"Debts due now, deducted." - changed
Input schema / properties / gold_grams / descriptionPrevious value: -"Gold held, in grams"New value: +"Gold held, in grams." - changed
Input schema / properties / gold_value / descriptionPrevious value: -"Or the value of gold held"New value: +"Or the value of gold held." - changed
Input schema / properties / owed_to_you / descriptionPrevious value: -"Money owed to you that you expect to be repaid"New value: +"Money owed to you that you expect to be repaid." - changed
Input schema / properties / share_zakatable_pct / descriptionPrevious value: -"Share of long-term holdings treated as zakatable, default 25"New value: +"Share of long-term holdings treated as zakatable, default 25." - changed
Input schema / properties / shares_longterm / descriptionPrevious value: -"Market value of shares held long term"New value: +"Market value of shares held long term." - changed
Input schema / properties / silver_grams / descriptionPrevious value: -"Silver held, in grams"New value: +"Silver held, in grams." - changed
Input schema / properties / silver_value / descriptionPrevious value: -"Or the value of silver held"New value: +"Or the value of silver held."
- Changed
planmyworkout_get_workout_plan2 fields changed- changed
Input schema / properties / goal / descriptionPrevious value: -"strength, muscle, general (default), conditioning (use this for fat loss or weight loss requests), running or mobility."New value: +"Goal: strength, muscle, general (default), conditioning (covers fat loss or weight loss requests), running or mobility." - changed
Input schema / properties / level / descriptionPrevious value: -"beginner (default) or intermediate. Advanced is treated as intermediate."New value: +"Level: beginner (default) or intermediate. Advanced is treated as intermediate."
- Changed
planmyworkout_list_exercises3 fields changed- changed
Input schema / properties / equipment / descriptionPrevious value: -"none, dumbbells, barbell, gym, bands, kettlebell, pullupbar or jumprope."New value: +"Equipment: none, dumbbells, barbell, gym, bands, kettlebell, pullupbar or jumprope." - changed
Input schema / properties / level / descriptionPrevious value: -"beginner leaves out harder moves."New value: +"Level: beginner leaves out harder moves." - changed
Input schema / properties / muscle / descriptionPrevious value: -"chest, back, shoulders, arms, biceps, triceps, legs, quads, hamstrings, glutes, calves, core (or abs), cardio or mobility. Also forearms (grip) and traps."New value: +"Muscle: chest, back, shoulders, arms, biceps, triceps, legs, quads, hamstrings, glutes, calves, core (or abs), cardio or mobility. Also forearms (grip) and traps."
- Changed
platepal_get_meal_ideas3 fields changed- changed
Input schema / properties / diet / descriptionPrevious value: -"vegetarian, vegan, pescatarian or halal."New value: +"Diet: vegetarian, vegan, pescatarian or halal." - changed
Input schema / properties / goal / descriptionPrevious value: -"high protein, low carb, budget, quick or high fibre."New value: +"Goal: high protein, low carb, budget, quick or high fibre." - changed
Input schema / properties / meal / descriptionPrevious value: -"breakfast, lunch, dinner or snack."New value: +"Meal: breakfast, lunch, dinner or snack."
- Changed
pricedropback_get_claim_reminder1 field changed- changed
Input schema / properties / member / descriptionPrevious value: -"true to use the longer members' window where the store has one (for example My Best Buy Plus or Total)."New value: +"Set to true to use the longer members' window where the store has one (for example My Best Buy Plus or Total)."
- Changed
spinmyday_spin_my_day2 fields changed- changed
Input schema / properties / budget / descriptionPrevious value: -"any, or free for free things only."New value: +"Budget: any, or free for free things only." - changed
Input schema / properties / seed / descriptionPrevious value: -"Repeat a spin exactly; each answer includes a spin_again link with a new seed"New value: +"Repeat a spin exactly; each answer includes a spin_again link with a new seed."
- Changed
stoics_get_card1 field changed- changed
Input schema / properties / reading / descriptionPrevious value: -"A reading or plan id from /readings. Defaults to today's reading."New value: +"A reading or plan id from list_readings. Defaults to today's reading."
- Changed
stoics_get_reading1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"A reading or plan id from /readings, or a plan name such as \"japji\" or \"The Gita in 18 Days\"."New value: +"A reading or plan id from list_readings, or a plan name such as \"japji\" or \"The Gita in 18 Days\"."
- Changed
stoics_read_book1 field changed- changed
Input schema / properties / book / descriptionPrevious value: -"Book id or title from /books, for example meditations, enchiridion."New value: +"Book id or title from list_books, for example meditations, enchiridion."
- Changed
syncmycycle_get_todays_phase2 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Two-letter country code (UK is read as GB). Sets the kit links (US, GB and IE get local Amazon links) and the time zone for today. Pass it for users outside the US. Default from the request."New value: +"Two-letter country code (UK is read as GB). Sets the kit links (US, GB and IE get local Amazon links) and the time zone for today. Default from the request." - changed
Input schema / properties / last_period_start / descriptionPrevious value: -"Older name for last_period, kept for existing callers. Use last_period."New value: +"Older name for last_period, kept for existing callers; last_period is the current name."
- Changed
syncmycycle_get_week_ahead3 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Two-letter country code (UK is read as GB), used for the time zone of today. Pass it for users outside the US."New value: +"Two-letter country code (UK is read as GB), used for the time zone of today." - changed
Input schema / properties / diet / descriptionPrevious value: -"Accepted for symmetry with /v1/today; the week view has no food list, so it has no effect here."New value: +"Accepted for symmetry with get_todays_phase; the week view has no food list, so it has no effect here." - changed
Input schema / properties / last_period_start / descriptionPrevious value: -"Older name for last_period, kept for existing callers. Use last_period."New value: +"Older name for last_period, kept for existing callers; last_period is the current name."
- Changed
talmud_get_card1 field changed- changed
Input schema / properties / reading / descriptionPrevious value: -"A reading or plan id from /readings. Defaults to today's reading."New value: +"A reading or plan id from list_readings. Defaults to today's reading."
- Changed
talmud_get_reading1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"A reading or plan id from /readings, or a plan name such as \"japji\" or \"The Gita in 18 Days\"."New value: +"A reading or plan id from list_readings, or a plan name such as \"japji\" or \"The Gita in 18 Days\"."
- Changed
talmud_read_book1 field changed- changed
Input schema / properties / book / descriptionPrevious value: -"Book id or title from /books, for example pirkei-avot, bekhorot."New value: +"Book id or title from list_books, for example pirkei-avot, bekhorot."
- Changed
wardrobeconnect_find_clothes1 field changed- changed
Input schema / properties / condition / descriptionPrevious value: -"new, used (pre-owned) or any. Default any. pre-owned and second-hand are read as used."New value: +"Condition: new, used (pre-owned) or any. Default any. pre-owned and second-hand are read as used."
- Changed
wardrobeconnect_find_clothes_by_image1 field changed- changed
Input schema / properties / condition / descriptionPrevious value: -"any, new or used."New value: +"Condition: any, new or used."
118 tool updates
- First observed
appealmyclaim_draft_appeal_letter - First observed
appealmyclaim_explain_denial_code - First observed
appealmyclaim_get_appeal_deadlines - First observed
appealmyclaim_get_appeal_rights - First observed
bible_get_card - First observed
bible_get_passage - First observed
bible_get_reading - First observed
bible_get_today - First observed
bible_list_readings - First observed
bible_search_readings - First observed
bookslikethis_find_similar_books - First observed
bookslikethis_get_author_books - First observed
bookslikethis_get_book - First observed
cancelmysub_get_cancel_reminder - First observed
cancelmysub_get_cancel_steps - First observed
cancelmysub_identify_charge - First observed
cancelmysub_list_services - First observed
cheapestprice_check_price - First observed
faredeals_cheapest_dates - First observed
faredeals_find_deals - First observed
faredeals_look_up_place - First observed
findmymoney_get_sources - First observed
findmymoney_get_state_search - First observed
formguide_compare_teams - First observed
formguide_get_fixtures - First observed
formguide_get_results - First observed
formguide_get_table - First observed
formguide_get_team - First observed
gita_get_card - First observed
gita_get_chapter - First observed
gita_get_reading - First observed
gita_get_today - First observed
gita_get_verse - First observed
gita_list_books - First observed
gita_list_readings - First observed
gita_read_book - First observed
gita_search_readings - First observed
gurbani_get_ang - First observed
gurbani_get_card - First observed
gurbani_get_reading - First observed
gurbani_get_shabad - First observed
gurbani_get_today - First observed
gurbani_list_books - First observed
gurbani_list_readings - First observed
gurbani_read_book - First observed
gurbani_search_readings - First observed
halalornot_ask_is_it_halal - First observed
halalornot_check_crypto - First observed
halalornot_check_fund - First observed
halalornot_check_ingredients - First observed
halalornot_check_medicine - First observed
halalornot_check_product_by_barcode - First observed
halalornot_explain_ingredient - First observed
halalornot_explain_schools - First observed
halalornot_get_prayer_times - First observed
halalornot_list_rules - First observed
halalornot_list_topics - First observed
halalornot_screen_stock - First observed
halalornot_search_products - First observed
jobspotter_get_job - First observed
jobspotter_search_jobs - First observed
lore_get_card - First observed
lore_get_reading - First observed
lore_get_today - First observed
lore_list_books - First observed
lore_list_readings - First observed
lore_read_book - First observed
lore_search_readings - First observed
lowermybill_get_bill_help - First observed
lowermybill_get_bill_script - First observed
lowermybill_get_call_reminder - First observed
medbillcheck_check_price - First observed
medbillcheck_check_whole_bill - First observed
medbillcheck_draft_bill_letter - First observed
medbillcheck_look_up_hospital - First observed
medbillcheck_search_services - First observed
mizan_calculate_zakat - First observed
mizan_find_halal_alternatives - First observed
mizan_list_standards - First observed
mizan_purify_dividend - First observed
mizan_screen_company - First observed
mizan_screen_portfolio - First observed
planmyworkout_get_exercise - First observed
planmyworkout_get_workout_plan - First observed
planmyworkout_list_exercises - First observed
platepal_get_barcode_nutrition - First observed
platepal_get_food_nutrition - First observed
platepal_get_meal_ideas - First observed
pricedropback_check_price_drop_claim - First observed
pricedropback_get_claim_reminder - First observed
pricedropback_get_store_policy - First observed
pricedropback_list_stores - First observed
spinmyday_list_vibes - First observed
spinmyday_spin_my_day - First observed
stoics_get_card - First observed
stoics_get_reading - First observed
stoics_get_today - First observed
stoics_list_books - First observed
stoics_list_readings - First observed
stoics_read_book - First observed
stoics_search_readings - First observed
supplementcheck_check_dose - First observed
supplementcheck_check_stack - First observed
supplementcheck_get_nutrient - First observed
supplementcheck_get_supplement - First observed
syncmycycle_get_todays_phase - First observed
syncmycycle_get_week_ahead - First observed
syncmycycle_list_phases - First observed
talmud_get_card - First observed
talmud_get_reading - First observed
talmud_get_talmud_text - First observed
talmud_get_today - First observed
talmud_list_books - First observed
talmud_list_readings - First observed
talmud_read_book - First observed
talmud_search_readings - First observed
wardrobeconnect_find_clothes - First observed
wardrobeconnect_find_clothes_by_image
Related MCP Connectors
Quran MCP server for translation, tafsir, mutashabihat, recitation playlists, and prayer times.
22 utility tools (x402 USDC on Base): currency, PDF, image, GDPR. Free health.
Meta Ads and Google Ads MCP server: 250+ tools for Claude, ChatGPT, Cursor and Codex.
Official MCP server for Agentwork — delegate tasks to AI agents with human-in-the-loop
Related MCP Servers
- AlicenseBqualityDmaintenanceDynamic MCP server — 30+ tools across fact verification, agent memory, Indian NLP, contract risk, security threat modelling, sales call intelligence and more. x402/USDC micropayments on Base.336 npmMIT
- FlicenseNot gradedqualityDmaintenanceThis server integrates the OASIS, OpenSERV, and STAR platforms to provide tools for managing digital identities, minting NFTs, and orchestrating AI agent workflows. It also supports smart contract generation across multiple blockchains and direct Solana RPC operations for transaction management.-
- AlicenseBqualityAmaintenanceGives your AI assistant full control of a Discord server: 148 tools for chat, moderation, automod, events, and administration, up to building a complete community server from one paragraph. Every destructive action previews first and waits for your confirmation.15586 npm8Elastic 2.0
- AlicenseNot gradedqualityCmaintenanceA comprehensive Discord MCP server enabling AI assistants to run a Discord community through 111 tools for messaging, moderation, roles, channels, forums, webhooks, and more, plus a raw REST API passthrough for full Discord API access.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.