booksy-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@booksy-mcpshow me today's appointments and which staff are booked"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 setupyourself 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 buildOnce published, npx -y booksy-mcp will replace the path used below.
2. Load the extension
Open
chrome://extensionsand turn on Developer mode.Click Load unpacked and pick the
extension/distfolder.
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.jsClaude 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
Open Booksy Biz in Chrome and log in.
Ask your assistant to run
session_status. It shows an 8-character code.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 |
| Default | Meaning |
|
| none | Write tools to enable, see Writes |
|
| none | Tools to turn off, reads included |
|
|
| Where files are saved |
|
| off | Mask client e-mails and phone numbers, see Security and privacy |
|
| on | See Safe mode. Only |
|
| none | Longer gap. Cannot go below safe mode |
|
| none | Lower hourly limit. Cannot go above safe mode |
|
|
| Larger results go to a file |
|
|
| Local port, also set it in the extension |
|
| 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 |
| 4 s | none | Gap after the previous request has finished |
| 1 | 0 | Random extra on any gap, so 4 s means 4 to 8 s |
| 30 s | none | Gap between writes, which go one by one |
| 60 s | none | Gap between report exports |
| 120 | none | Requests in any 60 minutes |
| 500 | none | Requests in any 24 hours |
| 15 | none | Report exports in any 24 hours |
| 5 | none | Reports in one |
| 15 | none | Requests one tool call may make |
| 92 | none | Longest range of a calendar or shift tool |
| 366 | none | Longest period of a report |
| 14 | 31 | Calendar ranges are read in windows of this length |
| 10 s | none | Pause between windows or weeks of one call |
| 5 | 1 | Cache lives 5, 25 or 50 minutes instead of 1, 5 or 10 |
| 60 | 0 |
|
| 20 min | none | No requests when the panel tab is in the background or minimized, or the computer idle or locked, for longer |
| 6 h | 15 min | Stop after a 429, a captcha or |
| 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_confirmall 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:
The tool is enabled on the server.
Allow writes is on in the extension popup. It is off by default.
It passes two steps. A call with
mode=dry_runshows the exact request, asks Booksy to validate it where the panel has a preview, and returns aconfirm_token. A second call with the same arguments,mode=confirmand 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.1only, and checks bothHostandOrigin, 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, includingreport_exportwithoutput=json:jan@example.combecomesja***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 nameBOOKSY_MCP_MASK_CONTACTSstill 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 buildsrc/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
Available Tools
89 toolsappointment_changes_feedAppointment changesBRead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| days_back | No | Days before today to watch | |
| days_ahead | No | Days after today to watch |
TDQS
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.
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.
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.
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.
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.
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 detailsCRead-onlyIdempotent
One appointment with its services, staff, client and price.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache | |
| appointmentUid | Yes | appointment_uid from the calendar |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is 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.
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.
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.
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.
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.
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 paymentCRead-onlyIdempotent
Deposit, payment, tip and refund state of one appointment.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache | |
| appointmentId | Yes | appointment_uid from the calendar |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds 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.
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.
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.
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.
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.
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 waitingBRead-onlyIdempotent
Appointments that wait for the salon to confirm or decline, from today on.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache | |
| days_ahead | No | How far ahead to look |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds 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.
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.
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.
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.
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.
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 chargesCRead-onlyIdempotent
Appointments waiting for checkout or with booking charges.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, from 1 | |
| fresh | No | Skip the local cache | |
| query | No | ||
| per_page | No | Items per page, at most 100 | |
| date_from | No | First day (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered 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.
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.
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.
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.
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.
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 loginBRead-onlyIdempotent
Lists the businesses the logged-in user can open in the panel.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is 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.
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.
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.
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.
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.
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_amenitiesAmenitiesCRead-onlyIdempotent
Amenities shown on the business profile.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds 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.
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.
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.
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.
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.
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 rulesCRead-onlyIdempotent
Booking rules set in the panel, grouped by category.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered. The description adds 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.
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.
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.
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.
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.
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 statusBRead-onlyIdempotent
Which panel features are on, off or available for this business.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered elsewhere. The description adds 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.
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.
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.
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.
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.
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 integrationsCRead-onlyIdempotent
Online booking integrations and their state.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache |
TDQS
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.
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.
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.
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.
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.
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 protectionCRead-onlyIdempotent
Deposit and cancellation fee settings per service.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache |
TDQS
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.
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.
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.
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.
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.
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 settingsCRead-onlyIdempotent
Staff and owner notification settings.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds nothing beyond that — no 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.
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.
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.
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.
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.
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 settingsCRead-onlyIdempotent
Checkout and payment settings of the business.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds 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.
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.
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.
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.
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.
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 profileCRead-onlyIdempotent
Public profile and core data of the business open in the panel tab.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache |
TDQS
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.
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.
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.
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.
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.
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 visibilityCRead-onlyIdempotent
Whether the business is visible and bookable on the marketplace.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache |
TDQS
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.
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.
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.
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.
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.
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 agendaARead-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).
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Last day (YYYY-MM-DD) | |
| from | Yes | First day (YYYY-MM-DD) | |
| fresh | No | Skip the local cache | |
| status | No | Only these status codes | |
| staff_id | No | Only this staff member or station |
TDQS
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.
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.
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.
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.
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.
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 sinceCRead-onlyIdempotent
Dates with calendar changes since a Unix timestamp, as the panel polls them.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache | |
| timestamp | Yes | Unix time in seconds |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered 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.
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.
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.
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.
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.
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 viewCRead-onlyIdempotent
Counters and bookings for a month view of the calendar.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache | |
| end_date | Yes | Last day of the month (YYYY-MM-DD) | |
| start_date | Yes | First day of the month (YYYY-MM-DD) | |
| resource_ids | No | Only these staff members or stations. All of them when left out |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered. The description adds 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.
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.
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.
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.
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.
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 slotsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Day (YYYY-MM-DD) | |
| fresh | No | Skip the local cache | |
| staff_id | No | Only this staff member | |
| step_minutes | No | Gap between start times | |
| duration_minutes | Yes | Length of the visit |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered. The description adds 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.
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.
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.
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.
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.
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 detailsCRead-onlyIdempotent
One campaign template: text, channel, audience and automation settings.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache | |
| templateId | Yes | Template id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is 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.
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.
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.
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.
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.
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 estimateARead-onlyIdempotent
Number of recipients and SMS cost for a campaign. Sends nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| body_short | Yes | SMS text | |
| recipients | Yes | Audience object, as in the campaign | |
| channel_priority | No | Channel order |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is 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.
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.
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.
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.
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.
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_groupsCampaignsBRead-onlyIdempotent
All message campaign templates, including automated campaigns and their automated_status.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds 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.
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.
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.
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.
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.
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 campaignsCRead-onlyIdempotent
Campaigns scheduled to go out.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds 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.
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.
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.
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.
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.
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 balanceCRead-onlyIdempotent
SMS limits, used and free messages, and the price per part.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), 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.
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.
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.
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.
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.
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 registerCRead-onlyIdempotent
One cash register with totals.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache | |
| registerId | Yes | Register id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds 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.
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.
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.
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.
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.
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 operationsCRead-onlyIdempotent
Cash in and out operations of one register.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, from 1 | |
| fresh | No | Skip the local cache | |
| per_page | No | Items per page, at most 100 | |
| registerId | Yes | Register id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds only that the 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.
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.
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.
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.
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.
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 registersCRead-onlyIdempotent
Cash registers and their open or closed state.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, from 1 | |
| fresh | No | Skip the local cache | |
| per_page | No | Items per page, at most 100 |
TDQS
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.
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.
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.
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.
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.
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 conversationsARead-onlyIdempotent
Client chat conversations, newest first. Works only where the panel has client chat enabled.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many | |
| offset | No | How many to skip |
TDQS
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.
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.
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.
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.
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.
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 messagesCRead-onlyIdempotent
Latest messages of one client conversation.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many | |
| channel_id | Yes | Conversation id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is fully covered 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.
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.
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.
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.
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.
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 actionsCRead-onlyIdempotent
Suggested quick actions for a client conversation.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache | |
| bci_id | Yes | Client id |
TDQS
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.
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.
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.
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.
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.
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 receiptCRead-onlyIdempotent
The latest receipt of a transaction.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache | |
| transactionId | Yes | Transaction id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds 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.
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.
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.
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.
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.
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 transactionCRead-onlyIdempotent
One transaction with items, payments, tips and discounts.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache | |
| transactionId | Yes | Transaction id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered. The description adds 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.
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.
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.
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.
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.
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 transactionsCRead-onlyIdempotent
Checkout transactions for a period.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, from 1 | |
| fresh | No | Skip the local cache | |
| query | No | ||
| per_page | No | Items per page, at most 100 | |
| date_from | No | First day (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds 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.
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.
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.
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.
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.
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.
consent_formsConsent formsCRead-onlyIdempotent
Consent form templates.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=true; the description adds nothing about behavior, including why the tool is flagged open-world or what the cache/fresh flag implies about freshness of results. Credit here only for not contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short, but the brevity is under-specification rather than discipline: a single fragment with no verb and no front-loaded action statement. There is nothing redundant, but nothing earns its place either.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotation elaboration means the description must carry the burden of telling the agent what is returned and how it relates to signed consents, and it does neither. For a list-style read tool this leaves the agent guessing at the result shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With one optional parameter and 100% schema description coverage, the schema carries the full meaning of 'fresh' (skip the local cache). The description adds no interpretation of its own, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is a bare noun fragment, 'Consent form templates.', that restates the title with one added word. It hints at the resource (templates rather than signed consents, implicitly vs sibling consents_signed) but supplies no verb or scope, so an agent cannot tell whether it lists, fetches, or creates templates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No indication of when to call this versus consents_signed or any other sibling, and no stated preconditions. The closest sibling is thematically adjacent, which makes the absence of routing guidance a real risk of misselection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consents_signedConsentsCRead-onlyIdempotent
Consents assigned to clients.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, from 1 | |
| fresh | No | Skip the local cache | |
| per_page | No | Items per page, at most 100 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds 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.
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.
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.
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.
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.
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 cardCRead-onlyIdempotent
Full client card: contact data, notes, tags, visit and spending counters.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache | |
| customerId | Yes | Client id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds 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.
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.
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.
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.
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.
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 cardsARead-onlyIdempotent
Lists client cards, or searches them by name, phone or e-mail with query.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, from 1 | |
| fresh | No | Skip the local cache | |
| query | No | Search text | |
| per_page | No | Items per page, at most 100 |
TDQS
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.
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.
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.
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.
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.
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 fileBRead-onlyIdempotent
Saves a file attached to a client card as a local file.
| Name | Required | Description | Default |
|---|---|---|---|
| customerId | Yes | Client id | |
| attachedFileId | Yes | File id from the client card |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds the 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.
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.
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.
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.
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.
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 groupsCRead-onlyIdempotent
Client groups with their sizes.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds 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.
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.
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.
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.
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.
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 purchasesCRead-onlyIdempotent
Products one client bought.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, from 1 | |
| fresh | No | Skip the local cache | |
| page_size | No | Items per page, at most 100 | |
| customerId | Yes | Client id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered 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.
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.
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.
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.
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.
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 tagsCRead-onlyIdempotent
Tags used on client cards.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache |
TDQS
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.
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.
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.
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.
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.
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 historyCRead-onlyIdempotent
Past and future appointments of one client.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, from 1 | |
| fresh | No | Skip the local cache | |
| state | No | Only visits in this state | |
| per_page | No | Items per page, at most 100 | |
| customerId | Yes | Client id | |
| include_extra_bookings | No | Also visits outside the main list |
TDQS
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.
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.
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.
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.
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.
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 documentARead-onlyIdempotent
Saves a cash register report, cash document, invoice or consent as a local file.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id of the document, register, invoice or consent | |
| kind | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds the 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.
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.
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.
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.
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.
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.
invoiceInvoiceCRead-onlyIdempotent
One invoice.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache | |
| invoiceId | Yes | Invoice id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is 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.
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.
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.
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.
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.
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.
invoicesInvoicesCRead-onlyIdempotent
Invoices issued in the panel.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, from 1 | |
| fresh | No | Skip the local cache | |
| per_page | No | Items per page, at most 100 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds nothing beyond that — 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.
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.
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.
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.
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.
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 cardsCRead-onlyIdempotent
Client loyalty cards.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, from 1 | |
| fresh | No | Skip the local cache | |
| per_page | No | Items per page, at most 100 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered structurally. The description adds nothing 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.
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.
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.
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.
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.
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 programCRead-onlyIdempotent
The current stamp card program.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds 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.
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.
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.
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.
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.
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 hoursBRead-onlyIdempotent
Opening hours of the business, day by day, for the week of the given date.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Any day in the week (YYYY-MM-DD) | |
| fresh | No | Skip the local cache |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered. The description 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.
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.
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.
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.
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.
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 notificationsCRead-onlyIdempotent
The notification list from the panel bell.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, from 1 | |
| fresh | No | Skip the local cache | |
| status | No | Which list | active |
| per_page | No | Items per page, at most 100 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered 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.
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.
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.
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.
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.
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 basketCRead-onlyIdempotent
One payment basket with its deposit, payment and refund records.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache | |
| basketId | Yes | Basket id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so safety 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.
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.
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.
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.
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.
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 rowsCRead-onlyIdempotent
Payment list with method, status and amounts, like the panel payments screen.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, from 1 | |
| fresh | No | Skip the local cache | |
| query | No | Search text | |
| per_page | No | Items per page, at most 100 | |
| date_from | Yes | First day (YYYY-MM-DD) | |
| date_till | Yes | Last day (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered 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.
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.
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.
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.
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.
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 summaryCRead-onlyIdempotent
Summary tiles of payments for a period.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, from 1 | |
| fresh | No | Skip the local cache | |
| query | No | Search text | |
| scope | Yes | Period key used by the panel | |
| per_page | No | Items per page, at most 100 | |
| date_from | No | First day (YYYY-MM-DD) | |
| date_till | No | Last day (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds 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.
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.
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.
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.
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.
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 brandsCRead-onlyIdempotent
Product brands.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered 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.
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.
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.
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.
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.
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_catalogProductsCRead-onlyIdempotent
Products with stock and prices.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, from 1 | |
| fresh | No | Skip the local cache | |
| query | No | Search text | |
| category | No | Category id | |
| per_page | No | Items per page, at most 100 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, and non-destructive behavior. The description adds 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.
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.
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.
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.
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.
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 categoriesCRead-onlyIdempotent
Product category tree.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered. The description adds 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.
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.
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.
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.
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.
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 historyCRead-onlyIdempotent
Stock movements of one product in one warehouse.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, from 1 | |
| fresh | No | Skip the local cache | |
| per_page | No | Items per page, at most 100 | |
| commodityId | Yes | Product id | |
| warehouseId | Yes | Warehouse id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, covering the safety profile. The description adds 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.
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.
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.
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.
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.
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_suppliersSuppliersDRead-onlyIdempotent
Product suppliers.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache |
TDQS
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.
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.
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.
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.
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.
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 feesARead-onlyIdempotent
Fees that would apply to refunding a payment. Reads only, refunds nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache | |
| basketPaymentId | Yes | Basket payment id |
TDQS
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.
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.
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.
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.
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.
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 reportARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| output | No | file saves the panel file, csv also converts it, json also returns the rows | file |
| filters | No | Extra report filters from stats_report_metadata, such as staffer_id | |
| max_rows | No | JSON rows per sheet | |
| date_from | Yes | First day of the period (YYYY-MM-DD) | |
| date_till | Yes | Last day of the period (YYYY-MM-DD) | |
| time_span | No | Period type | month |
| report_key | Yes | Report key from stats_report_catalog |
TDQS
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.
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.
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.
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.
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.
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 reportsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| output | No | file saves the panel file, csv also converts it, json also returns the rows | file |
| date_from | Yes | First day of the period (YYYY-MM-DD) | |
| date_till | Yes | Last day of the period (YYYY-MM-DD) | |
| time_span | No | Period type | month |
| report_keys | Yes | Report keys |
TDQS
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.
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.
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.
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.
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.
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 stationBRead-onlyIdempotent
Details of one staff member or station. Both are resources in Booksy.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache | |
| resourceId | Yes | Resource id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is 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.
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.
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.
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.
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.
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 resourceCRead-onlyIdempotent
Next bookings of one staff member or station.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache | |
| resourceId | Yes | Resource id |
TDQS
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.
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.
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.
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.
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.
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_feedReviewsCRead-onlyIdempotent
Reviews of the business with ratings and replies.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache | |
| ordering | No | Sort key used by the panel | |
| reviews_page | No | Page number, from 1 | |
| reviews_rank | No | Only this star rating | |
| reviews_per_page | No | Items per page, at most 100 |
TDQS
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.
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.
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.
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.
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.
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-onsCRead-onlyIdempotent
Add-ons that can be sold with services.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, from 1 | |
| fresh | No | Skip the local cache | |
| per_page | No | Items per page, at most 100 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered 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.
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.
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.
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.
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.
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 detailsCRead-onlyIdempotent
One service with its variants and assigned staff.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache | |
| serviceId | Yes | Service id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so safety is covered. The description adds 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.
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.
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.
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.
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.
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.
session_statusSession statusARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, 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.
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.
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.
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.
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.
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 scheduleARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Last day (YYYY-MM-DD) | |
| from | Yes | First day (YYYY-MM-DD) | |
| fresh | No | Skip the local cache |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds 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.
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.
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.
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.
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.
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 cyclesCRead-onlyIdempotent
Billing cycles usable as report periods.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so safety 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.
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.
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.
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.
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.
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 dashboardCRead-onlyIdempotent
One statistics section with its figures and the list of reports inside it.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache | |
| dashboard | Yes | Section | |
| date_from | Yes | First day of the period (YYYY-MM-DD) | |
| date_till | Yes | Last day of the period (YYYY-MM-DD) | |
| time_span | No | Period type | month |
TDQS
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.
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.
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.
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.
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.
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 screenARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 overviewCRead-onlyIdempotent
The main statistics dashboard for a period. The first read can take a minute.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache | |
| date_from | Yes | First day of the period (YYYY-MM-DD) | |
| date_till | Yes | Last day of the period (YYYY-MM-DD) | |
| time_span | No | Period type | month |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds a 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.
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.
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.
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.
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.
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 dataARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page of the report | |
| fresh | No | Skip the local cache | |
| filters | No | Extra report filters from stats_report_metadata, such as staffer_id | |
| date_from | Yes | First day of the period (YYYY-MM-DD) | |
| date_till | Yes | Last day of the period (YYYY-MM-DD) | |
| time_span | No | Period type | month |
| report_key | Yes | Report key from stats_report_catalog |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds 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.
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.
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.
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.
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.
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 catalogueARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| dashboard | No | Only this section | |
| date_from | Yes | First day of the period (YYYY-MM-DD) | |
| date_till | Yes | Last day of the period (YYYY-MM-DD) | |
| time_span | No | Period type | month |
TDQS
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.
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.
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.
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.
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.
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 filtersCRead-onlyIdempotent
What a report needs: its period limits and available filters.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache | |
| report | Yes | Report key |
TDQS
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.
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.
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.
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.
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.
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 sectionCRead-onlyIdempotent
One section of a report, for example one staff member or a later page of a table.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache | |
| filters | No | Section parameters as the report returned them | |
| date_from | Yes | First day of the period (YYYY-MM-DD) | |
| date_till | Yes | Last day of the period (YYYY-MM-DD) | |
| time_span | No | Period type | month |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that — no 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.
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.
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.
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.
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.
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 stationsBRead-onlyIdempotent
Staff members and stations. Booksy keeps both as resources. Use kind to narrow the list.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Which resources | all |
| fresh | No | Skip the local cache |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and open-world behavior, so the safety profile is covered. The description adds 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.
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.
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.
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.
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.
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 blockCRead-onlyIdempotent
One calendar time block, such as a break or a reserved slot.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache | |
| reservationId | Yes | Time block id |
TDQS
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.
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.
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.
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.
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.
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 offBRead-onlyIdempotent
Time off of each staff member between two dates, with reason codes.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Last day (YYYY-MM-DD) | |
| from | Yes | First day (YYYY-MM-DD) | |
| fresh | No | Skip the local cache |
TDQS
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.
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.
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.
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.
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.
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 ordersDRead-onlyIdempotent
Voucher orders.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, from 1 | |
| fresh | No | Skip the local cache | |
| per_page | No | Items per page, at most 100 |
TDQS
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.
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.
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.
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.
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.
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.
vouchersVouchersCRead-onlyIdempotent
Vouchers, gift cards and packages sold.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, from 1 | |
| fresh | No | Skip the local cache | |
| per_page | No | Items per page, at most 100 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond 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.
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.
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.
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.
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.
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 templatesDRead-onlyIdempotent
Voucher templates.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache |
TDQS
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.
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.
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.
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.
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.
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.
waitlistWaitlistCRead-onlyIdempotent
Clients on the waitlist.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, from 1 | |
| fresh | No | Skip the local cache | |
| per_page | No | Items per page, at most 100 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and openWorld, so safety is covered. The description adds 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.
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.
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.
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.
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.
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 overviewCRead-onlyIdempotent
Balance and overview from the payments financial center.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and open-world, so the safety profile is covered. The description adds 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.
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.
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.
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.
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.
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_payoutsPayoutsCRead-onlyIdempotent
Payout history.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, from 1 | |
| fresh | No | Skip the local cache | |
| per_page | No | Items per page, at most 100 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered 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.
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.
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.
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.
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.
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_detailsWarehouseCRead-onlyIdempotent
One warehouse.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache | |
| warehouseId | Yes | Warehouse id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds 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.
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.
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.
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.
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.
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 documentCRead-onlyIdempotent
One stock document.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache | |
| documentId | Yes | Document id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is 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.
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.
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.
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.
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.
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 documentsCRead-onlyIdempotent
Stock documents such as deliveries and internal use.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, from 1 | |
| fresh | No | Skip the local cache | |
| per_page | No | Items per page, at most 100 |
TDQS
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.
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.
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.
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.
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.
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.
warehousesWarehousesCRead-onlyIdempotent
Warehouses of the business.
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | Skip the local cache |
TDQS
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.
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.
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.
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.
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.
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.
89 tool updates
v0.1.0- First observed
appointment_changes_feed - First observed
appointment_details - First observed
appointment_payment_details - First observed
appointment_requests - First observed
booking_charges - First observed
business_accounts - First observed
business_amenities - First observed
business_booking_rules - First observed
business_features - First observed
business_integrations - First observed
business_no_show_protection - First observed
business_notification_settings - First observed
business_pos_settings - First observed
business_profile - First observed
business_visibility - First observed
calendar_agenda - First observed
calendar_changed_dates - First observed
calendar_month - First observed
calendar_open_slots - First observed
campaign_details - First observed
campaign_estimate - First observed
campaign_groups - First observed
campaign_schedule - First observed
campaign_sms_balance - First observed
cash_register - First observed
cash_register_operations - First observed
cash_registers - First observed
chat_conversations - First observed
chat_messages - First observed
chat_quick_actions - First observed
checkout_last_receipt - First observed
checkout_transaction - First observed
checkout_transactions - First observed
consent_forms - First observed
consents_signed - First observed
customer_card - First observed
customer_cards - First observed
customer_file_download - First observed
customer_groups - First observed
customer_product_history - First observed
customer_tags - First observed
customer_visit_history - First observed
document_download - First observed
invoice - First observed
invoices - First observed
loyalty_cards - First observed
loyalty_program - First observed
opening_hours - First observed
panel_notifications - First observed
payment_basket - First observed
payment_rows - First observed
payment_summary - First observed
product_brands - First observed
product_catalog - First observed
product_categories - First observed
product_stock_history - First observed
product_suppliers - First observed
refund_fee_preview - First observed
report_export - First observed
report_export_batch - First observed
resource_details - First observed
resource_upcoming_bookings - First observed
reviews_feed - First observed
service_addons - First observed
service_details - First observed
service_menu - First observed
session_status - First observed
staff_schedule - First observed
stats_billing_cycles - First observed
stats_dashboard - First observed
stats_frame_requests - First observed
stats_overview - First observed
stats_report - First observed
stats_report_catalog - First observed
stats_report_metadata - First observed
stats_report_section - First observed
team_resources - First observed
time_block_details - First observed
time_off_entries - First observed
voucher_orders - First observed
voucher_templates - First observed
vouchers - First observed
waitlist - First observed
wallet_overview - First observed
wallet_payouts - First observed
warehouse_details - First observed
warehouse_document - First observed
warehouse_documents - First observed
warehouses
TDQS
Scored across 89 tools
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.
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.
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.
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
Related MCP Connectors
Connect AI agents to your own Chrome with scoped access, approvals, and verified task results.
Let your AI agent operate any website through a real, logged-in browser session.
Web search, data extraction and controlled browser automation for AI assistants via OAuth.
AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables 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.12MIT
- AlicenseNot gradedqualityCmaintenanceLets 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.145MIT
- AlicenseAqualityCmaintenanceEnables AI assistants to read LinkedIn profiles, company pages, jobs, messages, and feed through a user's logged-in browser session.19Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables 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