Skip to main content
Glama

booksy-mcp

Install in 3 minutes

Paste this into Claude Code or Codex:

Install booksy-mcp following https://github.com/PiotrZapolski/booksy-mcp/blob/master/INSTALL.md and walk me through it step by step.

Your agent does the setup. You only turn on Chrome Developer mode, click "Load unpacked", type a pairing code and restart the client. Or run node dist/index.js setup yourself after building (see Install). Polish: README.pl.md.

An MCP server for Booksy Biz. It lets your AI assistant read your salon's calendar, staff schedules, clients, payments and reports through your own logged-in browser tab.

Status: pre-release. The tools were built from the panel's public JavaScript and tested with synthetic data. They have not yet been run against a live panel, so expect some to need fixes. See docs/verification.md. Not yet published to npm or the Chrome Web Store.

Unofficial. Not affiliated with, endorsed by or supported by Booksy. Read Risks first.

Why it works through your browser

Booksy Biz has no self-serve API for salon owners, and the panel is protected by your login session. Copying that session to a script or a server is the wrong answer: whoever holds the session holds your salon and your clients' data.

So this tool never touches the session. Every request is made by the panel itself, in your own tab:

  • No session token is read, copied or stored. The extension asks the panel's own HTTP client to make the call, so the panel adds its own login headers and our code never sees them.

  • Your real browser makes the request. Nothing imitates a browser, because it is one. There is no captcha or bot-protection bypass. If Booksy shows a captcha or blocks a request, this tool stops.

  • Everything stays on your computer. There is no hosted service and no telemetry. Data goes from your tab to your local server to your MCP client.

flowchart LR
    A[MCP client] -- stdio --> B[booksy-mcp<br/>on your computer]
    B -- WebSocket on 127.0.0.1<br/>paired --> C[Chrome extension]
    C -- one function per call --> D[Your Booksy Biz tab]
    D -- the panel's own client --> E[Booksy]

Calm traffic

Requests stay at the pace of a person using the panel, so the tool puts no more load on Booksy than you would. Safe mode is on by default and sets the numbers.

  • One at a time. There is a single queue, and requests are never parallel, in any mode.

  • Spaced and capped. Gaps, budgets and limits are listed under Safe mode.

  • Cached. Repeated reads are answered locally.

  • Only what the panel calls. There is a fixed list of endpoints, enforced in the server and again in the extension.

  • No retries. A 403, a 429, a block or a captcha stops everything at once, in any mode.

Related MCP server: byob

Install

Shortcut: node dist/index.js setup (or npx -y booksy-mcp setup once published) adds the server to Claude Code, Codex and Claude Desktop, unpacks the extension to ~/booksy-mcp/extension and prints the next steps. Options: --client claude-code|codex|claude-desktop|all, --dry-run, --uninstall. Agents follow INSTALL.md. The manual steps are below.

You need Node.js 20 or newer and Chrome 121 or newer.

1. Get the code

Until the package is on npm, build it from source:

git clone https://github.com/PiotrZapolski/booksy-mcp.git
cd booksy-mcp
npm ci
npm run build

Once published, npx -y booksy-mcp will replace the path used below.

2. Load the extension

  1. Open chrome://extensions and turn on Developer mode.

  2. Click Load unpacked and pick the extension/dist folder.

After publishing, npx -y booksy-mcp extension will copy the extension to a folder and print its path.

The extension asks for access to booksy.com/pro, the report frame on stats-and-reports.booksy.com and the local port. It also uses idle, to see that the computer is in use. It has no content script and leaves the panel untouched between calls. API calls to pl.booksy.com are made by the panel page itself.

3. Add the server to your MCP client

Claude Code

claude mcp add booksy -- node /path/to/booksy-mcp/dist/index.js

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "booksy": {
      "command": "node",
      "args": ["/path/to/booksy-mcp/dist/index.js"]
    }
  }
}

Codex (~/.codex/config.toml)

[mcp_servers.booksy]
command = "node"
args = ["/path/to/booksy-mcp/dist/index.js"]

4. Pair

  1. Open Booksy Biz in Chrome and log in.

  2. Ask your assistant to run session_status. It shows an 8-character code.

  3. Open the Booksy MCP Bridge extension popup, enter the code and click Connect.

Pairing happens once. booksy-mcp reset-pairing starts over.

Keep the panel tab open while you use the tools. If several panel tabs are open, the active one is used, and the tools act on the salon open in that tab.

Configuration

All settings are optional. Use environment variables, or ~/.config/booksy-mcp/config.json with the names in the second column. Environment variables win.

Environment variable

config.json

Default

Meaning

BOOKSY_MCP_WRITE_TOOLS

writeTools

none

Write tools to enable, see Writes

BOOKSY_MCP_DISABLED_TOOLS

disabledTools

none

Tools to turn off, reads included

BOOKSY_MCP_EXPORT_DIR

exportDir

~/BooksyExports

Where files are saved

BOOKSY_MCP_REDACT_PII

redactPii

off

Mask client e-mails and phone numbers, see Security and privacy

BOOKSY_MCP_SAFE_MODE

safeMode

on

See Safe mode. Only 0, false, off, no turn it off

BOOKSY_MCP_MIN_INTERVAL_MS

minIntervalMs

none

Longer gap. Cannot go below safe mode

BOOKSY_MCP_MAX_REQUESTS_PER_HOUR

maxRequestsPerHour

none

Lower hourly limit. Cannot go above safe mode

BOOKSY_MCP_MAX_RESULT_CHARS

maxResultChars

150000

Larger results go to a file

BOOKSY_MCP_PORT

port

47821

Local port, also set it in the extension

BOOKSY_MCP_EXTENSION_ID

extensionIds

built-in id

Accepted extension id

Only one MCP client can use a port at a time. A second client gets a clear error. Give it another port, or close the first one.

Safe mode

Safe mode is on unless you turn it off with BOOKSY_MCP_SAFE_MODE=0 or "safeMode": false. A typo or any other value keeps it on. session_status shows the mode, the use of each budget and any cooldown. All thresholds live in src/config.ts.

Threshold

Safe mode

Safe mode off

Meaning

minIntervalMs

4 s

none

Gap after the previous request has finished

jitterRatio

1

0

Random extra on any gap, so 4 s means 4 to 8 s

writeIntervalMs

30 s

none

Gap between writes, which go one by one

exportIntervalMs

60 s

none

Gap between report exports

maxRequestsPerHour

120

none

Requests in any 60 minutes

maxRequestsPerDay

500

none

Requests in any 24 hours

maxExportsPerDay

15

none

Report exports in any 24 hours

maxExportsPerCall

5

none

Reports in one report_export_batch

maxPagesPerCall

15

none

Requests one tool call may make

maxRangeDays

92

none

Longest range of a calendar or shift tool

maxReportDays

366

none

Longest period of a report

windowDays

14

31

Calendar ranges are read in windows of this length

windowPauseMs

10 s

none

Pause between windows or weeks of one call

cacheMultiplier

5

1

Cache lives 5, 25 or 50 minutes instead of 1, 5 or 10

minFreshSeconds

60

0

fresh still uses an answer younger than this

maxBackgroundMs

20 min

none

No requests when the panel tab is in the background or minimized, or the computer idle or locked, for longer

blockCooldownMs

6 h

15 min

Stop after a 429, a captcha or request_blocked

forbiddenCooldownMs

1 h

15 min

Stop after a plain 403, which can also mean a missing permission

Budgets and a cooldown are kept in traffic.json in the state folder, so restarting your MCP client does not reset them. That file holds timestamps and a reason, nothing else.

A stop is a stop, in both modes. After a 403, a 429, a captcha or request_blocked, nothing else goes out, requests waiting in line are dropped, and nothing is retried. Check the panel in your browser. If it works and you know why the stop happened, booksy-mcp reset-cooldown ends it early. Tools cannot do that, so an assistant cannot lift a stop by itself.

With safe mode off there are no budgets and no gaps. Requests stay one at a time, and a stop still stops. The server warns about this at start and in session_status. You take the risk.

Tools

Names follow Booksy's own resources: <resource>_<action>. There are many tools, so if your client loads all of them at start, turn off what you do not need with BOOKSY_MCP_DISABLED_TOOLS.

Read

Session and business

  • session_status: Shows whether the extension is connected, the pairing code when pairing is needed, the salon open in the panel, enabled write tools, the traffic mode, budget use and any cooldown.

  • opening_hours: Opening hours of the business, day by day, for the week of the given date.

  • business_accounts: Lists the businesses the logged-in user can open in the panel.

  • business_profile: Public profile and core data of the business open in the panel tab.

  • business_visibility: Whether the business is visible and bookable on the marketplace.

  • business_amenities: Amenities shown on the business profile.

  • business_features: Which panel features are on, off or available for this business.

  • business_booking_rules: Booking rules set in the panel, grouped by category.

  • business_integrations: Online booking integrations and their state.

  • business_notification_settings: Staff and owner notification settings.

  • business_pos_settings: Checkout and payment settings of the business.

  • business_no_show_protection: Deposit and cancellation fee settings per service.

Calendar and appointments

  • calendar_agenda: Appointments between two dates.

  • appointment_requests: Appointments that wait for the salon to confirm or decline, from today on.

  • calendar_open_slots: Free time per staff member on one date, worked out locally from shifts, time off and bookings.

  • appointment_changes_feed: New, moved, cancelled and otherwise changed appointments since the last call.

  • calendar_month: Counters and bookings for a month view of the calendar.

  • calendar_changed_dates: Dates with calendar changes since a Unix timestamp, as the panel polls them.

  • appointment_details: One appointment with its services, staff, client and price.

  • appointment_payment_details: Deposit, payment, tip and refund state of one appointment.

Staff, stations and time

  • team_resources: Staff members and stations.

  • staff_schedule: Working hours and time off per staff member and day, to the minute, for any date range.

  • time_off_entries: Time off of each staff member between two dates, with reason codes.

  • resource_details: Details of one staff member or station.

  • resource_upcoming_bookings: Next bookings of one staff member or station.

  • time_block_details: One calendar time block, such as a break or a reserved slot.

Services

  • service_menu: All service categories with services, variants, prices and durations.

  • service_details: One service with its variants and assigned staff.

  • service_addons: Add-ons that can be sold with services.

Clients

  • customer_cards: Lists client cards, or searches them by name, phone or e-mail with query.

  • customer_card: Full client card: contact data, notes, tags, visit and spending counters.

  • customer_visit_history: Past and future appointments of one client.

  • customer_product_history: Products one client bought.

  • customer_groups: Client groups with their sizes.

  • customer_tags: Tags used on client cards.

  • customer_file_download: Saves a file attached to a client card as a local file.

Campaigns and chat

  • campaign_estimate: Number of recipients and SMS cost for a campaign.

  • chat_conversations: Client chat conversations, newest first.

  • chat_messages: Latest messages of one client conversation.

  • campaign_groups: All message campaign templates, including automated campaigns and their automated_status.

  • campaign_details: One campaign template: text, channel, audience and automation settings.

  • campaign_schedule: Campaigns scheduled to go out.

  • campaign_sms_balance: SMS limits, used and free messages, and the price per part.

  • chat_quick_actions: Suggested quick actions for a client conversation.

Reviews and notifications

  • reviews_feed: Reviews of the business with ratings and replies.

  • panel_notifications: The notification list from the panel bell.

Reports and exports

  • stats_overview: The main statistics dashboard for a period.

  • stats_dashboard: One statistics section with its figures and the list of reports inside it.

  • stats_report_catalog: Every report key this salon can open, per statistics section.

  • stats_report_metadata: What a report needs: its period limits and available filters.

  • stats_report: One report as JSON, as the panel shows it.

  • stats_report_section: One section of a report, for example one staff member or a later page of a table.

  • stats_billing_cycles: Billing cycles usable as report periods.

  • report_export: Downloads any report the panel offers as a file and saves it on this computer.

  • report_export_batch: Saves several reports for one period, strictly one after another.

  • document_download: Saves a cash register report, cash document, invoice or consent as a local file.

  • stats_frame_requests: A check for live verification. Shows which addresses the report frame asked for by itself, without ids, values or headers. Sends nothing to Booksy.

Payments (read only)

  • payment_rows: Payment list with method, status and amounts, like the panel payments screen.

  • payment_summary: Summary tiles of payments for a period.

  • checkout_transactions: Checkout transactions for a period.

  • checkout_transaction: One transaction with items, payments, tips and discounts.

  • checkout_last_receipt: The latest receipt of a transaction.

  • booking_charges: Appointments waiting for checkout or with booking charges.

  • payment_basket: One payment basket with its deposit, payment and refund records.

  • refund_fee_preview: Fees that would apply to refunding a payment.

  • wallet_overview: Balance and overview from the payments financial center.

  • wallet_payouts: Payout history.

  • cash_registers: Cash registers and their open or closed state.

  • cash_register: One cash register with totals.

  • cash_register_operations: Cash in and out operations of one register.

  • invoices: Invoices issued in the panel.

  • invoice: One invoice.

Products and warehouse

  • product_catalog: Products with stock and prices.

  • product_stock_history: Stock movements of one product in one warehouse.

  • warehouses: Warehouses of the business.

  • warehouse_details: One warehouse.

  • warehouse_documents: Stock documents such as deliveries and internal use.

  • warehouse_document: One stock document.

  • product_brands: Product brands.

  • product_categories: Product category tree.

  • product_suppliers: Product suppliers.

Vouchers, consents, loyalty, waitlist

  • vouchers: Vouchers, gift cards and packages sold.

  • voucher_orders: Voucher orders.

  • voucher_templates: Voucher templates.

  • consent_forms: Consent form templates.

  • consents_signed: Consents assigned to clients.

  • waitlist: Clients on the waitlist.

  • loyalty_program: The current stamp card program.

  • loyalty_cards: Client loyalty cards.

Writes

All write tools are off by default, and a disabled tool does not exist for your assistant. Turn on only what you need:

BOOKSY_MCP_WRITE_TOOLS=appointment_move,appointment_confirm

all enables every write that stays inside the panel. Tools that reach clients directly (campaign_send, chat_reply) are never part of all and have to be named.

A write needs three things to go through:

  1. The tool is enabled on the server.

  2. Allow writes is on in the extension popup. It is off by default.

  3. It passes two steps. A call with mode=dry_run shows the exact request, asks Booksy to validate it where the panel has a preview, and returns a confirm_token. A second call with the same arguments, mode=confirm and that token sends it. The token works once, for 5 minutes, and only for that exact request. If your MCP client supports it, you are also asked directly.

Appointment tools make you say whether the client is notified. A held deposit requires an explicit decision. An empty campaign audience is refused.

  • appointment_book: Creates an appointment.

  • appointment_move: Moves an appointment to a new start time and optionally another staff member, keeping the length of each service.

  • appointment_cancel: Cancels an appointment.

  • appointment_confirm: Accepts a booking request that waits for the salon.

  • appointment_decline: Declines a booking request that waits for the salon.

  • appointment_mark_no_show: Marks an appointment as a no-show.

  • time_off_add: Adds time off for staff members.

  • time_off_remove: Removes one time off entry.

  • time_block_add: Blocks a part of the calendar for staff or stations, without a client.

  • time_block_remove: Removes a calendar time block.

  • customer_add: Adds a client card.

  • customer_update: Changes the given fields of a client card.

  • customer_note_set: Replaces the internal note on a client card.

  • customer_delete: Deletes a client card.

  • review_reply: Publishes a public reply to a review.

  • campaign_send (reaches clients): Sends a one-off message campaign to clients.

  • chat_reply (reaches clients): Sends a chat message to a client.

There are no tools for login, passwords, billing, payouts, refunds or charges. The refund tool is a fee preview only.

Exports

report_export saves any report the panel offers as a file, exactly as Booksy delivers it. It can also convert it to CSV or return the rows as JSON. stats_report_catalog lists the report keys available to your salon, because they depend on your plan and country. With output=json each sheet gives the table under its real column labels, without title lines: rows up to the summary line, totals for that line, and rows_below_totals for anything printed under it.

calendar_agenda splits long ranges into windows and reads them one after another with a pause. In safe mode a range can have at most 92 days. appointment_changes_feed reports new, moved and cancelled appointments since its last run, using a small local snapshot of ids, times and statuses.

Security and privacy

  • The bridge listens on 127.0.0.1 only, and checks both Host and Origin, so web pages cannot reach it.

  • Pairing uses a one-time code, valid for 10 minutes, with 5 attempts. After that, both sides prove a shared secret to each other on every connection. That secret only opens the local bridge.

  • The wire protocol carries an allowlist rule id and parameter values, never a URL. The extension checks the rule again by itself.

  • Your assistant receives what the tools return, including client data. Your MCP client's provider may process it under its own terms. You remain responsible for your clients' personal data.

  • BOOKSY_MCP_REDACT_PII=1 (redactPii: true) masks e-mails and phone numbers in everything tools return, including report_export with output=json: jan@example.com becomes ja***om. It applies to contact fields and to e-mails and + numbers inside free text. Names are not masked, and neither is a file: exports saved on disk stay exactly as Booksy delivered them, the CSV included. Off by default, because an assistant then cannot call or write to a client for you. The former name BOOKSY_MCP_MASK_CONTACTS still works.

  • Exports and snapshots are written with owner-only permissions. Delete them when you are done.

Client chat is the one exception to "no token handled": chat messages live with a third-party chat provider, reachable with a chat token that Booksy issues to the panel. The token is requested and used inside the tab and is never returned. It is not your session token, and it is only used by the chat tools.

Risks

Read this before you use the tool. It is not legal advice.

  • Unofficial API. This uses the private API of the panel. Booksy can change it at any time, and tools can stop working or return wrong data without warning. Check important numbers in the panel.

  • Booksy's terms. Booksy's terms limit use of the app to its intended purpose, and some versions explicitly forbid automated tools and reverse engineering. Read the terms that apply to you (Poland, US).

  • Your account can be blocked. Booksy can suspend or terminate an account for a breach of its terms, in some cases immediately and without compensation. Safe mode keeps the load low, but it does not remove the risk or change what the terms say.

  • Your business depends on that account. If losing it would hurt, think twice.

  • Writes affect real people. They change real appointments and can message real clients and cost money.

You use this tool at your own risk. It comes with no warranty, as the licence says.

Directory listing

For MCP directories such as mcpservers.org:

  • Name: Booksy Biz (booksy-mcp)

  • Category: Business / Productivity

  • Short description: Booksy Biz through your own logged-in browser tab: calendar, staff, clients, payments and report exports, with calm traffic and writes off by default.

The official MCP Registry entry is in server.json.

Development

npm ci
npm run check   # lint, typecheck, tests
npm run build
  • src/shared/allowlist.ts: every request this project can make.

  • extension/src/page.ts: the code that runs in the panel tab.

  • docs/endpoints.md: what the panel's public JavaScript shows.

  • docs/verification.md: what still has to be confirmed in a live panel.

Licence

MIT

Available Tools

89 tools
appointment_changes_feedAppointment changesB
Read-onlyIdempotent

New, moved, cancelled and otherwise changed appointments since the last call. The first call stores a baseline. Compares the calendar with a small local snapshot of ids, times and status.

NameRequiredDescriptionDefault
days_backNoDays before today to watch
days_aheadNoDays after today to watch

TDQS

B3.2/5.0
Behavior2/5

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

The description usefully discloses non-obvious behavior: a baseline is stored on first call and subsequent calls diff against a local snapshot of ids, times and status. But that is directly at odds with the idempotentHint=true annotation — repeated calls with identical arguments return different results (first call = full baseline, later calls = deltas only), so the declared idempotency is misleading. The readOnlyHint also understates the persistent local snapshot write.

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

Conciseness4/5

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

Three short sentences, front-loaded with the return content and followed by the stateful mechanics. 'Small local snapshot of ids, times and status' is a borderline implementation detail but it earns its place by explaining why repeats differ.

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

Completeness3/5

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

With no output schema, the description must explain return shape, and it only names categories of change — it does not say how a change is represented, whether the first call returns all current appointments as 'new', or what an empty result means. For a stateful delta feed with no output schema, that gap matters.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters carry their own bounds and defaults, so the schema carries the semantics. The description adds no guidance on how days_back/days_ahead interact with the snapshot window (e.g. whether widening the window produces a larger diff), so it neither helps nor hurts.

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

Purpose4/5

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

Specific verb-and-resource framing: it enumerates what counts as a change (new, moved, cancelled, otherwise changed) so the agent knows this is a calendar delta feed rather than a listing. It does not distinguish itself from the closely named sibling calendar_changed_dates, leaving that boundary to inference.

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

Usage Guidelines3/5

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

Implied usage is conveyed by 'since the last call' and 'the first call stores a baseline', which tells the agent this is a polling/delta tool. However there is no explicit guidance on when to prefer this over calendar_agenda or calendar_changed_dates, nor any warning about the statefulness affecting repeat invocation strategy.

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

appointment_detailsAppointment detailsC
Read-onlyIdempotent

One appointment with its services, staff, client and price.

NameRequiredDescriptionDefault
freshNoSkip the local cache
appointmentUidYesappointment_uid from the calendar

TDQS

C2.8/5.0
Behavior3/5

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 fully covered by structured data. The description contributes the one thing annotations don't: what the returned record contains (services, staff, client, price). It says nothing about caching or the meaning of the 'fresh' flag's effect on results, which leaves a gap given a cache-skipping parameter exists.

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

Conciseness3/5

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

One short sentence with no filler, so nothing is wasted, but it is under-specified rather than economical — it reads as a title restatement rather than a front-loaded statement of a verb and scope.

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

Completeness3/5

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

For a simple two-parameter read with rich annotations and no output schema, an agent can probably invoke it correctly. However, the description is the only place return shape could be elaborated, and it gives just four field names without indicating completeness, error behavior, or cache semantics.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters are documented in-schema ('appointment_uid from the calendar', 'Skip the local cache'), so the baseline is 3. The description adds no format, sourcing, or effect semantics beyond what the schema already states.

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

Purpose3/5

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

The description names the resource (a single appointment) and enumerates its embedded entities (services, staff, client, price), which signals a single-record fetch rather than a list. But it is a noun fragment with no verb, and it never explicitly differentiates itself from siblings like calendar_agenda, appointment_payment_details, or appointment_changes_feed.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, no mention of prerequisites (e.g. needing an appointmentUid sourced from the calendar), and no statement of what happens with an unknown UID. The agent must infer everything from the name.

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

appointment_payment_detailsAppointment paymentC
Read-onlyIdempotent

Deposit, payment, tip and refund state of one appointment.

NameRequiredDescriptionDefault
freshNoSkip the local cache
appointmentIdYesappointment_uid from the calendar

TDQS

C2.7/5.0
Behavior2/5

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 nothing beyond that: it does not disclose that results may be cached (relevant because the `fresh` parameter exists), nor what the returned 'state' consists of.

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

Conciseness4/5

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

A single short sentence with no filler, front-loaded with the resource content. It is efficient, though the brevity comes at the cost of specificity rather than being a model of informative concision.

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

Completeness3/5

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

This is a simple one-appointment read with full annotation coverage and complete schema descriptions, which lowers the burden. But with no output schema, the description should say more about the shape of the returned payment state and its relationship to sibling payment tools; it only lists field categories.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (appointmentId and fresh) are already documented in the schema. The description adds no extra meaning about the appointmentId source or the cache-bypass tradeoff, so the baseline 3 applies.

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

Purpose3/5

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

The description names the specific data returned (deposit, payment, tip, refund) and scopes it to a single appointment, which is more informative than a tautology. However, it is a bare noun phrase with no verb, and it does not distinguish itself from close siblings such as appointment_details or payment_rows, leaving the agent to infer the difference.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus appointment_details, payment_rows, or booking_charges. No prerequisites, exclusions, or selection criteria are stated.

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

appointment_requestsBooking requests waitingB
Read-onlyIdempotent

Appointments that wait for the salon to confirm or decline, from today on.

NameRequiredDescriptionDefault
freshNoSkip the local cache
days_aheadNoHow far ahead to look

TDQS

B3.4/5.0
Behavior3/5

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 the 'from today on' starting boundary but says nothing about the local cache implied by the `fresh` parameter or whether results can be stale – useful mutation/staleness context is left implicit.

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

Conciseness4/5

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

A single short sentence with the scope front-loaded and no filler. Slightly held back by the noun-phrase form, which makes the action ('list these') implicit rather than stated.

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

Completeness3/5

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

For a read-only list tool with full schema coverage and annotations, most of what an agent needs to call it is present. Without an output schema, however, the description gives no hint of what a 'request' contains (customer, service, requested time), which would help an agent decide appropriateness.

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

Parameters3/5

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

Schema description coverage is 100%, so both `fresh` and `days_ahead` are documented in the schema itself. The description's 'from today on' only loosely relates to `days_ahead` and does not clarify the default 31-day window, so it adds nothing beyond the schema baseline.

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

Purpose4/5

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

The description identifies the resource precisely (appointments awaiting salon confirmation or decline) and the temporal scope (from today on), which is more specific than the title alone. It stops short of a verb-based statement like 'list' and doesn't name a distinguishing sibling such as appointment_changes_feed or calendar_agenda.

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

Usage Guidelines3/5

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

'Appointments that wait for the salon to confirm or decline' implicitly signals the use case (reviewing pending booking requests), and 'from today on' scopes it. There is no explicit when-to-use/when-not-to-use statement and no named alternative for getting accepted or past appointments.

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

booking_chargesBooking chargesC
Read-onlyIdempotent

Appointments waiting for checkout or with booking charges.

NameRequiredDescriptionDefault
pageNoPage number, from 1
freshNoSkip the local cache
queryNo
per_pageNoItems per page, at most 100
date_fromNoFirst day (YYYY-MM-DD)

TDQS

C2.5/5.0
Behavior2/5

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 by structured data. The description adds nothing beyond restating the resource — no mention of pagination behavior, the local cache implied by the 'fresh' parameter, or result ordering. With annotations doing all the work, the description contributes no 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.

Conciseness3/5

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

It is a single short fragment with zero waste, but it is terse to the point of under-specification rather than efficient structure — no verb, no lead-in telling the agent what the call does. Brevity here costs clarity.

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

Completeness2/5

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

For a paginated list tool with no output schema, the description should convey what each returned record represents (appointment plus charge?) and how results are scoped/filtered. It only names the population. Annotations cover safety, but the agent still lacks enough to know what it will receive and how to page sensibly.

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

Parameters3/5

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

Schema description coverage is 80% (page, per_page, fresh, date_from all documented), so baseline 3 applies. The description does not elaborate on any parameter; notably the undocumented 'query' parameter is left ambiguous in both schema and description. Adequate but no added value.

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

Purpose3/5

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

The fragment identifies the resource domain — appointments awaiting checkout or carrying booking charges — which does differentiate it from payment-centric siblings like checkout_transactions and payment_rows. However it is a bare noun phrase with no verb, so an agent must infer that this is a list/retrieval operation rather than an action. Purpose is discernible 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.

Usage Guidelines2/5

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

There is no when-to-use guidance and no alternative is named. The description does not tell the agent whether to prefer this over appointment_payment_details, checkout_transactions, or payment_basket when investigating outstanding charges. The only implicit signal is the 'waiting for checkout' framing.

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

business_accountsBusinesses on this loginB
Read-onlyIdempotent

Lists the businesses the logged-in user can open in the panel.

NameRequiredDescriptionDefault
freshNoSkip the local cache

TDQS

B3.4/5.0
Behavior3/5

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

The annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is clear. The description adds useful auth scoping by saying these are businesses the logged-in user can open, but it does not disclose caching behavior 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.

Conciseness5/5

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

The description is a single efficient sentence with the verb and scope front-loaded. Every part of the sentence contributes to identifying the tool.

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

Completeness4/5

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

For a low-complexity list tool with full parameter schema coverage and clear read-only annotations, the description is largely sufficient. It could be slightly richer by mentioning cache behavior or expected output, but no output schema is present and the core selection information is covered.

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

Parameters3/5

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

The schema fully documents the single optional parameter, fresh, as 'Skip the local cache'. The description adds no additional parameter semantics beyond the schema, so the baseline score of 3 is appropriate given 100% schema description coverage.

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

Purpose4/5

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

The description states a specific verb and resource: 'Lists' and 'businesses'. It also gives scope with 'the logged-in user can open in the panel', which helps distinguish it from sibling tools like business_profile or business_features, though it does not explicitly name those alternatives.

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

Usage Guidelines2/5

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

The description says what the tool does but does not explain when to use it instead of alternatives such as business_profile, business_features, or business_visibility. There is an implied use case, but no explicit 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.

business_amenitiesAmenitiesC
Read-onlyIdempotent

Amenities shown on the business profile.

NameRequiredDescriptionDefault
freshNoSkip the local cache

TDQS

C2.3/5.0
Behavior2/5

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 no behavioral context of its own — it says nothing about the shape of returned amenities, ordering, or the caching behavior implied by the 'fresh' parameter.

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

Conciseness3/5

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

It is a single short sentence with no redundancy, but that brevity reflects under-specification rather than discipline; there is nothing front-loaded beyond the tool's own name.

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

Completeness2/5

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

With no output schema, the description is the only place to learn what an 'amenity' record contains and how results are returned, and it says nothing. For a data-fetching tool with no return-value documentation, this is a meaningful gap.

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

Parameters3/5

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

Schema description coverage is 100% and the single optional 'fresh' parameter is documented in the schema as 'Skip the local cache'. The description adds nothing beyond that, but with full schema coverage the baseline of 3 applies.

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

Purpose2/5

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

The sentence 'Amenities shown on the business profile' essentially restates the tool name and title without adding discriminating detail. It hints that the resource is business-level, but an agent gets no more than it would from the name plus the sibling list.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool, no prerequisites, and no reference to the closely related sibling business_features, which an agent could easily confuse it with. Usage must be fully inferred from the name.

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

business_booking_rulesBooking and safety rulesC
Read-onlyIdempotent

Booking rules set in the panel, grouped by category.

NameRequiredDescriptionDefault
freshNoSkip the local cache

TDQS

C2.5/5.0
Behavior2/5

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 only 'grouped by category' as return-shape context and says nothing about the local-cache behavior that the `fresh` parameter implies, nor about the scope or cost of the call.

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

Conciseness3/5

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

One short fragment with zero waste, but it is under-specified rather than concise; there is no front-loaded verb or scope statement to orient the agent in the first few words.

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

Completeness2/5

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

There is no output schema, so the description must convey what comes back, and 'grouped by category' is the only hint. It never explains what a booking rule is, what the categories are, or whether results are paginated or business-wide, leaving an agent unable to predict the response.

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

Parameters3/5

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

Schema coverage is 100% and the single `fresh` parameter is described there as skipping the local cache, so the schema does the work. The description adds no further meaning about caching or freshness; baseline 3 applies.

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

Purpose3/5

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

The description names the resource (booking rules) and adds a structural hint (grouped by category), but it is a noun fragment with no verb, so it never says whether it reads, lists, or creates anything. A reader can infer retrieval from the annotations, not from the text, and nothing distinguishes it from adjacent business_* configuration tools.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool, when not to, or which sibling answers a related question. With business_no_show_protection and business_features among many adjacent config tools, routing is left entirely to inference.

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

business_featuresFeature statusB
Read-onlyIdempotent

Which panel features are on, off or available for this business.

NameRequiredDescriptionDefault
freshNoSkip the local cache

TDQS

B3.1/5.0
Behavior2/5

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 no behavioral context of its own — notably it never mentions that results can come from a local cache and be bypassed, which is the one behaviorally interesting trait of this tool.

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

Conciseness5/5

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

One short sentence, front-loaded with the resource and the returned status values, with no filler. Nothing is padded or buried.

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

Completeness3/5

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

There is no output schema, and the description only loosely characterizes the return as a set of features with on/off/available states; it does not say whether this is a list, a map, or per-panel grouping. For a read-only, single-optional-param tool this is adequate but not complete.

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

Parameters3/5

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

With a single optional parameter and 100% schema description coverage, the schema already explains 'fresh' as skipping the local cache. The description contributes nothing about it, so the baseline 3 applies.

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

Purpose4/5

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

The description names a specific resource (panel features) and the information returned (on/off/available for this business), which is clearer than a tautology. It does not, however, distinguish itself from adjacent siblings such as business_integrations or business_accounts, so an agent must infer the boundary.

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

Usage Guidelines2/5

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

There is no statement of when to call this tool, no prerequisites, and no named alternative. The only hint is the implicit 'check feature availability' reading, which the agent must supply itself.

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

business_integrationsOnline booking integrationsC
Read-onlyIdempotent

Online booking integrations and their state.

NameRequiredDescriptionDefault
freshNoSkip the local cache

TDQS

C2.2/5.0
Behavior2/5

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

The annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint, so the safety profile is covered. The description adds no behavioral context beyond the title, such as whether it returns cached vs. live data, what 'state' means, or any auth/rate-limit considerations.

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

Conciseness2/5

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

The description is only a noun fragment and is under-specified rather than efficiently concise. It is not front-loaded with an actionable verb or scope, so the brevity does not earn its place.

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

Completeness2/5

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

This is a simple read-only tool with one optional parameter and no output schema, so a short description could work, but 'integrations and their state' leaves key questions unanswered, including what integrations are returned, what state values mean, and how results are structured.

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

Parameters3/5

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

There is one optional parameter, 'fresh', and schema description coverage is 100%, so the schema already explains that it skips the local cache. The description adds no additional meaning, which is acceptable given the schema's completeness.

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

Purpose2/5

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

The description is essentially a restatement of the tool name and title: 'Online booking integrations and their state.' It names the resource but gives no verb (list, get, fetch) or scope, so an agent cannot confidently distinguish it from sibling business_* tools such as business_features or business_accounts.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool, when not to use it, or what alternative to choose. The agent must infer its role solely 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.

business_no_show_protectionNo-show protectionC
Read-onlyIdempotent

Deposit and cancellation fee settings per service.

NameRequiredDescriptionDefault
freshNoSkip the local cache

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false. The description adds only a scope phrase and says nothing about caching (the 'fresh' parameter implies a local cache) or what is returned. With annotations carrying the safety profile, the description contributes almost no additional 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.

Conciseness2/5

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

At six words it is concise, but it is an under-specified fragment rather than a front-loaded statement of purpose. There is no sentence structure to organize the information, and the brevity costs essential meaning.

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

Completeness2/5

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

For a read-only settings-retrieval tool with rich annotations and a fully documented single parameter, the description is too thin. It does not explain the 'per service' scope versus the single 'fresh' parameter, nor what the tool returns, leaving the mismatch unresolved.

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

Parameters3/5

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

There is one parameter ('fresh') with 100% schema description coverage, so the schema fully documents it. The description's phrase 'per service' does not map to any parameter and could confuse an agent looking for a service identifier. Baseline 3 applies when the schema does the heavy lifting.

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

Purpose3/5

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

The phrase names a specific resource domain (deposit and cancellation fee settings per service), which is more informative than the title. However, it is a noun fragment with no verb, so it does not state whether the tool reads, updates, or configures anything, and it does not distinguish itself from the sibling business_booking_rules.

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

Usage Guidelines2/5

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

The description offers no when-to-use guidance, no prerequisites, and no mention of alternatives such as business_booking_rules or business_features. An agent must infer invocation context solely from the name and annotations.

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

business_notification_settingsNotification settingsC
Read-onlyIdempotent

Staff and owner notification settings.

NameRequiredDescriptionDefault
freshNoSkip the local cache

TDQS

C2.3/5.0
Behavior2/5

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 hint that results are tenant-scoped, no mention of cache behavior or why an agent might bypass the local cache, and no indication of what the response contains.

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

Conciseness3/5

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

One fragment, zero waste, but the brevity is under-specification rather than efficiency. Nothing is front-loaded because there is essentially no content to order.

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

Completeness2/5

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

For a single-parameter read tool with strong annotations and no output schema, the description still leaves the essential question unanswered: whose settings (the authenticated user's, the business's, or both) and in what shape they come back. It is complete enough to guess at, not complete enough to call with confidence.

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

Parameters3/5

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

There is a single optional parameter with 100% schema coverage ('fresh' — 'Skip the local cache'), so the schema carries the semantics fully. The description neither elaborates on nor conflicts with it; baseline 3 applies when schema coverage does the heavy lifting.

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

Purpose2/5

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

The description restates the tool name/title almost verbatim — 'Staff and owner notification settings' names the resource but supplies no verb (get/list/update) and no scope statement. The only marginal addition over the title is the mention of 'staff and owner', which does not tell an agent what the call actually does.

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

Usage Guidelines2/5

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

There is no when-to-use guidance whatsoever, no prerequisites, and no reference to alternatives. An agent cannot tell from this text how this differs from siblings such as panel_notifications, business_pos_settings, or business_integrations that also expose per-tenant configuration.

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

business_pos_settingsCheckout settingsC
Read-onlyIdempotent

Checkout and payment settings of the business.

NameRequiredDescriptionDefault
freshNoSkip the local cache

TDQS

C2.4/5.0
Behavior2/5

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 no behavioral context beyond that, such as what settings are returned, whether POS authentication is required, or how caching behaves despite the 'fresh' parameter.

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

Conciseness3/5

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

The description is a single front-loaded fragment with no filler. However, it is too terse to be appropriately sized for a tool whose purpose and return behavior need clarification.

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

Completeness3/5

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

For a simple read-only settings tool with annotations covering safety and a fully documented optional parameter, the description is minimally sufficient to identify the resource. It still leaves gaps about what the settings include and offers no output guidance despite there being no output schema.

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

Parameters3/5

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

Schema description coverage is 100% for the single 'fresh' parameter, which is documented as 'Skip the local cache.' The description does not add meaning 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.

Purpose2/5

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

The description restates the title/resource ('checkout and payment settings of the business') without a specific verb or scope detail. It does not explicitly say this retrieves or lists settings, making it close to a tautology of the title 'Checkout settings'.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus siblings such as business_booking_rules, business_notification_settings, payment_summary, or checkout_transactions. The intended context is only implied by the resource name.

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

business_profileBusiness profileC
Read-onlyIdempotent

Public profile and core data of the business open in the panel tab.

NameRequiredDescriptionDefault
freshNoSkip the local cache

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile and indicating an open-world read. The description adds almost nothing beyond that: it does not explain caching (despite the 'fresh' parameter), permissions, return format, or what 'open in the panel tab' means behaviorally. With annotations carrying the safety burden, the description should still add context but does not.

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

Conciseness4/5

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

The description is a single, short sentence with no wasted words. It is front-loaded but the phrase 'open in the panel tab' is vague and could be clearer; still, it is appropriately sized for a simple tool.

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

Completeness3/5

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

The tool is simple (one optional parameter, no output schema) and annotations cover safety and openness. The description identifies the resource but does not explain what 'core data' includes, what the return values look like, or how it differs from related business_* tools. Given the absence of an output schema and many siblings, more specificity would be expected.

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

Parameters3/5

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

Schema description coverage is 100%, and the single optional parameter 'fresh' is documented in the schema as 'Skip the local cache'. The description does not mention this parameter or how it affects behavior, but the high schema coverage establishes a baseline of 3.

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

Purpose3/5

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

The description names the resource ('business') and suggests it returns 'Public profile and core data', so the general purpose is inferable. However, it lacks a clear verb and does not distinguish this tool from numerous sibling business_* tools such as business_features, business_visibility, or business_amenities. The phrase 'open in the panel tab' is ambiguous and adds little clarity.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus the many sibling business_* tools. No alternatives are named and no conditions or exclusions are provided. An agent must guess based on the name alone.

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

business_visibilityMarketplace visibilityC
Read-onlyIdempotent

Whether the business is visible and bookable on the marketplace.

NameRequiredDescriptionDefault
freshNoSkip the local cache

TDQS

C2.7/5.0
Behavior2/5

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

The annotations already state readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false. The description adds no behavioral context beyond restating the broad topic, such as whether it returns cached data, how freshness works, or what the response shape may be. No contradiction exists, but the description contributes little beyond annotations.

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

Conciseness4/5

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

The description is a single short sentence fragment with no filler, and it is front-loaded. It is concise, though its terseness borders on under-specification rather than helpful brevity.

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

Completeness3/5

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

For a simple read-only tool with full schema coverage and annotations, the description is minimally adequate. It does not clarify the return semantics or differentiate the tool from adjacent business-related siblings, but the structured fields cover safety and parameter details.

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

Parameters3/5

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

There is only one parameter, and its schema description ('Skip the local cache') fully documents it at 100% coverage. The description does not mention the fresh/cache parameter, but the schema already carries that meaning, 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.

Purpose3/5

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

The description identifies the domain: marketplace visibility and bookability. However, it is a noun phrase rather than a verb+resource statement, and it does not clarify whether the tool returns a boolean status, a listing record, or eligibility details. It is understandable but not sharply actionable.

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

Usage Guidelines2/5

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

There is no guidance on when to call this tool, when not to call it, or which sibling tools to use instead. Related siblings such as business_profile, business_features, and business_booking_rules are not mentioned, 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.

calendar_agendaCalendar agendaA
Read-onlyIdempotent

Appointments, reserved time and time off between two dates. Long ranges are split into windows and read one after another with a pause. In safe mode a range can have at most 92 days. Filter by staff or by status (A accepted, W waiting for confirmation, C canceled, D declined, F finished, N no-show, M modified, O prepayment awaiting, P proposed, R rejected, V unverified).

NameRequiredDescriptionDefault
toYesLast day (YYYY-MM-DD)
fromYesFirst day (YYYY-MM-DD)
freshNoSkip the local cache
statusNoOnly these status codes
staff_idNoOnly this staff member or station

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, yet the description still adds real behavioral facts: long ranges are split into windows and read sequentially with pauses, and safe mode caps a range at 92 days. That 92-day constraint materially affects how an agent should chunk requests. It stops short of 5 because it doesn't hint at response shape or whether the pause means slow/large responses.

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

Conciseness4/5

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

Three tight sentences: resource scope first, then the operational caveat about windowing/92-day safe mode, then the filter options. The status legend is dense but earns its space as the only decoding available. 'With a pause' is slightly vague but otherwise no waste.

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

Completeness4/5

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

For a 5-parameter read-only list tool with no output schema, the description covers range limits, chunking behavior, and both filter dimensions, which is most of what an agent needs to call it correctly. The 'fresh'/cache-bypass parameter and any notion of result volume are left to the schema and inference.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds genuinely useful meaning the schema lacks: the single-letter status codes are fully decoded (A accepted, W waiting, C canceled, D declined, F finished, N no-show, M modified, O prepayment awaiting, P proposed, R rejected, V unverified), which the schema only types as a 1-character string. It does not explain 'fresh' or the staff_id semantics, holding it at 4.

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

Purpose4/5

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

Opens with a specific resource list (appointments, reserved time, time off) and a date-range scope, so the agent knows exactly what data comes back. It does not contrast itself with close siblings such as calendar_month or calendar_changed_dates, so it falls short of a 5.

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

Usage Guidelines3/5

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

Usage is only implied – the presence of from/to and the status/staff filters suggests 'use this to review a date range,' but there is no explicit when-to-use or when-to-prefer-an-alternative guidance (e.g., versus calendar_month for a month view or the change feed for deltas).

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

calendar_changed_datesDates changed sinceC
Read-onlyIdempotent

Dates with calendar changes since a Unix timestamp, as the panel polls them.

NameRequiredDescriptionDefault
freshNoSkip the local cache
timestampYesUnix time in seconds

TDQS

C2.7/5.0
Behavior3/5

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 by structured data and the description need not restate it. The description adds a modest hint that this is a polling/sync endpoint, but does not explain caching behavior, ordering, or what a "change" means — the only cache-related detail ("fresh") lives in the schema, not the description.

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

Conciseness3/5

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

It is a single short sentence with no filler, which is good, but it is front-loaded with an ambiguous noun rather than a verb, and the trailing clause "as the panel polls them" is vague jargon that occupies space without resolving the core ambiguity.

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

Completeness2/5

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

There is no output schema, so the description carries the burden of saying what is returned, and it does not — the shape of a "date with changes" entry is never described. For a delta/polling endpoint where callers must know how to interpret the result and whether to pass the returned value back as a new timestamp, this is a significant gap.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (timestamp with its Unix-seconds note, and the fresh cache-bypass flag) are already documented in the schema. The description's phrase "since a Unix timestamp" echoes the schema rather than adding format, granularity, or edge-case semantics. Baseline 3 applies.

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

Purpose3/5

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

The description names the resource ("dates with calendar changes") and the filtering dimension ("since a Unix timestamp"), but never uses a clear verb and leaves "dates" ambiguous — it is unclear whether this returns calendar days, appointment records, or change markers. It also fails to differentiate from the very similar sibling "appointment_changes_feed", so an agent cannot confidently tell the two apart.

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

Usage Guidelines2/5

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

There is no indication of when to use this tool versus the many calendar siblings (calendar_month, calendar_agenda, appointment_changes_feed). The phrase "as the panel polls them" hints at a sync use case but is not framed as guidance or as an exclusion criterion.

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

calendar_monthCalendar month viewC
Read-onlyIdempotent

Counters and bookings for a month view of the calendar.

NameRequiredDescriptionDefault
freshNoSkip the local cache
end_dateYesLast day of the month (YYYY-MM-DD)
start_dateYesFirst day of the month (YYYY-MM-DD)
resource_idsNoOnly these staff members or stations. All of them when left out

TDQS

C2.6/5.0
Behavior2/5

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 nothing beyond them — it does not mention the local cache that the 'fresh' parameter implies, nor what the counters represent or how they are scoped.

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

Conciseness4/5

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

A single front-loaded sentence with no filler or redundancy. It is sized appropriately for prose, though its brevity reflects under-specification rather than economy of information.

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

Completeness2/5

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

For a 4-parameter tool with no output schema and no annotations explaining return structure, the description leaves the key questions unanswered: what a 'counter' is, whether results are aggregated per day or per resource, and how caching affects freshness. An agent cannot confidently predict the response shape.

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

Parameters3/5

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

Schema description coverage is 100%, with start_date/end_date documented as first/last day of the month and resource_ids explained as a staff/station filter, so the schema carries the parameter burden. The description adds no format, default, or interaction detail (e.g. that start/end must span exactly one month).

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

Purpose3/5

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

The description names a resource domain (month view of the calendar) and hints at the payload ('counters and bookings'), which partially separates it from calendar_agenda. But 'counters' is undefined jargon and there is no clear verb specifying whether it retrieves, aggregates, or lists.

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

Usage Guidelines2/5

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

No indication of when to prefer this over calendar_agenda, calendar_open_slots, or calendar_changed_dates, and no stated prerequisites such as a required date range or resource scoping. The agent must infer the month-vs-agenda split from the tool name alone.

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

calendar_open_slotsOpen slotsA
Read-onlyIdempotent

Free time per staff member on one date, worked out locally from shifts, time off and bookings. Use it before proposing a time to a client.

NameRequiredDescriptionDefault
dateYesDay (YYYY-MM-DD)
freshNoSkip the local cache
staff_idNoOnly this staff member
step_minutesNoGap between start times
duration_minutesYesLength of the visit

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered. The description adds real value beyond them by disclosing the computation basis (shifts, time off, bookings) and that results are derived locally, which explains the existence and effect of the 'fresh' cache-bypass parameter.

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

Conciseness5/5

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

Two sentences, no waste, with the core computation and scope front-loaded before the usage cue. Nothing could be removed without losing signal.

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

Completeness4/5

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

For a read-only availability query with no output schema, an agent has enough to call it correctly: date, duration, optional staff filter, and the knowledge that results are locally derived. It stops short of describing the shape of the returned slots, but the derivation sentence largely implies it.

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

Parameters3/5

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

Schema coverage is 100%, so all five parameters are already documented with patterns, bounds and defaults. The description only echoes scope ('one date', 'per staff member') and adds no format, interaction or defaulting 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.

Purpose4/5

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

States a specific verb+resource+scope: free time per staff member for a single date, computed from shifts, time off and bookings. This is clearly distinct from listing tools like calendar_agenda or staff_schedule, though no sibling is named explicitly.

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

Usage Guidelines3/5

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

"Use it before proposing a time to a client" gives one concrete workflow cue, which implies the tool's role in a booking flow. However, there is no explicit when-not guidance and no alternatives named (e.g., calendar_agenda for existing bookings, staff_schedule for raw shifts).

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

campaign_detailsCampaign detailsC
Read-onlyIdempotent

One campaign template: text, channel, audience and automation settings.

NameRequiredDescriptionDefault
freshNoSkip the local cache
templateIdYesTemplate id

TDQS

C2.7/5.0
Behavior2/5

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 no behavioral context of its own — notably it never mentions that the `fresh` flag bypasses a local cache, which is the one genuinely non-obvious behavioral trait of this tool and is only 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.

Conciseness4/5

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

A single short sentence-fragment with no filler or redundancy. It is efficiently sized, though it leads with a noun phrase rather than an action verb, so the operation is not front-loaded.

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

Completeness3/5

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

For a simple two-parameter read tool with full schema coverage and a rich annotation set, the description is minimally adequate. It usefully previews the returned fields (text, channel, audience, automation settings) in the absence of an output schema, but omits error behavior for invalid ids and the cache-freshness tradeoff an agent must decide on.

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

Parameters3/5

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

Schema description coverage is 100% (templateId with a regex pattern, fresh described as "Skip the local cache"), so the baseline of 3 applies. The description mentions "template" but adds no meaning about the id format, the cache behavior, or what happens when an unknown id is supplied.

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

Purpose3/5

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

The phrase "One campaign template" identifies the resource and implies a single-record retrieval, which distinguishes it from list-style siblings like campaign_groups or campaign_schedule. However, there is no explicit verb (fetch/get/retrieve) and no direct naming of a sibling, so the agent must infer the operation from the annotations and the required templateId.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance, no prerequisites, and no mention of alternatives. An agent seeing campaign_estimate, campaign_groups, campaign_schedule, and campaign_sms_balance alongside this tool gets no textual help choosing among them.

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

campaign_estimateCampaign cost estimateA
Read-onlyIdempotent

Number of recipients and SMS cost for a campaign. Sends nothing.

NameRequiredDescriptionDefault
body_shortYesSMS text
recipientsYesAudience object, as in the campaign
channel_priorityNoChannel order

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is largely covered. 'Sends nothing' usefully reinforces that no messages are dispatched, which matters for a campaign-named tool. But nothing is said about how cost is computed (segments, per-channel rates), what the response contains, or error behavior for malformed audiences.

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

Conciseness5/5

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

Two short sentences, front-loaded with the outputs and immediately followed by the key safety constraint. No filler or repetition of the schema.

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

Completeness3/5

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

With no output schema and a nested, untyped recipients object, the description should explain the shape of the result (recipient count plus cost, possibly per channel) and how channel_priority influences pricing. It states the outputs at a high level but leaves enough gaps that an agent cannot fully predict the response.

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

Parameters3/5

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

Schema description coverage is 100%, including descriptions for recipients, body_short, and channel_priority, so the schema carries parameter meaning. The description adds no extra semantics such as how channel_priority affects the cost estimate. Baseline 3 applies when the schema already documents every parameter.

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

Purpose4/5

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

The description names the concrete outputs (recipient count and SMS cost) and the resource (a campaign), so an agent knows exactly what it gets back. It doesn't explicitly use an estimate/dry-run verb, but 'Sends nothing' disambiguates it from actual campaign sending. Sibling differentiation against campaign_sms_balance or campaign_details is only implicit.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: 'Sends nothing' suggests the natural pre-send pricing check, but the description never says when to call it, whether it is a prerequisite for campaign creation, or which sibling to use instead. No alternatives are named.

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

campaign_groupsCampaignsB
Read-onlyIdempotent

All message campaign templates, including automated campaigns and their automated_status.

NameRequiredDescriptionDefault
freshNoSkip the local cache

TDQS

B3.2/5.0
Behavior3/5

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 that automated campaigns and their status are included, but does not mention caching behavior or other operational context beyond the annotations.

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

Conciseness4/5

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

The description is a single compact sentence with no filler and is front-loaded with the resource being returned. It is slightly fragmentary and could more clearly state the operation, but it is appropriately sized.

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

Completeness3/5

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

For a simple read-only tool with one optional parameter and full schema coverage, the description covers the core resource and an included field. However, it does not resolve the naming ambiguity between 'campaign_groups' and 'campaign templates,' nor does it clarify the return shape in 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.

Parameters3/5

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

There is only one optional parameter, 'fresh,' and the input schema has 100% description coverage for it ('Skip the local cache'). The description adds no further meaning, which is acceptable given the schema's completeness.

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

Purpose4/5

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

The description identifies a specific resource, 'All message campaign templates,' and notes included data such as automated campaigns and 'automated_status.' However, it avoids an explicit verb like 'list' and does not distinguish itself from sibling tools such as campaign_details or campaign_schedule.

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

Usage Guidelines2/5

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

The description gives no explicit guidance on when to use this tool versus siblings like campaign_details or campaign_schedule. The word 'All' implies a broad listing, but the description does not state exclusions, prerequisites, or alternatives.

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

campaign_scheduleScheduled campaignsC
Read-onlyIdempotent

Campaigns scheduled to go out.

NameRequiredDescriptionDefault
freshNoSkip the local cache

TDQS

C2.3/5.0
Behavior2/5

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 nothing beyond that – no mention of what the schedule window is, what fields are returned, or how the open-world lookup behaves.

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

Conciseness3/5

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

It is a single short sentence with no padding, but brevity here comes from omission rather than economy. There is no front-loaded scope or qualifier to anchor the agent.

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

Completeness2/5

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

There is no output schema, so the description should at least indicate what is returned (a list of campaigns with schedule times, status, etc.). It also leaves the cache/`fresh` trade-off and the time window unaddressed, which is insufficient even for a simple list tool.

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

Parameters3/5

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

Schema description coverage is 100% and the single `fresh` parameter is documented there ("Skip the local cache"). The description adds no meaning on top of 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.

Purpose2/5

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

"Campaigns scheduled to go out" only rephrases the tool name and title (Scheduled campaigns) rather than stating a verb and resource. It never says it retrieves/lists scheduled campaigns, nor distinguishes it from siblings like campaign_groups, campaign_details, or campaign_estimate.

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

Usage Guidelines2/5

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

No when-to-use, when-not-to-use, or alternative is mentioned. With many campaign siblings present, the description gives the agent no basis for choosing this tool over campaign_details or campaign_groups.

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

campaign_sms_balanceSMS balanceC
Read-onlyIdempotent

SMS limits, used and free messages, and the price per part.

NameRequiredDescriptionDefault
freshNoSkip the local cache

TDQS

C2.7/5.0
Behavior2/5

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), so the bar is lower, but the description adds nothing beyond them. It says nothing about the local-cache behavior implied by the 'fresh' parameter or about latency/staleness of the returned balance figures.

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

Conciseness4/5

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

A single compact sentence fragment with no filler, and the most relevant content (limits, used/free, price per part) is front-loaded. It is efficient but verbless, which slightly undercuts its clarity as a standalone definition.

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

Completeness3/5

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

With no output schema, the description usefully enumerates the fields that come back (limits, used, free messages, per-part price), which is the main thing an agent needs. However, for a cached read tool it omits how the 'fresh' flag changes results, leaving a real behavioral gap.

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

Parameters3/5

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

There is a single optional parameter whose schema description ('Skip the local cache') has 100% coverage, so the baseline is 3. The description does not mention caching or freshness at all, adding no meaning beyond the schema.

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

Purpose3/5

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

The description enumerates the data the tool surfaces (limits, used/free messages, price per part) but never states the operation — it is a noun phrase with no verb like 'retrieve' or 'get'. An agent can infer it is a read of SMS balance data, but the purpose is implied rather than declared, and no sibling (e.g. campaign_estimate, campaign_details) is referenced for contrast.

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

Usage Guidelines2/5

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

There is no guidance on when to call this tool, no prerequisites, and no mention of alternatives such as campaign_estimate for cost projection. The agent must infer usage purely from the name and the listed data fields.

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

cash_registerCash registerC
Read-onlyIdempotent

One cash register with totals.

NameRequiredDescriptionDefault
freshNoSkip the local cache
registerIdYesRegister id

TDQS

C2.8/5.0
Behavior3/5

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 only "with totals," hinting that aggregated figures are returned — mildly useful context, but nothing about error behavior when a register is not found or what the totals comprise.

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

Conciseness3/5

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

A single short sentence with no filler, but it is terse to the point of under-specification rather than efficient density. There is no front-loaded verb or scope statement to anchor the agent.

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

Completeness3/5

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

A two-parameter, single-resource read with fully documented params and rich annotations is simple enough that the definition is barely adequate. With no output schema, the phrase "with totals" is the only hint at return content and remains unelaborated.

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

Parameters3/5

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

Schema description coverage is 100%, with registerId and fresh both documented in the schema, so the baseline of 3 applies. The description adds nothing about the meaning of fresh (cache bypass) or the registerId format beyond what the schema already states.

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

Purpose3/5

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

"One cash register with totals" identifies the resource and signals a single-item scope, implicitly contrasting with the plural sibling cash_registers. However, there is no verb and no explicit statement that this retrieves a register, so the agent must infer read semantics from the annotations rather than the text.

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

Usage Guidelines2/5

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

The word "One" hints at a single-record lookup versus the cash_registers list, but no when-to-use condition, prerequisite, or alternative is named. With siblings like cash_registers and cash_register_operations in the set, the agent gets only weak routing signal.

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

cash_register_operationsCash register operationsC
Read-onlyIdempotent

Cash in and out operations of one register.

NameRequiredDescriptionDefault
pageNoPage number, from 1
freshNoSkip the local cache
per_pageNoItems per page, at most 100
registerIdYesRegister id

TDQS

C2.3/5.0
Behavior2/5

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 tool concerns one register, and omits pagination behavior, cache/fresh semantics, and what is actually returned; the word 'operations' is also ambiguous enough to risk suggesting mutation despite readOnly annotations.

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

Conciseness3/5

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

The description is a single short sentence with no wasted words, but its brevity comes at the cost of under-specification. It is front-loaded only in the sense that there is nothing else to read.

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

Completeness2/5

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

For a four-parameter paginated read tool with no output schema, the description is too thin. It does not clarify the return shape, pagination, cache behavior, or whether 'operations' means records versus actions.

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

Parameters3/5

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

Schema description coverage is 100%, so registerId, page, per_page, and fresh are fully documented in the schema. The description adds no parameter meaning beyond the schema, which is acceptable at the baseline because the schema carries the burden.

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

Purpose2/5

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

The description is a noun phrase ('Cash in and out operations of one register') without a clear verb, so it does not say whether this lists cash movements, returns a register summary, or performs an action. It does not distinguish itself from siblings like cash_register or cash_registers.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus cash_register, cash_registers, or payment tools. The phrase 'one register' hints at single-register scope but does not state how to choose among alternatives.

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

cash_registersCash registersC
Read-onlyIdempotent

Cash registers and their open or closed state.

NameRequiredDescriptionDefault
pageNoPage number, from 1
freshNoSkip the local cache
per_pageNoItems per page, at most 100

TDQS

C2.7/5.0
Behavior3/5

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

The annotations already declare that this is a read-only, idempotent, non-destructive, open-world operation. The description adds useful data context by saying it returns open/closed state, but it does not explain pagination behavior, caching semantics, or what the returned state means.

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

Conciseness3/5

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

The description is short and waste-free, but it is an under-specified fragment rather than a well-structured definition. It lacks the verb and scope information an agent would need before invoking the tool.

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

Completeness2/5

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

For a simple read-only list tool, annotations and schema cover safety and pagination, but the description still leaves important gaps: it does not state a clear action, nor does it clarify the difference from `cash_register` and `cash_register_operations`. With no output schema, the description should do more to explain what the returned state represents.

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

Parameters3/5

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

Schema description coverage is 100%, so the `page`, `per_page`, and `fresh` parameters are already fully documented in the input schema. The description adds no parameter meaning beyond the schema, which is acceptable at the baseline for high-coverage schemas.

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

Purpose3/5

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

The description identifies the resource (cash registers) and adds that it exposes open/closed state, which implies a listing of registers. However, it is a noun phrase with no verb, and it does not distinguish this tool from the singular `cash_register` or `cash_register_operations` siblings.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool rather than `cash_register` or `cash_register_operations`. The description gives no context, prerequisites, or exclusions.

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

chat_conversationsClient conversationsA
Read-onlyIdempotent

Client chat conversations, newest first. Works only where the panel has client chat enabled.

NameRequiredDescriptionDefault
limitNoHow many
offsetNoHow many to skip

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true and openWorldHint=true, so safety and idempotency are covered structurally. The description adds two real facts beyond that: newest-first ordering and the panel-enablement prerequisite. It says nothing about pagination semantics (how to page past the 30-item cap) or what a conversation record contains.

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

Conciseness5/5

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

Two short sentences with zero filler; the resource and its ordering come first, and the enablement constraint follows. Every clause carries information an agent would otherwise have to guess.

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

Completeness3/5

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

For a simple read-only paginated list, annotations and the schema carry most of the load. Still, with no output schema, the description could say what a conversation object contains, and it never clarifies the relationship to chat_messages, which is the most likely source of a wrong tool choice.

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

Parameters3/5

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

Schema description coverage is 100% with two simple pagination parameters (limit, offset) that carry defaults and bounds. The description adds no interpretation beyond the schema, so baseline 3 applies – nothing is missing, but nothing extra is contributed.

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

Purpose4/5

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

Names the resource (client chat conversations) and its ordering (newest first), which is enough to know this returns a conversation list rather than messages. It stops short of differentiating itself from the sibling chat_messages tool, so an agent cannot tell from the description alone which of the two to call for a given need.

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

Usage Guidelines3/5

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

"Works only where the panel has client chat enabled" is a useful precondition, effectively a when-not-available rule. However, there is no guidance on when to choose this over chat_messages or chat_quick_actions, leaving the choice to inference from names.

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

chat_messagesConversation messagesC
Read-onlyIdempotent

Latest messages of one client conversation.

NameRequiredDescriptionDefault
limitNoHow many
channel_idYesConversation id

TDQS

C2.8/5.0
Behavior3/5

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 and the bar is lower. The description adds only that results are "latest" messages of a single conversation; it does not say how ordering works, whether results are paginated, or what happens when the conversation has no messages.

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

Conciseness4/5

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

A single six-word sentence with no filler and no buried information. It earns its place, though the brevity borders on under-specification rather than economy.

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

Completeness2/5

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

There is no output schema, so the description carries the burden of explaining what comes back — message fields, ordering (newest-first?), and whether `limit` truncates silently — and it says nothing about any of this. For a read tool with no output schema and an open-world annotation, that is a meaningful gap.

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

Parameters3/5

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

Schema coverage is 100%, so channel_id ("Conversation id") and limit ("How many", default 30, max 100) are already documented. The description's phrase "one client conversation" loosely corroborates channel_id but adds no new syntax, format, or ordering semantics beyond the schema. Baseline 3 applies.

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

Purpose3/5

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

The description names a specific resource (messages of a single conversation) and adds the qualifier "latest", but it is a noun phrase with no verb and no reference to the sibling chat_conversations, which is presumably where you list the conversations themselves. An agent can guess the purpose, but the boundary with the sibling is left implicit.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of the obvious alternative (chat_conversations for listing conversations). The agent must infer the routing decision 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.

chat_quick_actionsChat quick actionsC
Read-onlyIdempotent

Suggested quick actions for a client conversation.

NameRequiredDescriptionDefault
freshNoSkip the local cache
bci_idYesClient id

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context of its own, such as caching implications of the 'fresh' parameter or what the returned suggestions represent.

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

Conciseness4/5

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

The description is a single short sentence with no wasted words and is front-loaded with the resource being returned. It is concise, though its brevity contributes to other gaps rather than being a structural flaw itself.

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

Completeness2/5

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

For a tool with no output schema, the description does little to explain what 'quick actions' are, what shape the response takes, or how the result relates to a client conversation. The annotations cover safety, but the definition is not complete enough for an agent to understand the return context.

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

Parameters3/5

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

Schema description coverage is 100%, with both parameters documented ('bci_id' as Client id and 'fresh' as Skip the local cache). The description adds no additional meaning beyond the schema, so the baseline of 3 is appropriate.

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

Purpose3/5

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

The description identifies the resource as 'suggested quick actions for a client conversation,' but it omits a clear verb such as 'get' or 'list' and does not distinguish this tool from siblings like chat_conversations or chat_messages. The purpose is inferable but vague.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool, when not to use it, or which sibling tool to choose instead. The description only names the resource and leaves all usage context to inference.

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

checkout_last_receiptLast receiptC
Read-onlyIdempotent

The latest receipt of a transaction.

NameRequiredDescriptionDefault
freshNoSkip the local cache
transactionIdYesTransaction id

TDQS

C2.6/5.0
Behavior2/5

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 no behavioral context beyond that—it does not explain caching behavior, what 'latest' means in edge cases, or what the response contains. It neither contradicts nor enriches the annotations.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no wasted words. It is efficiently structured, though its brevity contributes to under-specification addressed in other dimensions rather than being a conciseness problem itself.

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

Completeness2/5

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

There is no output schema, so the description should ideally explain what the 'latest receipt' returns—an object, an ID, a URL, or something else. It also omits any mention of the caching behavior implied by the fresh parameter. Given the many checkout-related siblings, the definition leaves too much for an agent to infer.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already documents both transactionId and the fresh flag that skips the local cache. The description adds no additional parameter meaning beyond implying a transaction context. With the schema fully covering parameters, a baseline 3 is appropriate.

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

Purpose3/5

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

The description identifies the resource (the latest receipt) and ties it to a transaction, which gives some specificity. However, it is a noun phrase with no verb, and it does not distinguish itself from sibling tools such as checkout_transaction or payment_rows. An agent can infer that it retrieves something, but selection clarity is limited.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention checkout_transaction, payment_rows, or any other sibling, nor does it state prerequisites or exclusions. 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.

checkout_transactionCheckout transactionC
Read-onlyIdempotent

One transaction with items, payments, tips and discounts.

NameRequiredDescriptionDefault
freshNoSkip the local cache
transactionIdYesTransaction id

TDQS

C2.8/5.0
Behavior3/5

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 that the returned record bundles items, payments, tips and discounts, which is genuinely useful content context but stops short of noting the cache-bypass behavior implied by the 'fresh' parameter.

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

Conciseness3/5

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

One short sentence with no waste, but it is under-specified rather than tight — there is no leading verb or scope statement to front-load. Brevity here costs clarity.

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

Completeness3/5

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

With no output schema, the description carries the burden of describing return contents; it partially does so by naming items, payments, tips and discounts. However, for a single-record lookup it omits what happens when the transactionId does not exist and does not clarify the effect of 'fresh'.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters (transactionId, fresh) are documented in the schema, so the baseline is 3. The description adds no meaning about identifier format or what 'fresh' changes about the result.

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

Purpose3/5

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

The description is a noun phrase, not a verb+resource statement, so the agent must infer 'fetch' from the name. It does implicitly distinguish itself from the sibling checkout_transactions by saying 'One transaction', but the purpose is only weakly articulated.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this versus checkout_transactions, checkout_last_receipt, or payment_basket. The singular-vs-plural contrast is only hinted at by the word 'One'.

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

checkout_transactionsCheckout transactionsC
Read-onlyIdempotent

Checkout transactions for a period.

NameRequiredDescriptionDefault
pageNoPage number, from 1
freshNoSkip the local cache
queryNo
per_pageNoItems per page, at most 100
date_fromNoFirst day (YYYY-MM-DD)

TDQS

C2.2/5.0
Behavior2/5

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 nothing beyond that: it does not mention pagination behavior, cache interaction implied by the 'fresh' flag, or what a returned transaction represents. Minimal value 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.

Conciseness4/5

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

A single front-loaded sentence with zero padding. It is short rather than bloated; the weakness is under-specification, which is penalized elsewhere, not verbosity.

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

Completeness2/5

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

For a five-parameter, open-world, paginated list tool with no output schema, the description says nothing about result contents, paging semantics, or the cache behavior implied by 'fresh'. It does not meet the burden the missing output schema places on prose.

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

Parameters2/5

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

Schema coverage is 80%, so the four documented params (page, per_page, fresh, date_from) already carry their own meaning. The 'query' parameter is undocumented in both schema and description, and the description makes no attempt to explain what it searches, leaving a real ambiguity unaddressed.

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

Purpose2/5

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

The description nearly restates the title verbatim ('Checkout transactions' + 'for a period'), adding only a vague date scope. It does nothing to distinguish this list tool from the sibling singular 'checkout_transaction', so an agent cannot tell which to reach for 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.

Usage Guidelines2/5

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

There is no statement of when to use this versus the very close sibling 'checkout_transaction', nor any prerequisite or exclusion. The only usage signal ('for a period') is implied by the presence of date_from in the schema, not asserted by the description.

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

consents_signedConsentsC
Read-onlyIdempotent

Consents assigned to clients.

NameRequiredDescriptionDefault
pageNoPage number, from 1
freshNoSkip the local cache
per_pageNoItems per page, at most 100

TDQS

C2.3/5.0
Behavior2/5

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 nothing beyond that — it doesn't disclose that results are paginated, that a local cache exists (implied only by the 'fresh' param), or what the shape of a consent record is.

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

Conciseness3/5

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

A single short sentence with no wasted words, but it is under-specified rather than concise — the terseness removes disambiguating information an agent needs among ~100 siblings.

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

Completeness2/5

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

For a listing tool in a large namespace with a near-identical sibling (consent_forms), the description is not complete enough to route correctly. Annotations and schema are the only reliable signal; the description resolves neither scope nor relationship to the sibling.

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

Parameters3/5

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

All three parameters (page, fresh, per_page) have full schema descriptions with defaults and bounds, so the schema carries the load and a baseline of 3 is appropriate. The description contributes no additional meaning about how paging or cache-skipping interact with consent listings.

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

Purpose2/5

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

The description restates the name/title ('Consents') and appends a minimal scope qualifier ('assigned to clients'), but supplies no verb — it never says this lists or retrieves signed consents, nor how it differs from the sibling consent_forms.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool, when not to, or what the alternative (consent_forms) covers. An agent must guess which of the two consent tools to call.

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

customer_cardClient cardC
Read-onlyIdempotent

Full client card: contact data, notes, tags, visit and spending counters.

NameRequiredDescriptionDefault
freshNoSkip the local cache
customerIdYesClient id

TDQS

C2.9/5.0
Behavior2/5

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 nothing behavioral — notably it never mentions the local cache or what the 'fresh' flag changes, even though caching is a real behavioral trait of this call.

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

Conciseness4/5

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

A single front-loaded sentence fragment with zero filler; the content list is the most useful part and comes first. It is terse to the point of being a label rather than a sentence, but nothing is wasted.

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

Completeness3/5

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

For a two-parameter read-only tool with full schema coverage and annotations, the description is adequate: it says what the card contains. It leaves out caching behavior and whether the call can fail for unknown ids, but those gaps are minor given the structured fields available.

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

Parameters3/5

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

Schema coverage is 100%, so customerId and fresh are fully documented in the schema. The description adds no parameter-level meaning beyond that, which is the baseline case rather than an added-value case.

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

Purpose4/5

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

The description names the resource (a single 'full client card') and enumerates its contents — contact data, notes, tags, visit and spending counters — which implicitly differentiates it from the plural sibling customer_cards. It lacks an explicit verb ('retrieve') but an agent can still identify the operation.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus the many related siblings such as customer_cards (list), customer_visit_history, customer_product_history, or customer_tags. The choice is left entirely to inference.

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

customer_cardsClient cardsA
Read-onlyIdempotent

Lists client cards, or searches them by name, phone or e-mail with query.

NameRequiredDescriptionDefault
pageNoPage number, from 1
freshNoSkip the local cache
queryNoSearch text
per_pageNoItems per page, at most 100

TDQS

A3.7/5.0
Behavior3/5

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

The annotations already establish read-only, idempotent, open-world, and non-destructive behavior, so the description does not need to repeat safety semantics. It adds the useful detail that query searches by name, phone, or e-mail, but it does not mention caching, pagination behavior, or result format.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. It communicates the primary list behavior first and the optional search behavior second.

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

Completeness4/5

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

For a simple read-only list/search tool with fully described parameters and rich annotations, the description is largely complete. It could mention pagination or what card summary fields are returned, but the missing pieces are minor.

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

Parameters4/5

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

Schema coverage is 100%, so page, per_page, and fresh are already well documented in the schema. The description still adds semantic value for query by clarifying that it searches name, phone, or e-mail rather than just saying 'Search text.'

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

Purpose4/5

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

The description gives a specific verb and resource: it lists client cards and can search them. It clearly distinguishes list mode from query/search mode, though it does not name the singular customer_card sibling or explain how it differs.

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

Usage Guidelines3/5

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

It implies when to use query (to search by name, phone, or e-mail), but it does not explicitly say when to use this tool versus customer_card or loyalty_cards. The usage mode is understandable but not fully guided.

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

customer_file_downloadDownload a client fileB
Read-onlyIdempotent

Saves a file attached to a client card as a local file.

NameRequiredDescriptionDefault
customerIdYesClient id
attachedFileIdYesFile id from the client card

TDQS

B3.2/5.0
Behavior3/5

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 useful detail that the operation writes to a local file (a side effect outside the API), but says nothing about where the file lands, whether it overwrites, or how large downloads behave. Given annotation coverage, 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.

Conciseness4/5

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

One sentence, front-loaded with the action and resource, with no filler. It is arguably too short for a download tool whose output destination is ambiguous, but nothing in it is wasted.

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

Completeness3/5

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

With only two fully documented parameters and annotations carrying the safety profile, the definition is nearly sufficient. The remaining gap is what the agent gets back and where the local file is written, plus how this differs from document_download — meaningful for an agent choosing between two download-style tools.

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

Parameters3/5

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

Schema description coverage is 100%, so customerId and attachedFileId are already documented with patterns and required status. The phrase 'attached to a client card' weakly reinforces the relationship between the two ids, but adds no format or sourcing detail beyond the schema.

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

Purpose4/5

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

States a specific verb ('saves') and resource ('a file attached to a client card'), so an agent knows exactly what the tool produces. It does not, however, distinguish itself from the sibling document_download, which by name alone could be the tool an agent reaches for when a file is involved.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of the obvious alternative document_download. The only implicit signal is 'attached to a client card', which an agent must infer means customer-card attachments rather than generic documents.

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

customer_groupsClient groupsC
Read-onlyIdempotent

Client groups with their sizes.

NameRequiredDescriptionDefault
freshNoSkip the local cache

TDQS

C2.4/5.0
Behavior2/5

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 only "with their sizes," which is a thin hint about return content; it says nothing about caching behavior, whether the list is paginated, or what a group actually contains.

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

Conciseness3/5

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

The one-line fragment is front-loaded and free of padding, so nothing is wasted. However, a bare noun phrase is under-specification rather than disciplined conciseness; there is no structure for an agent to parse beyond the single clause.

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

Completeness3/5

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

The tool is simple (one optional boolean, no output schema, no nested objects) and annotations cover the safety profile, so the description need not be long. Still, it omits what a client group is and what fields come back, leaving the agent to infer the tool's usefulness from the name alone.

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

Parameters3/5

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

Schema description coverage is 100% with a single optional parameter (`fresh`, documented as "Skip the local cache"), so the schema carries the semantics. The description never mentions the cache-freshness option, but with full coverage the baseline of 3 applies.

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

Purpose2/5

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

"Client groups with their sizes" essentially restates the tool name and title, adding only the hint that size counts are included. There is no verb, no scope statement, and nothing to distinguish it from siblings like customer_tags or campaign_groups that an agent might confuse it with.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance, no prerequisites, and never names an alternative. An agent has no way to know whether this is the right tool for segmenting customers versus campaign_groups or customer_tags; it must infer everything from the name.

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

customer_product_historyClient product purchasesC
Read-onlyIdempotent

Products one client bought.

NameRequiredDescriptionDefault
pageNoPage number, from 1
freshNoSkip the local cache
page_sizeNoItems per page, at most 100
customerIdYesClient id

TDQS

C2.5/5.0
Behavior2/5

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 without the description. The description adds nothing behavioral: no mention of pagination over the purchase history, no mention of the cache-bypass semantics implied by the `fresh` flag, and no hint at result ordering or volume.

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

Conciseness3/5

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

It is a single four-word fragment with no padding, so nothing is wasted. But brevity here comes from under-specification rather than discipline: the one sentence carries no front-loaded scope, return shape, or routing information.

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

Completeness2/5

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

For a four-parameter list tool with no output schema, the description leaves the agent unable to know what a record contains (a transaction, a product line, a summary?) or how results are ordered. Annotations cover safety, but the remaining gaps are meaningful for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so customerId, page, page_size and fresh are all self-documented; the baseline of 3 applies. The description does not add meaning to any of them — notably it says nothing about whether results are paginated or what `fresh` changes.

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

Purpose3/5

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

"Products one client bought" conveys a resource (products) and a scope (a single client), so an agent can broadly infer it lists a customer's purchase records. However it never states it is a list/history endpoint, never contrasts with plausible siblings like customer_visit_history or customer_cards, and the phrase is terse enough to be mistaken for a catalog lookup.

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

Usage Guidelines2/5

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

There is no explicit when-to-use, when-not-to-use, or named alternative. The only implied guidance is that a customerId must be known, leaving the agent to guess how this differs from customer_visit_history or payment_rows.

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

customer_tagsClient tagsC
Read-onlyIdempotent

Tags used on client cards.

NameRequiredDescriptionDefault
freshNoSkip the local cache

TDQS

C2.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the safety profile is covered. However, the description adds no behavioral context—it does not mention caching, freshness semantics, result scope, or what the tool returns, despite the 'fresh' parameter relating to cache behavior.

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

Conciseness2/5

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

The description is a single sentence fragment with no verb and no structural front-loading of the action. It is short but under-specified rather than concisely informative.

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

Completeness2/5

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

Given the simple one-parameter schema and existing annotations, the definition is still too thin: it never says the tool lists tags or describes the return shape, and it provides no context for selecting it among many sibling tools. An agent could guess, but the description is not complete enough for reliable invocation.

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

Parameters3/5

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

The sole parameter, 'fresh', is fully documented in the schema as 'Skip the local cache'. The description adds no parameter-level detail, but with 100% schema description coverage 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.

Purpose2/5

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

The description identifies the resource but not the operation; it says 'Tags used on client cards' without stating whether it lists, retrieves, or manages tags. This essentially restates the name and title rather than clarifying what the tool does.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus siblings such as customer_cards, customer_card, customer_groups, or campaign_groups. The agent is left to infer usage 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.

customer_visit_historyClient visit historyC
Read-onlyIdempotent

Past and future appointments of one client.

NameRequiredDescriptionDefault
pageNoPage number, from 1
freshNoSkip the local cache
stateNoOnly visits in this state
per_pageNoItems per page, at most 100
customerIdYesClient id
include_extra_bookingsNoAlso visits outside the main list

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds no behavioral context beyond the basic resource scope, such as pagination behavior, caching semantics, or the effect of state and include_extra_bookings filters.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no wasted words. It is appropriately concise, though its brevity contributes to gaps in usage and behavioral detail.

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

Completeness3/5

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

The description states the core return content (past and future appointments for one client), which is useful as there is no output schema. However, it does not mention pagination, caching, or filtering behavior, which are relevant given six parameters and the fresh and state options.

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

Parameters3/5

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

Schema description coverage is 100%, so all six parameters are documented in the schema itself. The description does not add meaning beyond what the schema provides, but the baseline score of 3 is appropriate when the schema fully covers parameter semantics.

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

Purpose4/5

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

The description clearly states the resource (appointments) and scope (one client) and clarifies that it covers both past and future visits. It is specific enough to distinguish from generic calendar tools, though it does not explicitly name or contrast with sibling tools like appointment_details or customer_product_history.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives such as calendar_agenda, appointment_details, or customer_product_history. The required customerId parameter implies a per-client lookup, but there are no explicit usage conditions or exclusions.

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

document_downloadDownload a documentA
Read-onlyIdempotent

Saves a cash register report, cash document, invoice or consent as a local file.

NameRequiredDescriptionDefault
idYesId of the document, register, invoice or consent
kindYes

TDQS

A3.5/5.0
Behavior3/5

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 meaningful behavioral fact that the result is a file written locally rather than inline data, but says nothing about where the file lands, its format/extension, whether it overwrites, or any auth/rate constraints.

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

Conciseness4/5

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

A single front-loaded sentence with no filler; the verb and outcome appear immediately. It is efficient, though the brevity leaves the gaps noted in other dimensions unaddressed.

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

Completeness3/5

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

With two required params, rich annotations, and no output schema, the description carries the burden of describing the returned artifact — yet it only says 'local file' without path, filename convention, or format. An agent knows what the tool does but not what it gets back.

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

Parameters4/5

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

Schema coverage is only 50% (the kind enum has no description), and the description compensates by enumerating the four document classes that map onto the enum values (cash_register_report, cash_document, invoice_pdf, consent_pdf). The id parameter gets no added meaning beyond the schema's own description, so it is not a 5.

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

Purpose4/5

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

The description names a specific verb (saves as a local file) and the concrete resource classes (cash register report, cash document, invoice, consent), which is enough to separate it from retrieval siblings like invoice, cash_register, and consents_signed that return data rather than a file. It stops short of naming a sibling explicitly, so it lands at 4 rather than 5.

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

Usage Guidelines3/5

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

The phrase 'as a local file' implies the use case (persist a document to disk rather than read its metadata), so usage is inferable. However, there is no explicit when-to-use/when-not guidance and no mention of the adjacent tools (invoice, cash_register, consent_forms) that return the same underlying records in JSON form.

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

invoiceInvoiceC
Read-onlyIdempotent

One invoice.

NameRequiredDescriptionDefault
freshNoSkip the local cache
invoiceIdYesInvoice id

TDQS

C2/5.0
Behavior2/5

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 elsewhere. The description adds nothing beyond that – it does not explain caching behavior, why the `fresh` flag exists, or what the agent gets back. No contradiction with annotations, so not a 1.

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

Conciseness2/5

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

Two words is not conciseness but under-specification; there is no front-loaded verb or object to orient an agent. The brevity saves nothing because the content carries no information beyond the title.

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

Completeness2/5

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

With only two params, full schema coverage and no output schema, a little description would suffice – but an agent still cannot tell from the description whether this returns an invoice object, a rendered document, or how it differs from the `invoices` sibling. Annotations cover safety, so the gap is small but real.

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

Parameters3/5

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

Schema description coverage is 100% (both `invoiceId` and `fresh` are documented in the schema, including the cache-skip semantics of `fresh`), so the baseline is 3. The description contributes no additional parameter meaning, but it does not need to given the schema.

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

Purpose2/5

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

"One invoice." merely restates the tool name/title in singular form. It never says whether it retrieves, renders, or summarizes an invoice, nor does it explicitly contrast with the sibling tool `invoices` – the singular/plural distinction is the only implicit differentiator an agent must infer.

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

Usage Guidelines1/5

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

There is no guidance whatsoever: no when-to-use, no when-not-to-use, no mention of the sibling `invoices` list tool, and no note that a valid invoiceId is required to fetch a specific record.

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

invoicesInvoicesC
Read-onlyIdempotent

Invoices issued in the panel.

NameRequiredDescriptionDefault
pageNoPage number, from 1
freshNoSkip the local cache
per_pageNoItems per page, at most 100

TDQS

C2.3/5.0
Behavior2/5

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 — notably it never mentions the pagination defaults or the `fresh` cache-bypass behavior, which are the only interesting runtime traits here.

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

Conciseness3/5

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

A single short sentence with no filler, so nothing is wasted — but it is under-specified rather than genuinely concise. There is no front-loaded statement of action or return shape.

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

Completeness2/5

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

With no output schema, the description is the only place to learn that this returns a paginated collection of invoices and what a record contains. It says neither, leaving the agent to infer the return shape from the parameter names.

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

Parameters3/5

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

Schema description coverage is 100% with all three parameters documented (page, per_page, fresh including defaults and bounds). The description contributes no additional semantics, so baseline 3 applies.

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

Purpose2/5

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

The description reads as a restatement of the name and title ("Invoices issued in the panel") with no verb saying what the tool actually does — list, fetch, paginate. It also fails to distinguish it from the sibling `invoice` (singular), which an agent would naturally confuse 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.

Usage Guidelines2/5

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 `invoice`, `payment_rows`, `checkout_transactions`, or `booking_charges`. The phrase "issued in the panel" hints at scope but gives no conditions or exclusions.

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

loyalty_cardsLoyalty cardsC
Read-onlyIdempotent

Client loyalty cards.

NameRequiredDescriptionDefault
pageNoPage number, from 1
freshNoSkip the local cache
per_pageNoItems per page, at most 100

TDQS

C2.1/5.0
Behavior2/5

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 beyond that — no indication that results are paginated, that a cache exists or can be bypassed via 'fresh', or what a returned card contains.

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

Conciseness2/5

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

It is short, but length here comes from omission rather than efficiency; the single fragment duplicates the title and carries no information. Nothing is front-loaded because there is nothing to front-load.

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

Completeness1/5

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

For a paginated, cache-aware list endpoint with no output schema, the description supplies neither return shape nor pagination behavior nor the resource's meaning. An agent has essentially no basis for calling it correctly beyond the schema field names.

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

Parameters3/5

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

Schema description coverage is 100% and all three parameters (page, per_page, fresh) are documented with defaults, bounds and meaning in the schema itself. The description adds no extra semantics, so the baseline 3 applies.

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

Purpose2/5

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

"Client loyalty cards." only restates the tool name/title and never supplies a verb, so an agent cannot tell whether this lists cards, fetches one, or returns a template. It is indistinguishable from siblings such as customer_cards and loyalty_program without opening the schema.

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

Usage Guidelines2/5

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 guidance at all. With customer_cards and loyalty_program in the sibling set, the description leaves the agent to guess which endpoint answers a loyalty-card question.

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

loyalty_programLoyalty programC
Read-onlyIdempotent

The current stamp card program.

NameRequiredDescriptionDefault
freshNoSkip the local cache

TDQS

C2.2/5.0
Behavior2/5

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 almost nothing beyond that: it does not explain what 'current' means, what data is returned, or how the 'fresh' caching parameter affects behavior.

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

Conciseness2/5

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

The description is a single fragment and is too under-specified to be useful. Brevity here reflects missing information rather than efficient communication.

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

Completeness2/5

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

The tool is read-only with one optional parameter and no output schema, so the description should explain what the tool returns and how it relates to sibling loyalty/card tools. Instead it provides only a vague label, leaving the agent unable to predict the response.

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

Parameters3/5

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

Schema description coverage is 100%, and the single optional 'fresh' parameter is fully documented in the schema. The description adds no parameter semantics beyond the schema, so the baseline of 3 is appropriate.

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

Purpose2/5

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

The description 'The current stamp card program.' is a noun phrase with no verb and essentially restates the title. It does not say whether the tool retrieves, configures, or summarizes the loyalty program, nor how it differs from sibling tools like loyalty_cards or customer_cards.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as loyalty_cards, customer_cards, or customer_card. The agent is left to infer usage entirely from the tool name and annotations.

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

opening_hoursOpening hoursB
Read-onlyIdempotent

Opening hours of the business, day by day, for the week of the given date.

NameRequiredDescriptionDefault
dateNoAny day in the week (YYYY-MM-DD)
freshNoSkip the local cache

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered. The description usefully adds that results are returned per-day over a whole week (implying a weekly payload), but says nothing about caching behavior, timezone, or how days without hours are represented.

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

Conciseness4/5

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

A single front-loaded sentence with no filler, sized appropriately for a simple two-parameter read tool. Slight redundancy in 'of the business, day by day' keeps it from a 5.

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

Completeness3/5

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

For a simple read tool with rich annotations and no output schema, the description is adequate but leaves gaps: it does not hint at the shape of each day's entry (open/closed, intervals), timezone handling, or what happens when the date falls in a week spanning DST or missing data.

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

Parameters3/5

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

Schema description coverage is 100%, so both 'date' and 'fresh' are already documented. The description's phrase 'week of the given date' reinforces that the date selects a week rather than a single day, which is mild added value, but the schema's own note ('Any day in the week') already carries this.

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

Purpose4/5

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

The description names the resource (opening hours) and specifies both granularity (day by day) and window (the week of the given date), which is more precise than the title alone. It stops short of distinguishing itself from any sibling such as calendar_open_slots, so it does not reach a 5.

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

Usage Guidelines3/5

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

The phrase 'for the week of the given date' implies when the tool applies (fetching hours for a week), but there is no explicit guidance on when to use this versus related calendar or booking-rule tools, and no stated exclusions or prerequisites.

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

panel_notificationsPanel notificationsC
Read-onlyIdempotent

The notification list from the panel bell.

NameRequiredDescriptionDefault
pageNoPage number, from 1
freshNoSkip the local cache
statusNoWhich listactive
per_pageNoItems per page, at most 100

TDQS

C2.5/5.0
Behavior2/5

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 and the description need only add context beyond that — which it does not. Notably it is silent on the one non-obvious behavior in the schema: the `fresh` flag bypasses a local cache, implying this call is normally cached and possibly stale, a fact an agent needs before trusting results.

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

Conciseness3/5

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

One short sentence with zero padding and the resource front-loaded, which is structurally sound. The brevity is under-specification rather than economy, though, so it does not earn top marks.

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

Completeness2/5

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

For a four-parameter paginated feed with no output schema, the description should say what a notification record looks like and whether paging is required to get everything. Instead it says nothing about the return shape, cache/staleness behavior, or which notifications are included, leaving real gaps for a read tool whose results feed into an agent's context.

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

Parameters3/5

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

Schema description coverage is 100%, including the status enum and per_page cap, so the schema already carries parameter meaning. The description adds nothing to it — no clarification of what 'new' vs 'active' vs 'archived' mean, nor when caching makes `fresh` necessary. Baseline 3 applies when the schema does the heavy lifting alone.

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

Purpose3/5

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

It names a specific resource (the notification list) and its origin (the panel bell), which separates it from business_notification_settings and the chat feed siblings. But it is a bare noun phrase with no verb and no scope statement — an agent cannot tell what the list contains, whose notifications they are, or how it differs from chat_conversations beyond guesswork.

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

Usage Guidelines2/5

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

There is no when-to-use guidance at all — no mention of when to reach for this instead of business_notification_settings or chat_conversations, and no note that it returns unread/active items by default. Usage is only implied by the phrase 'notification list'.

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

payment_basketPayment basketC
Read-onlyIdempotent

One payment basket with its deposit, payment and refund records.

NameRequiredDescriptionDefault
freshNoSkip the local cache
basketIdYesBasket id

TDQS

C2.6/5.0
Behavior2/5

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 is fully covered without the description. The only added context is the composition of the payload (deposit, payment and refund records); nothing is said about whether an unknown basketId errors or returns empty, nor about the effect of the documented cache on result freshness.

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

Conciseness3/5

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

One short sentence with no filler, which is appropriately sized in raw terms. But the terseness is partly under-specification rather than economy: the single fragment omits the verb and the lookup key, so brevity costs clarity instead of buying it.

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

Completeness3/5

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

For a two-parameter read with a fully documented schema, complete annotations, and no output schema, the description is close to sufficient. The gaps are the unstated operation verb and the unexplained relationship between the documented 'fresh' cache flag and the returned data, which an agent would want to know before calling.

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

Parameters3/5

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

Schema description coverage is 100%: basketId has a pattern and 'fresh' documents the cache-skip flag, so the schema already carries parameter meaning. The description adds no format, scoping, or caching detail beyond that, which is the baseline case for a fully documented schema.

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

Purpose3/5

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

The description names a specific resource and hints at its contents (deposit, payment and refund records), but it is a bare noun phrase with no verb, so the operation (fetch one basket by id) must be inferred from the name and schema. It also does nothing to distinguish itself from adjacent siblings such as payment_rows, payment_summary, checkout_transactions, or appointment_payment_details.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool, no prerequisites, and no mention of any alternative. With five or six payment-related siblings in the list, the absence of any routing guidance leaves the agent to guess based on name similarity alone.

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

payment_rowsPayment rowsC
Read-onlyIdempotent

Payment list with method, status and amounts, like the panel payments screen.

NameRequiredDescriptionDefault
pageNoPage number, from 1
freshNoSkip the local cache
queryNoSearch text
per_pageNoItems per page, at most 100
date_fromYesFirst day (YYYY-MM-DD)
date_tillYesLast day (YYYY-MM-DD)

TDQS

C2.5/5.0
Behavior2/5

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 elsewhere. The description adds only a vague inventory of returned columns and a screen analogy; it says nothing about pagination behavior, caching (the `fresh` param implies a cache layer), ordering, or result size limits. No contradiction with annotations, but very little incremental disclosure.

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

Conciseness3/5

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

It is a single short sentence, so nothing is bloated, but it is under-specified rather than concise. The trailing UI analogy ('like the panel payments screen') spends the final clause on a reference the agent cannot resolve.

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

Completeness2/5

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

Six parameters, two required, no output schema — the description carries the burden of explaining what comes back and in what form. It gestures at fields but omits pagination shape, whether refunds/partial payments are included, and how results are ordered, which leaves an agent guessing about the row set it will receive.

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

Parameters3/5

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

Schema description coverage is 100%, so all six parameters (including the required date_from/date_till and the `fresh` cache flag) are already documented in the schema. The description adds no formats, defaults, or semantics beyond what the schema states, which is the baseline 3 case.

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

Purpose3/5

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

The description names the resource (payments) and hints at returned fields (method, status, amounts), so an agent knows it retrieves payment records. However, the phrasing is a noun phrase rather than a verb+resource, and it does nothing to distinguish itself from close siblings such as payment_summary, checkout_transactions, booking_charges, or payment_basket. The 'like the panel payments screen' analogy points at a UI an agent cannot see.

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

Usage Guidelines2/5

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

No when-to-use, when-not-to-use, or alternative is stated. With roughly a dozen payment-adjacent siblings, the description needed to say why an agent would pick payment_rows over payment_summary or booking_charges, and it does not.

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

payment_summaryPayment summaryC
Read-onlyIdempotent

Summary tiles of payments for a period.

NameRequiredDescriptionDefault
pageNoPage number, from 1
freshNoSkip the local cache
queryNoSearch text
scopeYesPeriod key used by the panel
per_pageNoItems per page, at most 100
date_fromNoFirst day (YYYY-MM-DD)
date_tillNoLast day (YYYY-MM-DD)

TDQS

C2.5/5.0
Behavior2/5

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 essentially nothing beyond that: it does not explain the local cache implied by the 'fresh' parameter, how the period/scope interacts with date_from/date_till, or what a 'tile' contains.

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

Conciseness3/5

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

A single short sentence is front-loaded and wastes no words, but here brevity reflects under-specification rather than discipline. There is room to add one clarifying clause at no structural cost.

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

Completeness2/5

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

A 7-parameter analytics tool with no output schema needs the description to define what the summary contains and how scope interacts with date range and pagination. The description leaves the return shape, the meaning of 'tiles', and the cache behavior behind 'fresh' entirely unexplained.

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

Parameters3/5

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

Schema description coverage is 100%, so per the baseline this scores 3. The description does not clarify the most ambiguous parameter — 'scope' as a 'Period key used by the panel' — nor how scope relates to the optional date_from/date_till range, but it is not obligated to when the schema documents every field.

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

Purpose3/5

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

The description names the resource ('payments') and the output shape ('summary tiles'), which is more than a bare restatement of the title, but 'summary tiles' is undefined and 'for a period' is too vague to distinguish this from siblings like payment_rows or stats_dashboard. An agent can guess it's an aggregated read, but not what the aggregates are.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of when to prefer this over payment_rows, checkout_transactions, or stats_dashboard, and no prerequisites stated. The only implicit signal is that 'summary' contrasts with row-level tools, which the agent must infer 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.

product_brandsProduct brandsC
Read-onlyIdempotent

Product brands.

NameRequiredDescriptionDefault
freshNoSkip the local cache

TDQS

C2/5.0
Behavior2/5

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 by structured data. The description adds nothing beyond that — notably it never mentions caching behavior, which is the one non-obvious trait here given the `fresh` parameter's cache-busting semantics. No contradiction, but zero added 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.

Conciseness2/5

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

It is short, but shortness here is under-specification rather than conciseness: there is no front-loaded verb or object statement, and the entire text is two words restating the title.

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

Completeness2/5

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

For a simple, annotated, one-optional-parameter read tool, the bar is low, but the agent is still left without knowing what a call yields or how it relates to the catalog/category/supplier tools. Annotations cover safety; nothing covers purpose or output shape.

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

Parameters3/5

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

The description says nothing about the single `fresh` parameter, but schema description coverage is 100% and the schema itself explains it as "Skip the local cache." Baseline 3 applies when the schema carries the parameter documentation.

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

Purpose2/5

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

The description is a noun phrase that simply restates the tool name and title ("Product brands.") with no verb, no scope, and no indication of what is returned. An agent still cannot tell whether this lists brands, retrieves brand details, or maps brands to products, nor how it differs from siblings like product_categories or product_suppliers.

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

Usage Guidelines1/5

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

There is no when-to-use guidance, no prerequisites, and no mention of any alternative tool. With closely related siblings (product_catalog, product_categories, product_suppliers, product_stock_history) available, the absence of routing guidance is a real selection hazard.

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

product_catalogProductsC
Read-onlyIdempotent

Products with stock and prices.

NameRequiredDescriptionDefault
pageNoPage number, from 1
freshNoSkip the local cache
queryNoSearch text
categoryNoCategory id
per_pageNoItems per page, at most 100

TDQS

C2.3/5.0
Behavior2/5

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 only that stock and prices are included, but says nothing about pagination, cache behavior, rate limits, or the shape of returned data. It does not contradict annotations, but it adds little behavioral context beyond them.

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

Conciseness3/5

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

It is a single short sentence with no filler and is front-loaded, so it is concise. However, the brevity omits a verb and provides no structural cues for selecting or filtering, making it concise to the point of under-specification.

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

Completeness2/5

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

There is no output schema, and the description does not explain pagination, filtering behavior, or what fields are returned. For a five-parameter list tool, that leaves the agent without enough context to invoke it confidently.

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

Parameters3/5

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

The input schema has 100% description coverage for all five parameters (page, per_page, query, category, fresh), so the schema already carries parameter semantics. The description adds no additional syntax, defaults, or filtering details, so the baseline of 3 applies.

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

Purpose2/5

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

The text names the resource and says it includes stock and prices, but supplies no verb (list, search, retrieve). An agent cannot tell whether this returns a collection, a single product, or filtered search results, and it does not distinguish the tool from siblings such as product_stock_history or product_categories.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no mention of alternatives or prerequisites. The agent is left to infer that this is the product-listing tool from the name and sibling set alone.

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

product_categoriesProduct categoriesC
Read-onlyIdempotent

Product category tree.

NameRequiredDescriptionDefault
freshNoSkip the local cache

TDQS

C2.3/5.0
Behavior2/5

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 nothing beyond that: it does not mention the local cache behavior implied by the `fresh` parameter, tree depth, 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.

Conciseness3/5

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

Three words are certainly concise, but the brevity stems from under-specification rather than efficient information design. Nothing is front-loaded because there is essentially no content.

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

Completeness2/5

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

The tool is simple (one optional param, no output schema, annotations covering safety), but an agent still lacks any description of the returned tree structure or when the cache-skipping option matters. The description is too thin for even a simple listing tool.

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

Parameters3/5

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

There is a single optional parameter with 100% schema coverage ('Skip the local cache'), so the schema carries the load and a baseline of 3 applies. The description contributes no additional meaning about caching or refresh behavior.

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

Purpose2/5

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

The description 'Product category tree' essentially restates the name and title without a verb or scope statement. It leaves unclear whether the tool returns the full tree, a flat list of categories, or a nested hierarchy, and does nothing to distinguish it from sibling tools like product_catalog or product_brands.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus alternatives such as product_catalog, product_brands, or product_suppliers. Usage is only weakly implied by the resource name.

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

product_stock_historyProduct stock historyC
Read-onlyIdempotent

Stock movements of one product in one warehouse.

NameRequiredDescriptionDefault
pageNoPage number, from 1
freshNoSkip the local cache
per_pageNoItems per page, at most 100
commodityIdYesProduct id
warehouseIdYesWarehouse id

TDQS

C2.9/5.0
Behavior2/5

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 nothing beyond restating the core idea—it does not disclose ordering, pagination behavior, whether the `fresh` flag affects caching semantics beyond the schema, or what fields a movement entry contains.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no wasted words. It is under-specified, but that is a completeness issue rather than a conciseness flaw.

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

Completeness2/5

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

For a five-parameter tool with no output schema, the description should explain what a 'stock movement' record contains, how results are ordered, and how pagination and the `fresh` cache-bypass flag behave. None of this is provided, leaving an agent to infer the return shape and semantics.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parameters are already documented in the schema. The description does not add any parameter-specific meaning, but the baseline is 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.

Purpose4/5

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

The description identifies the specific resource (stock movements) and its scope (one product, one warehouse), which is more informative than the title alone. It lacks an explicit verb and does not differentiate itself from related siblings like customer_product_history or warehouse_details, but an agent can infer it retrieves movement history.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, no prerequisites mentioned, and no exclusions. The scope statement implies it is for a single product in a single warehouse, but the agent receives no routing advice.

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

product_suppliersSuppliersD
Read-onlyIdempotent

Product suppliers.

NameRequiredDescriptionDefault
freshNoSkip the local cache

TDQS

D1.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, giving a strong safety profile. The description adds nothing beyond that—no detail on caching behavior despite the 'fresh' parameter, no return shape, and no 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.

Conciseness2/5

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

It is technically concise, but it is under-specified rather than efficient. A two-word noun phrase does not earn its place as a tool description because it provides no actionable information.

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

Completeness2/5

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

For a read-only tool with one optional parameter and rich annotations, the description still fails to explain what supplier data is returned or how it relates to products. The agent must infer the entire purpose from the name alone.

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

Parameters3/5

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

Schema description coverage is 100% and the single 'fresh' parameter is already documented in the schema as 'Skip the local cache'. The description adds no meaning beyond the schema, so the baseline of 3 is appropriate.

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

Purpose1/5

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

The description 'Product suppliers.' merely restates the tool name and title as a noun phrase, with no verb or explanation of what the tool actually does. It does not distinguish it from siblings such as product_catalog or warehouses.

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

Usage Guidelines1/5

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, no mention of prerequisites, and no exclusions. An agent has no basis for choosing it over related product or warehouse tools.

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

refund_fee_previewRefund feesA
Read-onlyIdempotent

Fees that would apply to refunding a payment. Reads only, refunds nothing.

NameRequiredDescriptionDefault
freshNoSkip the local cache
basketPaymentIdYesBasket payment id

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true, so the safety profile is well covered. The description adds value by explicitly stating 'refunds nothing', reinforcing that this is a pure preview and no refund is executed, though it does not mention caching behavior despite the 'fresh' parameter.

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

Conciseness5/5

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

The description is two short sentences with no wasted words. The core purpose is front-loaded, and the safety clarification follows immediately, making it easy to scan.

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

Completeness4/5

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

For a simple two-parameter read-only tool with 100% schema coverage and rich annotations, the description is largely complete. It could mention the return format (fee amounts) or cache behavior, but with no output schema and the essential no-side-effect warning present, it is sufficient for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (basketPaymentId and fresh) are already documented in the schema. The description adds no additional meaning beyond what the schema provides, which is acceptable given the high coverage but merits the baseline score.

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

Purpose4/5

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

The description identifies the resource (fees for refunding a payment) and clarifies it is a preview, though it does not explicitly use a verb like 'calculate' or 'return' and does not differentiate against a specific sibling tool. The resource and scope are still clear enough for an agent to distinguish it from mutation tools.

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

Usage Guidelines3/5

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

The phrase 'Reads only, refunds nothing' implies this is a safe preview rather than an actual refund, which is useful usage context. However, it provides no explicit guidance on when to use this tool versus alternatives like payment_basket or other payment-related siblings, leaving the agent to infer the use case.

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

report_exportExport a reportA
Read-onlyIdempotent

Downloads any report the panel offers as a file and saves it on this computer. Can also convert it to CSV or return the rows as JSON. Report keys come from stats_report_catalog. Booksy can take over a minute to build a report.

NameRequiredDescriptionDefault
outputNofile saves the panel file, csv also converts it, json also returns the rowsfile
filtersNoExtra report filters from stats_report_metadata, such as staffer_id
max_rowsNoJSON rows per sheet
date_fromYesFirst day of the period (YYYY-MM-DD)
date_tillYesLast day of the period (YYYY-MM-DD)
time_spanNoPeriod typemonth
report_keyYesReport key from stats_report_catalog

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive safety, so the description's value is in adding that it writes a file locally, can transform to CSV/JSON, and that Booksy builds can exceed a minute. That last point is genuinely useful scheduling 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.

Conciseness4/5

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

Three tight sentences, front-loaded with the primary action and ending with the timing caveat. No wasted phrasing, though the CSV/JSON sentence slightly restates the schema enum.

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

Completeness4/5

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

For a 7-parameter tool with nested filters and no output schema, the description covers the main behaviors, prerequisites, and latency. It could say more about how filters interact with report type, but nothing critical for correct invocation is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents every parameter including the output enum and filters. The description reinforces format options and report_key sourcing but adds little beyond what the schema provides; baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource (downloads/exports any report the panel offers) plus the output modes (file, CSV, JSON). An agent can distinguish it from inline data tools like stats_report and from report_export_batch based on the save-to-disk framing.

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

Usage Guidelines3/5

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

Provides the key prerequisite (report keys come from stats_report_catalog) and a latency warning, but never explicitly states when to choose this over stats_report or report_export_batch. Usage is implied rather than contrasted with alternatives.

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

report_export_batchExport several reportsA
Read-onlyIdempotent

Saves several reports for one period, strictly one after another, with a pause. A report that fails does not stop the others. A block by Booksy or a used-up budget ends the batch, and what was saved until then is listed. In safe mode a batch can have at most 5 reports.

NameRequiredDescriptionDefault
outputNofile saves the panel file, csv also converts it, json also returns the rowsfile
date_fromYesFirst day of the period (YYYY-MM-DD)
date_tillYesLast day of the period (YYYY-MM-DD)
time_spanNoPeriod typemonth
report_keysYesReport keys

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover safety (readOnly, idempotent, non-destructive), and the description adds substantial behavior beyond them: sequential execution with a pause, per-report failure isolation, batch termination on a Booksy block or exhausted budget, and that partial results are still listed. It stops short of describing output shape or what the 'pause' actually is, so it is strong but not complete.

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

Conciseness4/5

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

Four short sentences, front-loaded with the action and then layered with failure and termination semantics; little waste. 'With a pause' and 'safe mode' are the only vague fragments that fail to earn full weight.

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

Completeness4/5

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

With no output schema, the description does at least say partial results are listed, and all five parameters are schema-documented. It is adequate for a batch export, though the return shape and the meaning of safe mode are left to the caller.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds real meaning: all report_keys share one period ('for one period'), and the safe-mode limit of 5 reports tightens the schema's maxItems of 30. The 'pause' and 'safe mode' concepts remain undefined.

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

Purpose4/5

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

States a specific verb and resource ('Saves several reports for one period') and makes the batch semantics explicit, which separates it from the single-report sibling report_export. It does not name that sibling directly, so the 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.

Usage Guidelines3/5

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

Usage is implied by 'several reports for one period' and by the safe-mode cap of 5 reports, which tells the agent the batch is bounded. However, it never says when to prefer report_export instead, nor what conditions qualify as 'safe mode', leaving the choice between the two export tools to inference.

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

resource_detailsStaff member or stationB
Read-onlyIdempotent

Details of one staff member or station. Both are resources in Booksy.

NameRequiredDescriptionDefault
freshNoSkip the local cache
resourceIdYesResource id

TDQS

B3.4/5.0
Behavior3/5

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 well covered. The description adds useful domain context that a resource can be either a staff member or a station, but it does not explain caching behavior tied to the fresh parameter or what details are returned.

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

Conciseness5/5

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

The description is two short sentences with no wasted words. The essential purpose is front-loaded, and the domain clarification follows immediately.

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

Completeness3/5

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

This is a simple read-only lookup with rich annotations and fully described parameters, so the description is mostly adequate. However, for a 'details' tool with no output schema, it does not indicate what kind of details are returned, leaving a minor gap in expectations.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema's generic 'Resource id' label by clarifying that the resource may represent a staff member or a station, which helps the agent understand what identifier to supply.

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

Purpose4/5

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

The description clearly states that the tool returns details for one staff member or station, and clarifies that both are resources in Booksy. It does not explicitly distinguish itself from sibling tools such as team_resources, but the verb+resource purpose is clear.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives like team_resources or resource_upcoming_bookings. The agent must infer that this is the single-resource lookup tool from the name and description alone.

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

resource_upcoming_bookingsUpcoming bookings of a resourceC
Read-onlyIdempotent

Next bookings of one staff member or station.

NameRequiredDescriptionDefault
freshNoSkip the local cache
resourceIdYesResource id

TDQS

C2.8/5.0
Behavior3/5

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

Annotations already declare readOnly=true, idempotent=true, destructive=false, so the safety profile is covered. The description adds only that results are future-dated and scoped to a single resource; it says nothing about the lookahead window, result cap, or capping/pagination behavior, and the schema's "fresh" flag (skip local cache) is left unexplained in prose.

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

Conciseness3/5

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

A single fragment with no filler, so there is no waste. However, brevity here comes from under-specification rather than tight writing: the one sentence omits information an agent needs and carries no structure beyond the core phrase.

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

Completeness3/5

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

For a two-parameter read-only tool with full schema coverage and rich annotations, the minimum bar is met. Still missing is what an agent most needs to call it correctly: how far ahead "next" reaches and roughly what comes back, with no output schema to fill that gap.

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

Parameters3/5

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

Schema coverage is 100%, so both parameters are already documented at the field level. The description contributes one useful nuance — that resourceId can be either a person or a room — but adds nothing about the cache-skipping "fresh" parameter. Baseline 3 applies when the schema does the heavy lifting.

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

Purpose3/5

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

States the verb-noun idea ("Next bookings") and that the resource is a "staff member or station," which clarifies what resourceId means. But it never defines the scope of "next" (time horizon, result count) and gives no hint at how it differs from siblings like calendar_agenda or staff_schedule.

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

Usage Guidelines2/5

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

No when-to-use, when-not-to-use, or alternative is named. An agent reading this cannot tell whether to prefer it over calendar_agenda, calendar_open_slots, or staff_schedule for looking ahead at a resource's schedule.

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

reviews_feedReviewsC
Read-onlyIdempotent

Reviews of the business with ratings and replies.

NameRequiredDescriptionDefault
freshNoSkip the local cache
orderingNoSort key used by the panel
reviews_pageNoPage number, from 1
reviews_rankNoOnly this star rating
reviews_per_pageNoItems per page, at most 100

TDQS

C2.9/5.0
Behavior3/5

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

The annotations already declare read-only, idempotent, non-destructive, and open-world behavior, so the safety profile is covered. The description adds that ratings and replies are included, but it does not disclose cache behavior, pagination shape, or return structure beyond that. With annotations doing the heavy safety lifting, this is a modest but not rich addition.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no wasted words or repetition. It is efficient, though its brevity contributes to gaps in usage and behavioral detail rather than structural clutter.

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

Completeness3/5

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

For a read-only feed with fully documented parameters and rich annotations, the description is minimally adequate but incomplete. It omits any explanation of cache freshness, ordering, pagination expectations, and what the feed returns, which would help an agent invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parameters are already documented in the input schema. The description adds no syntax, format, or meaning beyond what the schema provides, making the baseline 3 appropriate.

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

Purpose3/5

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

The description identifies the resource (reviews of the business) and the included data (ratings and replies), but it is a noun phrase with no explicit verb or action such as list/fetch. It does not differentiate this feed from any sibling tool, leaving the agent to infer that it retrieves a paginated review collection.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, nor any mention of when not to use it. The description also does not explain the role of the 'fresh' cache-skipping option or how ordering/pagination should be chosen.

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

service_addonsService add-onsC
Read-onlyIdempotent

Add-ons that can be sold with services.

NameRequiredDescriptionDefault
pageNoPage number, from 1
freshNoSkip the local cache
per_pageNoItems per page, at most 100

TDQS

C2.3/5.0
Behavior2/5

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 without the description. The description adds nothing beyond that: it does not disclose that results are paginated, that a cache can be bypassed via 'fresh', or what the collection contains. No contradiction with annotations, but no added behavioral value either.

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

Conciseness3/5

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

It is a single short sentence with no filler, so nothing is wasted. However, the brevity is under-specification rather than efficiency: the one line omits the operation type entirely and would need to be expanded, not trimmed.

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

Completeness2/5

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

With no output schema and three pagination parameters, the description should at minimum establish that this is a paginated read of a catalog and what distinguishes it from the other service-related tools. Neither is present, leaving an agent to infer the operation from annotations alone.

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

Parameters3/5

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

Schema description coverage is 100%, so page, per_page, and fresh are fully documented in the schema with defaults and bounds. Baseline 3 applies since the description contributes no additional parameter meaning, such as what 'fresh' caching implies in practice.

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

Purpose2/5

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

The text is a noun phrase with no verb, so it does not say whether the tool lists, retrieves, or creates add-ons. 'Add-ons that can be sold with services' largely restates the name 'service_addons' and the title 'Service add-ons', adding only the mild gloss 'sold with services'. It gives no differentiation from the many catalog-ish siblings such as service_menu, service_details, or product_catalog.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of any alternative tool. An agent cannot infer from the description whether this is the right call versus service_menu or service_details when it needs add-on data.

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

service_detailsService detailsC
Read-onlyIdempotent

One service with its variants and assigned staff.

NameRequiredDescriptionDefault
freshNoSkip the local cache
serviceIdYesService id

TDQS

C2.6/5.0
Behavior2/5

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 nothing beyond that — notably it never mentions the local cache or the freshness trade-off, even though the schema exposes a 'fresh' flag for exactly that, which is the one behavioral nuance an agent would want surfaced.

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

Conciseness3/5

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

A single short sentence with zero padding and the resource front-loaded. But conciseness here shades into under-specification: it is short because it omits usage guidance and cache behavior, not because it efficiently packs information.

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

Completeness3/5

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

There is no output schema, and the description partially compensates by naming what comes back (variants, assigned staff), which is useful. For a two-parameter read tool that is nearly adequate, but it leaves caching/staleness and the intended lookup use case unexplained.

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

Parameters3/5

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

Schema coverage is 100%, with both serviceId and fresh fully documented in the schema, so the baseline 3 applies. The description adds no syntax, format, or freshness semantics beyond what the schema already states, and the mention of variants/staff describes the response rather than the inputs.

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

Purpose3/5

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

The phrase "One service with its variants and assigned staff" implies a single-resource read keyed by serviceId, and the singular framing distinguishes it loosely from list-style siblings like service_menu and service_addons. However, there is no explicit verb and no positive differentiation from those siblings, so an agent gets the gist but must infer.

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

Usage Guidelines2/5

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

No statement of when to use this tool versus service_menu, service_addons, or resource_details. No prerequisites, no exclusions, no alternative routing — the agent is left to guess 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.

service_menuService menuB
Read-onlyIdempotent

All service categories with services, variants, prices and durations.

NameRequiredDescriptionDefault
freshNoSkip the local cache

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered. The description usefully discloses the return shape (a nested catalog rather than a flat list), but omits the one behavioral trait unique to this tool — the local cache that the `fresh` parameter bypasses — and says nothing about the size or cost of a full-catalog fetch.

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

Conciseness4/5

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

A single tight sentence with zero filler, front-loading the resource and its contents. It is a noun fragment rather than a complete statement of action, which costs it the top score.

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

Completeness3/5

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

With one optional parameter and no output schema, the description does the important work of sketching the returned structure, which is genuinely useful. But for an openWorld catalog read it omits scope (whose menu — the current business?), and the caching/`fresh` behavior an agent must understand before calling it repeatedly.

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

Parameters3/5

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

Schema coverage is 100% and the single `fresh` parameter is documented in-schema as 'Skip the local cache'. The description adds nothing about it, so baseline 3 applies; it neither compensates nor detracts.

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

Purpose4/5

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

The description enumerates the resource and its payload precisely (categories, services, variants, prices, durations), which tells an agent this is a full-catalog read rather than a single-record lookup like service_details or service_addons. It lacks an explicit verb and never names a sibling, so differentiation is inferential rather than stated.

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

Usage Guidelines2/5

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 service_details, service_addons, or business_features. The agent must infer from the name that this returns the whole menu rather than one service.

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

session_statusSession statusA
Read-onlyIdempotent

Shows whether the extension is connected, the pairing code when pairing is needed, the salon open in the panel, enabled write tools, the traffic mode, budget use and any cooldown. Start here.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, so the safety profile is covered. The description adds meaningful operational disclosure beyond that: the tool reveals whether the extension is connected, surfaces a pairing code when pairing is required, and reports traffic mode, budget use and cooldown — all conditions an agent must know about before trusting other calls. It does not say what the response shape looks like, but with no output schema the enumeration of returned facts largely covers that.

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

Conciseness4/5

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

One dense sentence plus a two-word directive — front-loaded, no filler, every listed item is a distinct piece of state an agent needs. Slightly list-heavy and "any cooldown" is a touch vague, but nothing is wasted.

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

Completeness4/5

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

For a zero-param, no-output-schema status tool the description is close to self-sufficient: it tells the agent what state it will learn and that it should be called first. The main residual gap is that it doesn't say what to do when the extension is disconnected or pairing is pending, which is the practical reason an agent would read this.

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

Parameters4/5

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

The tool takes zero parameters, so the schema has nothing for the description to explain; baseline is 4.

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

Purpose4/5

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

States a specific verb ("Shows") and a concrete resource with the exact facts returned: connection state, pairing code, active salon, enabled write tools, traffic mode, budget use, cooldown. This clearly separates it from every sibling, which are all domain-data listers. It stops short of a single crisp one-line purpose statement, reading more as a return-value inventory, so not a 5.

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

Usage Guidelines3/5

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

"Start here." is an explicit directive about ordering, which gives the agent real usage guidance for an entry-point tool. However, it names no conditions, no exclusions, and no alternatives from the large sibling set, so the guidance is implied rather than spelled out.

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

staff_scheduleStaff scheduleA
Read-onlyIdempotent

Working hours and time off per staff member and day, to the minute, for a date range. Reads one week at a time, with a pause between weeks.

NameRequiredDescriptionDefault
toYesLast day (YYYY-MM-DD)
fromYesFirst day (YYYY-MM-DD)
freshNoSkip the local cache

TDQS

A3.5/5.0
Behavior3/5

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 a real behavioral trait beyond that: the read is chunked weekly with a pause, implying throttling for large ranges. But 'with a pause between weeks' is ambiguous about who pauses, and the caching behavior implied by the `fresh` parameter is never mentioned, which is the more operationally important omission.

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

Conciseness4/5

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

Two sentences, front-loaded with the returned data and granularity, with no filler. The second sentence is short but slightly murky rather than wasteful, so it is efficient without being maximally clear.

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

Completeness4/5

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

With no output schema, the description usefully specifies the return granularity ('to the minute') and the weekly chunking constraint, which is important for planning calls. It is not fully complete: the cache/`fresh` interaction and timezone assumptions for 'per day' are unaddressed, both of which matter for a per-day schedule tool.

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

Parameters3/5

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

Schema description coverage is 100%, so `from`, `to` and `fresh` are each documented in the schema. The description reinforces the date-range semantics but says nothing about what `fresh` (skip the local cache) means in practice — how stale the cache can be or when to force a refresh. Baseline 3 applies when the schema does the heavy lifting.

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

Purpose4/5

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

The description names the exact resource and granularity: working hours plus time off, per staff member, per day, to the minute, over a date range. An agent can tell this is a schedule read rather than a time-off ledger or an agenda. It stops short of naming the siblings it overlaps with (time_off_entries, calendar_agenda, team_resources), so the differentiation is left implicit.

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

Usage Guidelines3/5

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

Usage is implied by the data scope, and the second sentence signals that long ranges must be fetched in weekly chunks. However, there is no explicit statement of when this tool beats time_off_entries or calendar_agenda, nor any exclusion criteria. An agent must infer the routing decision from sibling names alone.

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

stats_billing_cyclesBilling cyclesC
Read-onlyIdempotent

Billing cycles usable as report periods.

NameRequiredDescriptionDefault
freshNoSkip the local cache

TDQS

C2.5/5.0
Behavior2/5

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 is covered. The description adds nothing beyond that — no mention of caching behavior, freshness, pagination, or what shape a 'cycle' takes, despite the tool exposing a cache-bypass flag.

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

Conciseness3/5

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

It is a single, front-loaded phrase with no wasted clauses, which is good, but it is so terse that it reads as a title fragment rather than a usable definition. Brevity here borders on under-specification.

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

Completeness2/5

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

With no output schema, the description is the only place an agent could learn what a billing cycle record contains (dates, identifiers, ordering). That information is entirely absent, leaving the return value opaque for a stats-feeding tool.

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

Parameters3/5

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

There is a single optional parameter ('fresh') whose purpose is fully documented in the schema at 100% coverage, so the schema does the work. The description adds no extra meaning about what skipping the cache costs or when it matters, so the baseline 3 applies.

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

Purpose3/5

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

The description names the resource (billing cycles) and their use case (as report periods), but supplies no verb, so it is unclear whether this lists cycles, returns the current cycle, or something else. It also does not distinguish itself from nearby siblings such as stats_report_catalog or stats_report_metadata.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance, no prerequisites, and no named alternative. The phrase 'usable as report periods' only faintly implies that this feeds a report-period parameter elsewhere; the agent must infer the workflow.

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

stats_dashboardStatistics dashboardC
Read-onlyIdempotent

One statistics section with its figures and the list of reports inside it.

NameRequiredDescriptionDefault
freshNoSkip the local cache
dashboardYesSection
date_fromYesFirst day of the period (YYYY-MM-DD)
date_tillYesLast day of the period (YYYY-MM-DD)
time_spanNoPeriod typemonth

TDQS

C2.9/5.0
Behavior3/5

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

The annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false. The description adds useful return context by saying it includes figures and a list of reports, but it does not explain caching behavior despite the fresh parameter or describe the response shape in detail.

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

Conciseness4/5

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

It is a single short sentence with no wasted filler. However, the structure is resource-first without a leading action verb, which slightly reduces immediate clarity.

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

Completeness3/5

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

Because there is no output schema, the description should clarify return values, and it does so only at a high level ('figures and the list of reports'). It does not clarify the relationship to report-oriented siblings or how dates and caching affect the result, though the schema and annotations cover the safety and parameter basics.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all five parameters, including the dashboard enum and date formats. The description only loosely maps 'section' to the dashboard parameter and adds no meaningful parameter semantics beyond the schema.

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

Purpose3/5

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

The description identifies the resource as one statistics section and mentions the contents (figures and reports), but it lacks a clear action verb and does not distinguish this tool from similar statistics siblings such as stats_overview or stats_report_section.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus the many other statistics tools. The phrase 'One statistics section' only weakly implies usage, and no alternatives or exclusions are named.

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

stats_frame_requestsRequests of the report screenA
Read-onlyIdempotent

A check for live verification. Open the statistics screen in the panel first. Shows which addresses the report frame asked for by itself: address shapes and parameter names, without ids, values or headers. Sends nothing to Booksy.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent and non-destructive, so the bar is lower, and the description still adds value: the diagnostic/live-verification framing, the required screen state, and 'Sends nothing to Booksy' confirm no mutation occurs. It also discloses output shape limits (no ids, values or headers), though it does not explain failure modes when the screen is not open.

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

Conciseness4/5

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

Three short sentences with no filler, and the scope limits are stated compactly. The vague 'A check for live verification' leads, while the more actionable precondition sits second.

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

Completeness4/5

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

For a zero-parameter, no-output-schema diagnostic, the description covers the essential points: what it reveals, what it omits, and the required panel state. Only the exact response shape and behavior when the screen is not open remain unaddressed.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline is 4.

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

Purpose4/5

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

The description states a concrete verb and resource: it shows which addresses the report frame requested, limited to address shapes and parameter names. That is specific enough to separate it from stats_report and stats_report_metadata, but the opening line 'A check for live verification' is abstract and the tool never explicitly names a 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.

Usage Guidelines3/5

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

It gives one real precondition, 'Open the statistics screen in the panel first', which an agent must satisfy before calling. There is no statement of when to prefer this over stats_report_section or stats_report_catalog, and no exclusions, so the usage guidance is implied rather than complete.

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

stats_overviewStatistics overviewC
Read-onlyIdempotent

The main statistics dashboard for a period. The first read can take a minute.

NameRequiredDescriptionDefault
freshNoSkip the local cache
date_fromYesFirst day of the period (YYYY-MM-DD)
date_tillYesLast day of the period (YYYY-MM-DD)
time_spanNoPeriod typemonth

TDQS

C2.8/5.0
Behavior3/5

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 genuine behavioral detail beyond annotations: that the first read may take a minute, implying latency and likely caching. However, it does not explain the cache behavior or how 'fresh' changes it, so the coverage is partial rather than rich.

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

Conciseness4/5

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

Two short sentences with no filler, and the period scope is front-loaded. The size is appropriate, though the content is thin for the complexity of the tool.

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

Completeness2/5

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

For a statistics dashboard with four parameters, no output schema, and multiple stats_* siblings, the description is too thin. It does not say what the overview contains or how it differs from stats_dashboard, so an agent cannot predict return values or select correctly. The annotations and schema cover safety and inputs, but the description leaves the core output/identity gap unaddressed.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters (including the time_span enum and fresh flag) are already documented in the schema. The description adds nothing about parameter semantics, so the baseline of 3 is appropriate.

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

Purpose3/5

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

The description identifies a resource ('statistics dashboard') and a scope ('for a period'), but it gives no concrete verb beyond 'read' indirectly and no indication of what statistics are included. Critically, a sibling tool named stats_dashboard exists, and the description does nothing to distinguish this tool from it, leaving the agent unable to choose confidently between them.

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

Usage Guidelines2/5

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

The only guidance is 'The first read can take a minute,' which is a performance note rather than usage guidance. There is no statement of when to choose this tool over stats_dashboard, stats_report, or the other stats_* siblings, and no prerequisites or exclusions are given.

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

stats_reportReport as dataA
Read-onlyIdempotent

One report as JSON, as the panel shows it. Long reports are paged: use page, or report_export for the whole report as a file.

NameRequiredDescriptionDefault
pageNoPage of the report
freshNoSkip the local cache
filtersNoExtra report filters from stats_report_metadata, such as staffer_id
date_fromYesFirst day of the period (YYYY-MM-DD)
date_tillYesLast day of the period (YYYY-MM-DD)
time_spanNoPeriod typemonth
report_keyYesReport key from stats_report_catalog

TDQS

A3.8/5.0
Behavior3/5

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 one real behavioral trait beyond them – that long reports come back paged – but says nothing about caching behavior (the `fresh` flag exists in the schema) or the shape of the returned JSON.

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

Conciseness5/5

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

Two short sentences with no filler; the core capability is front-loaded and the paging/export escape hatch follows immediately.

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

Completeness4/5

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

For a read-only reporting tool with a fully documented schema and clear sibling routing, this is close to sufficient. The one gap is the return value: with no output schema, 'as the JSON' is vague about structure, and report_key/date_from being mandatory is left to the schema alone.

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

Parameters3/5

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

Schema coverage is 100%, so every one of the 7 parameters is already documented, including the nested filters object and its tie to stats_report_metadata. The description only adds meaning for `page` (paging) and nothing for report_key, date range, time_span or fresh, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb+resource: it returns one report as JSON, scoped to a single report as rendered in the panel. It's clearly not the catalog/metadata tools and not the file exporter, though it never mentions the required report_key/date range in prose.

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

Usage Guidelines4/5

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

Gives an explicit alternative route: for long reports use paging via `page`, or use report_export for the whole report as a file. That's clear when-to-use-what guidance, but it doesn't point to stats_report_catalog/stats_report_metadata as the prerequisite source of report_key and filters.

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

stats_report_catalogReport catalogueA
Read-onlyIdempotent

Every report key this salon can open, per statistics section. Booksy decides the keys by plan and country, so they are read from the panel. Reads one section after another, so it is slow the first time. Pass dashboard for just one section. A stop ends the reading, and the keys found until then are returned.

NameRequiredDescriptionDefault
dashboardNoOnly this section
date_fromYesFirst day of the period (YYYY-MM-DD)
date_tillYesLast day of the period (YYYY-MM-DD)
time_spanNoPeriod typemonth

TDQS

A3.9/5.0
Behavior5/5

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

The description adds substantial behavior beyond the readOnly/idempotent/openWorld annotations: keys are plan- and country-dependent and read from the panel, the call is slow on first invocation because sections are read sequentially, and an interruption returns partial results. These are exactly the operational traits an agent needs before deciding to call it.

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

Conciseness4/5

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

Four short sentences, front-loaded with what is returned, then the scoping option, then the performance caveat. Every sentence carries information; only the ordering of the slowness note before the dashboard tip slightly buries the actionable guidance.

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

Completeness4/5

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

With no output schema, the description does carry the return-value burden and does state that keys per section are returned, including partial keys on interruption. It stops short of describing the shape of a key or how sections map to entries, which is a minor gap for a catalogue tool.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters are already documented in the schema, and the description only restates the dashboard filter. It never explains why a catalogue of keys requires date_from/date_till or how time_span affects the returned keys, which is the one genuinely non-obvious semantic here.

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

Purpose4/5

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

States a concrete resource and result: 'Every report key this salon can open, per statistics section' — an agent knows this returns a catalogue of report identifiers, not report data. It does not explicitly contrast itself with stats_report, stats_report_metadata, or stats_report_section, which are the closest siblings, so differentiation is left implicit.

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

Usage Guidelines3/5

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

'Pass dashboard for just one section' gives one concrete usage pattern, and the slow-first-read note implies when to prefer the scoped call. However, there is no statement of when to call this versus stats_report or stats_report_metadata, nor any prerequisite (e.g. that keys are needed before calling stats_report).

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

stats_report_metadataReport filtersC
Read-onlyIdempotent

What a report needs: its period limits and available filters.

NameRequiredDescriptionDefault
freshNoSkip the local cache
reportYesReport key

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructiveness, so the safety profile is covered. The description adds that the result contains period limits and available filters, but it does not disclose caching behavior or the meaning of the 'fresh' parameter.

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

Conciseness4/5

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

The description is a single compact sentence with no wasted language. Its brevity is efficient, though the phrasing is somewhat fragmented rather than front-loaded with a clear action.

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

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter metadata tool with rich annotations, the description is minimally adequate: it indicates that period limits and filters are returned. However, without an output schema, it should more clearly describe the returned metadata and the role of the 'fresh' cache flag.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both 'report' and 'fresh' are documented in the schema. The description does not add meaning to either parameter; per the high-coverage baseline, a 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gestures at report metadata by mentioning 'period limits and available filters,' but it has no clear action verb and does not distinguish this tool from siblings such as stats_report_catalog or stats_report. An agent can infer it is a metadata lookup, but only vaguely.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus stats_report_catalog, stats_report, or stats_report_section. The description implies it is a preparatory lookup but never states that or names alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stats_report_sectionReport sectionC
Read-onlyIdempotent

One section of a report, for example one staff member or a later page of a table.

NameRequiredDescriptionDefault
freshNoSkip the local cache
filtersNoSection parameters as the report returned them
date_fromYesFirst day of the period (YYYY-MM-DD)
date_tillYesLast day of the period (YYYY-MM-DD)
time_spanNoPeriod typemonth

TDQS

C2.5/5.0
Behavior2/5

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 mention of caching behavior (despite the 'fresh' parameter), how sections relate to parent reports, or what the call returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single waste-free sentence, but it is not front-loaded with the operative verb and reads more as a noun gloss than an instruction, so brevity comes at the cost of specification.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with five parameters, a required date range, a free-form nested 'filters' object, and no output schema, one illustrative sentence is inadequate. The description does not explain how a section is identified within a report or how results relate to stats_report.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. However, the most semantically loaded parameter, 'filters' (opaque additionalProperties described only as 'Section parameters as the report returned them'), would benefit from description-level explanation that is entirely absent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the tool's subject ('one section of a report') and clarifies with examples ('one staff member or a later page of a table'), which does distinguish it conceptually from stats_report. But it never states an action verb (fetch/retrieve/generate) or what the tool actually does with a section, leaving the purpose vague relative to siblings like stats_report and stats_report_catalog.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to call this versus stats_report, stats_report_catalog, stats_report_metadata, or report_export. The examples hint at pagination semantics but give no explicit selection criteria or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

team_resourcesStaff and stationsB
Read-onlyIdempotent

Staff members and stations. Booksy keeps both as resources. Use kind to narrow the list.

NameRequiredDescriptionDefault
kindNoWhich resourcesall
freshNoSkip the local cache

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and open-world behavior, so the safety profile is covered. The description adds useful framing about the dual-resource data model, but says nothing about the local cache that the 'fresh' parameter implies, which is the one behavior an agent might get wrong.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the resource identity, then domain context, then the filter hint. No filler, though the middle sentence about Booksy's resource model could have been folded into the first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read-only listing tool with full schema coverage and no output schema, this is adequate but thin: the agent is not told what a resource record contains or how to follow up with resource_details, and the caching behavior is left entirely to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented and the baseline is 3. The description only restates the effect of 'kind' and adds no format or default details beyond the enum, and ignores 'fresh' entirely.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names the resource precisely ('Staff members and stations') and explains the domain quirk that Booksy models both as resources, so an agent can distinguish this collection tool from siblings like resource_details or staff_schedule. The list/retrieve verb is only implied by the noun phrase, which keeps it just short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use kind to narrow the list' tells the agent how to filter but never when this tool is the right choice versus resource_details, staff_schedule, or time_off_entries. There are no exclusions or prerequisites, leaving selection to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

time_block_detailsTime blockC
Read-onlyIdempotent

One calendar time block, such as a break or a reserved slot.

NameRequiredDescriptionDefault
freshNoSkip the local cache
reservationIdYesTime block id

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is already covered. The description adds no behavioral context—it does not mention caching (relevant to the 'fresh' parameter), lookup behavior, or what happens when a reservationId is missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single sentence with no filler, so it is concise. However, it is an under-specified fragment that does not front-load the operation, leaving the reader without a clear action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only detail tool with no output schema, the description should at least indicate what is returned (time block fields) and how caching works. Instead it only names the resource, leaving key call context unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and documents both 'reservationId' and 'fresh' with clear meanings. The description adds no meaning beyond the schema, 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.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a noun-phrase definition ('One calendar time block, such as a break or a reserved slot') but never states the action (fetch/retrieve details) nor distinguishes it from sibling calendar tools. It essentially restates the title 'Time block' with examples, so an agent learns 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.

Usage Guidelines2/5

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 calendar_agenda, calendar_month, or any other sibling, and no prerequisites or exclusions are given. The agent must infer usage entirely from the name and title.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

time_off_entriesTime offB
Read-onlyIdempotent

Time off of each staff member between two dates, with reason codes.

NameRequiredDescriptionDefault
toYesLast day (YYYY-MM-DD)
fromYesFirst day (YYYY-MM-DD)
freshNoSkip the local cache

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, open-world behavior, so the safety profile is covered. The description adds that results are per staff member and carry reason codes, which is useful content-level context, but it says nothing about the caching behavior implied by the 'fresh' flag or about result size/pagination.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with the scope front-loaded and no filler. It is arguably under-specified rather than verbose, but nothing in it is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of describing returns; it does say results are one entry per staff member with reason codes, which is a partial answer. It omits the effect of the 'fresh' parameter and any indication of result volume, so an agent cannot fully predict behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so 'from', 'to', and 'fresh' are already documented, including the date pattern. The description only restates the date-range concept and does not mention the 'fresh' cache-bypass parameter at all, adding no meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names the resource precisely ('time off of each staff member'), the scope ('between two dates'), and an included field ('reason codes'). The verb is only implied (list/retrieve) and nothing distinguishes it from calendar_agenda or staff_schedule, which an agent could plausibly pick instead.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus calendar_agenda, staff_schedule, or time_block_details, and no prerequisites or exclusions. The date-range phrasing implies a reporting/listing query but leaves all routing to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

voucher_ordersVoucher ordersD
Read-onlyIdempotent

Voucher orders.

NameRequiredDescriptionDefault
pageNoPage number, from 1
freshNoSkip the local cache
per_pageNoItems per page, at most 100

TDQS

D1.4/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds zero behavioral insight. While annotations specify it is read-only and safe, the description offers no unique context regarding execution constraints, rate limits, or specific operational nuances beyond the title itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The extreme brevity (one identical sentence to the title) results in zero structural value. While technically concise, this brevity is detrimental as it conveys no useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool defined with pagination parameters, the description should at least clarify that it is a listing or retrieval function. By offering only the title, it is contextually incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Since schema description coverage is 100%, the schema already details the parameters (pagination, caching, item count). The description does not add semantic meaning or context to these fields, maintaining the baseline score for full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is merely a repetition of the tool's title ('Voucher orders'). It fails completely to state *what* action is performed (e.g., listing, retrieving, searching) or what the resulting resource represents.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance provided on when to use this tool versus alternatives. It offers no context for the agent to make a decision about tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vouchersVouchersC
Read-onlyIdempotent

Vouchers, gift cards and packages sold.

NameRequiredDescriptionDefault
pageNoPage number, from 1
freshNoSkip the local cache
per_pageNoItems per page, at most 100

TDQS

C2.3/5.0
Behavior2/5

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 them — no note on caching (the 'fresh' flag), pagination behavior, or what the listing represents.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short and front-loaded, but that brevity comes at the cost of substance rather than from disciplined editing. There is no wasted sentence, yet no informative one either.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should say what a call returns (a paginated list of sold vouchers, with which fields). Instead it leaves the return shape and the distinction from voucher_orders entirely unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All three parameters (page, per_page, fresh) are fully documented in the schema with defaults and bounds, so the baseline of 3 applies. The description contributes no additional meaning about pagination or cache semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The text is a noun fragment that essentially restates the title, with only a small elaboration ('gift cards and packages sold') hinting at scope. It supplies no verb and does nothing to distinguish this tool from close siblings like voucher_orders or voucher_templates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this endpoint versus voucher_orders, voucher_templates, or the payment/checkout tools. An agent must infer from the name alone that this lists sold vouchers rather than orders or templates.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

voucher_templatesVoucher templatesD
Read-onlyIdempotent

Voucher templates.

NameRequiredDescriptionDefault
freshNoSkip the local cache

TDQS

D1.5/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses nothing beyond the name: not what a voucher template is, whether the list is paginated, filtered by business, or cached. Annotations already carry readOnly/idempotent/openWorld hints, so the description's only job is added context, and it adds none.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two words is technically terse but reflects under-specification, not conciseness; there is no front-loaded content because there is no content. A single informative clause about what templates are being listed would cost almost nothing and add a great deal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one optional param, no output schema, and read-only annotations, the surface is simple, so the omission is less damaging than it would be for a mutation tool. Still, an agent has no way to know the shape or scope of the returned templates, which leaves the definition incomplete for selection among the many voucher-related siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single optional parameter ('fresh') whose schema description already explains cache-skipping at 100% coverage, so the schema does the work. Per the high-coverage baseline, a 3 applies even though the description contributes no parameter meaning at all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is 'Voucher templates.', a verbatim restatement of the tool name and title, so it conveys no verb, no scope, and no object beyond the name itself. It cannot be distinguished from the sibling 'vouchers' or 'voucher_orders' on the basis of this text.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

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 instead of 'vouchers', 'voucher_orders', or any of the other ~70 siblings. No prerequisites, no exclusions, no alternatives are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

waitlistWaitlistC
Read-onlyIdempotent

Clients on the waitlist.

NameRequiredDescriptionDefault
pageNoPage number, from 1
freshNoSkip the local cache
per_pageNoItems per page, at most 100

TDQS

C2.2/5.0
Behavior2/5

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 nothing beyond that: it does not mention that results are paginated, that a local cache exists and can be bypassed, or how the waitlist is ordered — all context an agent would want here.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence is not overly long, but it is under-specified rather than concise: for a paginated, cache-aware list endpoint this leaves every operational question unanswered. Nothing is front-loaded because there is nothing to front-load.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description should say what a call returns (a paged collection of waitlist client records) and note pagination/caching behavior. It does none of that, leaving a 3-parameter list tool with no reliable picture of its result shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with page, per_page and fresh each self-documented, so the schema carries parameter meaning and the baseline of 3 applies. The description contributes nothing further (e.g. what 'fresh' means for waitlist data staleness), so it cannot exceed that baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Clients on the waitlist" restates the tool name/title as a noun phrase with no verb, so it never says whether this lists, counts, or retrieves waitlist clients. It does identify the resource (waitlisted clients), but an agent gets no confirmation of the operation being a paginated read.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to call this versus the many customer- or appointment-oriented siblings (e.g. appointment_requests, customer_visit_history). No prerequisites, no exclusions, only an implied 'this is about waitlisted clients'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wallet_overviewWallet overviewC
Read-onlyIdempotent

Balance and overview from the payments financial center.

NameRequiredDescriptionDefault
freshNoSkip the local cache

TDQS

C2.6/5.0
Behavior2/5

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 nothing beyond that — notably it never mentions the caching behavior implied by the sole parameter, nor freshness, currency scope, or what the "overview" aggregates.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with no filler, front-loaded on the resource. It is efficient but leans toward under-specification rather than genuine brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description should indicate what the overview returns (available vs. pending balance, currencies, payout totals). It instead offers only a vague phrase, leaving the agent unable to predict the payload before calling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter is fully documented ("Skip the local cache"), so the baseline of 3 applies. The description adds no context on when to pass fresh=true (e.g., after a transaction) versus accepting cached figures.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Balance and overview from the payments financial center" names a resource (wallet balance/overview) but the verb is nominal and the scope is fuzzy. It does not distinguish this from payment_summary, wallet_payouts, or checkout_transactions, so an agent cannot tell which sibling to pick without guessing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use condition and names no alternative. With ~15 payment-related siblings (payment_summary, wallet_payouts, payment_rows, cash_registers), the absence of routing guidance is a real gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wallet_payoutsPayoutsC
Read-onlyIdempotent

Payout history.

NameRequiredDescriptionDefault
pageNoPage number, from 1
freshNoSkip the local cache
per_pageNoItems per page, at most 100

TDQS

C2.2/5.0
Behavior2/5

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 elsewhere. The description adds no behavioral context of its own — nothing about pagination behavior, how 'fresh' bypasses a cache, or what the record set represents. No contradiction, but no 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two words is concise to the point of under-specification rather than economy. There is no front-loaded substance to reward; brevity here comes at the cost of all useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A read-only, three-parameter, zero-required listing with no output schema needs at least a statement of what a 'payout' record contains and how results are ordered or paged. Given a dense sibling set of wallet and payment tools, the description leaves the agent unable to know what it will get back or when to prefer it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: page, per_page and fresh are all documented with defaults and bounds. The description adds no meaning 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.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Payout history.' only restates the tool name and title ('wallet_payouts' / 'Payouts') with no verb and no scope. It does not distinguish this listing from nearby siblings like wallet_overview, payment_rows, or payment_summary, so an agent cannot tell what it returns or how it differs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance and no named alternative. With a crowded wallet/payment sibling cluster, the description offers nothing to help choose it over wallet_overview or payment_rows; the agent must infer from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

warehouse_detailsWarehouseC
Read-onlyIdempotent

One warehouse.

NameRequiredDescriptionDefault
freshNoSkip the local cache
warehouseIdYesWarehouse id

TDQS

C2/5.0
Behavior2/5

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 nothing about cache behavior tied to the 'fresh' parameter or what the read returns, so it contributes no 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two words and therefore not verbose, but this is under-specification rather than effective conciseness. It fails to front-load any useful information about retrieval or the single warehouse concept.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a details tool with no output schema and two parameters, the description should indicate what warehouse details are returned or how the result is shaped. Instead, it only says 'One warehouse,' leaving an agent without enough context to understand the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both warehouseId and fresh documented in the schema, so the baseline is 3. The description does not add meaning to either parameter, but the schema already carries that burden adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'One warehouse.' is essentially a tautology that restates the title and singular form of the tool name. It does not state a specific verb or resource action such as retrieving warehouse details, and it provides no differentiation from siblings like warehouses or warehouse_documents.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

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, when to prefer the sibling 'warehouses' list tool, or what context is needed. The two-word description leaves all usage decisions to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

warehouse_documentWarehouse documentC
Read-onlyIdempotent

One stock document.

NameRequiredDescriptionDefault
freshNoSkip the local cache
documentIdYesDocument id

TDQS

C2.2/5.0
Behavior2/5

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 further — no mention of cache behavior despite a 'fresh' parameter that implies local caching, and no hint that results may go stale or that the resource may not exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short, but that is under-specification rather than conciseness: a single three-word fragment that omits the operation entirely. Nothing is front-loaded because there is essentially no content to structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only 2 parameters, full schema coverage and rich annotations, the structural side is covered, but the description still fails to say what a 'stock document' is, what it returns, or how it relates to warehouse_documents/warehouse_details. An agent cannot confidently route to this tool from the description alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both 'documentId' and 'fresh' (skip the local cache) documented in the schema itself, so the baseline of 3 applies. The description contributes no additional meaning about the id format or what 'fresh' implies for consistency.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'One stock document.' merely restates the tool name/title with no verb, so the agent must infer that this retrieves a single warehouse/stock document by id. It weakly hints singularity ('one') against the plural sibling warehouse_documents, but does not name or differentiate itself from any sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of the obvious alternative (warehouse_documents for listings). The agent has to guess from the name alone whether to call this or the list variant.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

warehouse_documentsWarehouse documentsC
Read-onlyIdempotent

Stock documents such as deliveries and internal use.

NameRequiredDescriptionDefault
pageNoPage number, from 1
freshNoSkip the local cache
per_pageNoItems per page, at most 100

TDQS

C2.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare read-only, open-world, idempotent, and non-destructive behavior, so the description does not need to carry the safety profile. It adds content scope by naming example document types, but it does not explain pagination, the meaning of fresh/cache skipping, or what the response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence fragment with no wasted words. It is concise, though its brevity borders on under-specification rather than fully informative conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and a simple paginated list shape, the description should at least signal that this is a listing endpoint and how it relates to warehouse_document. It gives content examples but leaves the operation and sibling distinction unclear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so page, per_page, and fresh are already fully documented in the schema. The description adds no parameter semantics beyond that, which fits the 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.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource and gives examples ('deliveries and internal use'), but it contains no verb or operation. An agent cannot tell whether this lists, searches, or retrieves documents, and it does not distinguish the tool from sibling warehouse_document.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool, when not to use it, or which sibling to choose instead. The presence of warehouse_document, warehouses, and warehouse_details makes this omission especially costly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

warehousesWarehousesC
Read-onlyIdempotent

Warehouses of the business.

NameRequiredDescriptionDefault
freshNoSkip the local cache

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true, so the safety profile is fully covered. The description adds nothing beyond that — no note on pagination, result size, freshness semantics, or how it differs from the detail sibling. It does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short and front-loaded, so there is no bloat to trim, but the single sentence carries almost no informational payload. Brevity here reflects under-specification rather than disciplined writing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-required-parameter read-only listing tool with full schema coverage and rich annotations, the description does not need to explain return values or safety. The remaining gap — differentiating it from warehouse_details — is real but minor given the low complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is only one parameter (fresh) and schema description coverage is 100%, with the schema stating it skips the local cache. The description adds no meaning beyond the schema, but the baseline for high coverage is 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Warehouses of the business" is a noun phrase that essentially restates the name and title, with no verb and no indication of whether it lists all warehouses, filters them, or returns a single one. It does not distinguish this tool from nearby siblings such as warehouse_details, warehouse_documents, or product_stock_history.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool, when to prefer warehouse_details instead, or what prerequisites apply. Only the phrase "of the business" weakly implies a business-scoped listing, leaving selection entirely 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.

  1. 89 tool updatesv0.1.0
    • First observedappointment_changes_feed
    • First observedappointment_details
    • First observedappointment_payment_details
    • First observedappointment_requests
    • First observedbooking_charges
    • First observedbusiness_accounts
    • First observedbusiness_amenities
    • First observedbusiness_booking_rules
    • First observedbusiness_features
    • First observedbusiness_integrations
    • First observedbusiness_no_show_protection
    • First observedbusiness_notification_settings
    • First observedbusiness_pos_settings
    • First observedbusiness_profile
    • First observedbusiness_visibility
    • First observedcalendar_agenda
    • First observedcalendar_changed_dates
    • First observedcalendar_month
    • First observedcalendar_open_slots
    • First observedcampaign_details
    • First observedcampaign_estimate
    • First observedcampaign_groups
    • First observedcampaign_schedule
    • First observedcampaign_sms_balance
    • First observedcash_register
    • First observedcash_register_operations
    • First observedcash_registers
    • First observedchat_conversations
    • First observedchat_messages
    • First observedchat_quick_actions
    • First observedcheckout_last_receipt
    • First observedcheckout_transaction
    • First observedcheckout_transactions
    • First observedconsent_forms
    • First observedconsents_signed
    • First observedcustomer_card
    • First observedcustomer_cards
    • First observedcustomer_file_download
    • First observedcustomer_groups
    • First observedcustomer_product_history
    • First observedcustomer_tags
    • First observedcustomer_visit_history
    • First observeddocument_download
    • First observedinvoice
    • First observedinvoices
    • First observedloyalty_cards
    • First observedloyalty_program
    • First observedopening_hours
    • First observedpanel_notifications
    • First observedpayment_basket
    • First observedpayment_rows
    • First observedpayment_summary
    • First observedproduct_brands
    • First observedproduct_catalog
    • First observedproduct_categories
    • First observedproduct_stock_history
    • First observedproduct_suppliers
    • First observedrefund_fee_preview
    • First observedreport_export
    • First observedreport_export_batch
    • First observedresource_details
    • First observedresource_upcoming_bookings
    • First observedreviews_feed
    • First observedservice_addons
    • First observedservice_details
    • First observedservice_menu
    • First observedsession_status
    • First observedstaff_schedule
    • First observedstats_billing_cycles
    • First observedstats_dashboard
    • First observedstats_frame_requests
    • First observedstats_overview
    • First observedstats_report
    • First observedstats_report_catalog
    • First observedstats_report_metadata
    • First observedstats_report_section
    • First observedteam_resources
    • First observedtime_block_details
    • First observedtime_off_entries
    • First observedvoucher_orders
    • First observedvoucher_templates
    • First observedvouchers
    • First observedwaitlist
    • First observedwallet_overview
    • First observedwallet_payouts
    • First observedwarehouse_details
    • First observedwarehouse_document
    • First observedwarehouse_documents
    • First observedwarehouses

TDQS

C2.5/5.0

Scored across 89 tools

Disambiguation3/5

Most tools map to a distinct resource+action, but the statistics cluster (stats_overview, stats_dashboard, stats_report, stats_report_section, report_export, report_export_batch, stats_report_catalog, stats_report_metadata, stats_billing_cycles, stats_frame_requests) and the payments cluster (payment_rows, payment_summary, checkout_transactions, payment_basket, booking_charges, wallet_overview) have subtle boundaries that an agent could easily misselect among. Descriptions help considerably, but the sheer density of near-siblings makes selection error-prone.

Naming Consistency4/5

Consistently snake_case with a resource-first noun pattern, and singular/plural used meaningfully (customer_card vs customer_cards, warehouse_document vs warehouse_documents, invoice vs invoices). Minor deviations where the verb trails the noun (document_download, customer_file_download, report_export, refund_fee_preview) and the odd stats_frame_requests break the pattern slightly.

Tool Count2/5

89 tools is far past the point where an agent can hold the surface in mind, even accounting for the broad salon-management domain (calendar, clients, payments, inventory, marketing, stats, vouchers, loyalty). Many tools are narrowly scoped slices that could be consolidated into parameterized operations.

Completeness4/5

The read surface is remarkably thorough: calendar, staff/schedules, services, clients, payments/checkout, cash registers, invoices, inventory, vouchers, loyalty, consents, chat, reviews and full statistics with export all have coverage. The apparent gap is mutation — no create/update/delete tools are exposed, so the set is read-and-export only, with some statistical redundancy rather than missing reads.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to control and automate your Chrome browser directly, leveraging existing login states and configurations for tasks like content analysis, semantic search across tabs, screenshots, network monitoring, and interactive operations.
    12
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Lets AI assistants control your real Chrome browser to perform web tasks like reading pages, taking screenshots, clicking, and typing, using your existing logged-in sessions.
    145
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to control a user's real browser through a browser extension, using existing profiles, cookies, and logins to navigate, interact, and extract content without headless automation.
    Apache 2.0