KikoBooks MCP Server
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., "@KikoBooks MCP Serverlist my unpaid invoices from last month"
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.
KikoBooks MCP Server
A Model Context Protocol (MCP) server for KikoBooks — enterprise AI-agentic bookkeeping software. This server enables AI assistants like Claude, GitHub Copilot, and OpenAI-powered agents to interact with your KikoBooks accounting data through natural language.
Building an agent on top of this server? Read SKILL.md — the operating guide (status-first connect, write-tier approval, read-back verification, never expose secrets).
Maintaining or extending it? See CONTRIBUTING.md for the facts that must stay accurate and the release steps.
Features
Chart of Accounts — Search, get, create, and update GL accounts
Customers — Full CRUD with soft delete for customer management
Invoices — Search, create, and manage AR invoices
Items — Manage products and services
Vendors — Full CRUD with soft delete for vendor management
Bills — Full CRUD with void for AP bills
Journal Entries — Search, create, post, and reverse GL journal entries
Bill Payments — Search, create, and void AP payments
Purchases / Expenses — Full CRUD with delete for expense transactions
Customer Payments — Search, create, and manage AR payments
Credit Memos — Search, create, and manage AR credit memos
Sales Receipts — Search, create, and manage sales receipts
CRM — Leads, deals, and pipeline (search/create/update), plus stage moves and customer promotion
Proposals — Search and copy proposals; convert accepted proposals to invoices or jobs
Workflow — Jobs (Projects/Engagements) and tasks; status updates and job-to-invoice billing
Lifecycle bridges — CRM deal → proposal → job → invoice, end to end
Reports — Trial balance, profit & loss, AR/AP aging, cash position, income/expense by category, business health (read-only)
Banking — Bank accounts, imported transactions, and reconciliation sessions, plus the reconciliation lifecycle (start, set statement balance, complete, cancel)
Deposits, Fixed Assets, Recurring Schedules, Statements — Search and get, plus deposit posting, fixed-asset depreciation and disposal, recurring-schedule controls, and statement sending
Connection & discovery — Connection status and per-org enabled-module discovery (no secrets exposed)
CRM, Proposals, and Workflow tools require the org to have the Sales / Workflow modules enabled (always on for accounting firms; opt-in for self-service businesses). Call
get_enabled_modulesfirst to check.
Related MCP server: Alegra MCP Server
Prerequisites
Node.js 18 or higher
A KikoBooks or Accountant.World organization (start free)
An org API key: sign in, open Settings → API Keys (direct link), create a key, and copy it once. Keys can be scoped, set to expire, and revoked at any time.
Supported clients
Any MCP client that can launch a local (stdio) server: Claude Desktop, Claude Code, Cursor, Windsurf, VS Code (GitHub Copilot), and others. ChatGPT connectors require a hosted (remote HTTPS) MCP endpoint, which KikoBooks does not offer yet.
Setup
Most users don't need this. To use the published server, skip to Configuration — the
npxcommand pulls it from npm automatically. The steps below are for local development / contributing.
Install dependencies:
npm installCreate a
.envfile (copy from.env.example):
KIKOBOOKS_BASE_URL=https://ai.kikobooks.com
KIKOBOOKS_API_KEY=your_api_key_hereBuild:
npm run buildConfiguration
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"kikobooks": {
"command": "npx",
"args": ["-y", "@agentkiko/kikobooks-mcp-server@latest"],
"env": {
"KIKOBOOKS_BASE_URL": "https://ai.kikobooks.com",
"KIKOBOOKS_API_KEY": "your_api_key_here"
}
}
}
}VS Code (GitHub Copilot)
Add to .vscode/mcp.json in your project:
{
"servers": {
"kikobooks": {
"command": "npx",
"args": ["-y", "@agentkiko/kikobooks-mcp-server@latest"],
"env": {
"KIKOBOOKS_BASE_URL": "https://ai.kikobooks.com",
"KIKOBOOKS_API_KEY": "your_api_key_here"
}
}
}
}Claude Code
claude mcp add kikobooks \
-e KIKOBOOKS_BASE_URL=https://ai.kikobooks.com \
-e KIKOBOOKS_API_KEY=your_api_key_here \
-- npx -y @agentkiko/kikobooks-mcp-server@latestCursor / Windsurf
Add the same mcpServers block shown for Claude Desktop to ~/.cursor/mcp.json (Cursor) or
~/.codeium/windsurf/mcp_config.json (Windsurf).
Read-only mode
Write, update, and delete tools load by default. To give an assistant analysis-only access, add these
to the env block of any configuration above:
"KIKOBOOKS_DISABLE_WRITE": "true",
"KIKOBOOKS_DISABLE_UPDATE": "true",
"KIKOBOOKS_DISABLE_DELETE": "true"Only get_*, search_*, and list_* tools are registered in this mode.
Local Development
For local development, point to the built output:
{
"servers": {
"kikobooks": {
"command": "node",
"args": ["/absolute/path/to/mcp-kiko/dist/index.js"],
"env": {
"KIKOBOOKS_BASE_URL": "https://ai.kikobooks.com",
"KIKOBOOKS_API_KEY": "your_api_key_here"
}
}
}
}Available Tools (116 total)
Chart of Accounts
Tool | Description |
| Search accounts with filtering by category, type, and text |
| Get full account details by ID |
| Create a new GL account |
| Update an existing account |
Customers
Tool | Description |
| Search customers with text search and pagination |
| Get full customer details by ID |
| Create a new customer |
| Update an existing customer |
| Soft delete (deactivate) a customer |
Invoices
Tool | Description |
| Search invoices with status, customer, date, and overdue filters |
| Get full invoice details including line items and payments |
| Create a new invoice with line items |
| Update an existing invoice |
Items (Products/Services)
Tool | Description |
| Search products and services |
| Get item details including pricing |
| Create a new product or service |
| Update an existing item |
Vendors
Tool | Description |
| Search vendors with text search |
| Get full vendor details |
| Create a new vendor |
| Update an existing vendor |
| Soft delete (deactivate) a vendor |
Bills (Accounts Payable)
Tool | Description |
| Search bills with status, vendor, date, and overdue filters |
| Get full bill details including line items |
| Create a new bill |
| Update an existing bill |
| Void a posted bill (reverses accounting impact) |
Journal Entries
Tool | Description |
| Search entries with date, source, and posted filters |
| Get full entry with debit/credit lines |
| Create a manual journal entry (debits must equal credits) |
| Post a draft journal entry to the ledger |
| Reverse a posted journal entry |
Bill Payments (Accounts Payable)
Tool | Description |
| Search bill payments with vendor.and date filters |
| Get full bill payment details |
| Create a new bill payment |
| Void a bill payment (reverses accounting impact) |
Purchases / Expenses
Tool | Description |
| Search expense transactions with filters |
| Get full expense/purchase details |
| Create a new expense/purchase |
| Update an existing expense/purchase |
| Delete an expense/purchase |
Customer Payments (AR)
Tool | Description |
| Search AR payments with customer and date filters |
| Get full payment details |
| Record a customer payment |
Credit Memos (AR)
Tool | Description |
| Search credit memos with filters |
| Get full credit memo details |
| Create a new credit memo |
Sales Receipts
Tool | Description |
| Search sales receipts with filters |
| Get full sales receipt details |
| Create a new sales receipt |
CRM (requires the Sales module)
Tool | Description |
| Search CRM leads |
| Get a lead by ID |
| Create a new lead |
| Search CRM deals (pipeline opportunities) |
| Get a deal by ID |
| Create a new deal from a lead |
| Update an existing deal |
| Get the pipeline with stages and per-stage deal counts |
| Move a deal to another pipeline stage |
| Promote a deal's customer (gate before proposal/job) |
Proposals (requires the Sales module)
Tool | Description |
| Search proposals by customer, status, date |
| Get full proposal details |
| Duplicate a proposal into a new draft |
| Create a DRAFT invoice from a signed proposal (bridge) |
| Create a job with tasks from an accepted proposal (bridge) |
Workflow (requires the Workflow module)
Tool | Description |
| Search jobs (Projects for CB / Engagements for CA) |
| Get full job details |
| List the tasks for a job |
| Update a job's status |
| Update a task's status (e.g. mark complete) |
| Create a DRAFT invoice from a job's timesheets + expenses (bridge) |
Connection & Discovery
Tool | Description |
| Report connected / unauthenticated / disconnected — never returns secrets |
| List which modules (Sales, Workflow) the org has enabled |
Reports (read-only)
Tool | Description |
| Trial balance (debit/credit per GL account) as of a date |
| Monthly profit & loss (income statement) trend |
| AR aging brackets (current, 1-30, 31-60, 61-90, 90+) |
| AP aging brackets (current, 1-30, 31-60, 61-90, 90+) |
| Cash across GL + bank accounts as of a date |
| Expense breakdown by category |
| Income breakdown by category |
| Composite business-health indicators |
Banking & Reconciliation (read)
Tool | Description |
| Search bank accounts with paging and filters |
| Get a bank account by ID |
| Search imported bank transactions (append-only evidence) |
| Get a bank transaction by ID |
| Search reconciliation sessions |
| Reconciliation summary across accounts |
Deposits, Fixed Assets, Recurring, Statements (read)
Tool | Description |
| Bank deposits and allocated payments |
| Capitalized assets and depreciation settings |
| Recurring invoice schedules |
| Customer AR statements |
| Connected org profile and settings |
Deposits / Fixed Assets / Recurring / Statements / Reconciliation (write)
Mutating — require a read-write API key and are hidden when KIKOBOOKS_DISABLE_WRITE is set.
Tool | Description |
| Full deposit lifecycle (draft → post / void) |
| Fixed-asset register and disposal |
| Post depreciation for a fiscal year + period |
| Recurring schedule lifecycle |
| Customer statement delete and send |
| Bank reconciliation session lifecycle |
Not yet exposed (deferred):
create_recurring_schedule,create_statement, and per-transaction bank match/categorize — their request bodies are large nested templates that warrant dedicated design rather than a best-effort mapping.
Scope tiers
Read tools (get_*, search_*, list_*) always load. Mutating tools load by default and are grouped
into scope tiers that can be suppressed at startup (set the flag to true or 1):
Env flag | Suppresses |
|
|
|
|
|
|
Security
The API key is exchanged for short-lived JWTs. It is never written to disk, logged, or returned to the model.
Every call goes through the same permission-checked KikoBooks API your team uses, scoped to the key's organization.
Posted ledger entries cannot be edited or deleted through any tool; corrections are reversals or credit memos.
MCP clients ask you to confirm tool calls before they run. Review each write before you approve it.
Report vulnerabilities to info@accountant.world with the subject "Security vulnerability report".
Privacy and terms
This package sends no telemetry. It runs on your machine and talks only to the
KIKOBOOKS_BASE_URLyou configure.Nothing is written to disk unless you set
KIKOBOOKS_TOKEN_STORE_PATH; then only the short-lived session tokens are saved there (owner-only permissions on macOS and Linux), never the API key.Your MCP client and the AI model it uses (for example, Claude or GitHub Copilot) see the tool results you request. Their providers' terms and privacy policies govern that data.
Using KikoBooks through this server is covered by the KikoBooks Terms of Service and Privacy Policy. KikoBooks is offered to U.S. businesses only.
Authentication
The server supports two authentication methods:
API Key (Recommended)
Set KIKOBOOKS_API_KEY — the server automatically exchanges it for JWT tokens and handles refresh.
Direct Token
Set KIKOBOOKS_ACCESS_TOKEN (and optionally KIKOBOOKS_REFRESH_TOKEN) if you manage tokens externally.
Environment Variables
Variable | Required | Description |
| Yes | KikoBooks API base URL |
| Yes* | Org API key for authentication |
| Alt* | Direct JWT access token |
| No | JWT refresh token |
| No | Absolute path to persist the rotated JWT between runs (API key is never written) |
| No | Suppress create/post/action and bridge tools |
| No | Suppress update tools |
| No | Suppress delete/void tools |
* Either KIKOBOOKS_API_KEY or KIKOBOOKS_ACCESS_TOKEN is required.
Development
# Install dependencies
npm install
# Build
npm run build
# Watch mode
npm run watch
# Lint
npm run lintArchitecture
src/
├── index.ts # Entry point
├── config.ts # Env config (base URL, key, token-store path, scope flags)
├── clients/
│ ├── kikobooks-client.ts # HTTP client with JWT auth + auto-refresh (get/post/put/delete)
│ └── token-store.ts # Optional file-backed JWT cache (API key never persisted)
├── server/
│ └── kikobooks-mcp-server.ts # MCP server singleton
├── tools/ # Tool definitions grouped by verb, registered via tool-factory
│ ├── tool-factory.ts # Registers all tools + applies scope-tier gating
│ ├── search/ get/ create/ update/ delete/ action/
│ └── ... (116 tools)
├── handlers/ # Business logic (calls the API client)
├── helpers/ # register-tool, format-error, get-package-version
└── types/ # tool-definition, tool-responseRoadmap
See ROADMAP.md for the full implementation plan:
Phase 1 ✅ Core Bookkeeping (12 accounting entities)
Phase 2 ✅ Practice Management (CRM, Proposals, Workflow) + lifecycle bridges
Phase 3 ✅ Banking & Reconciliation
Phase 4 ✅ Reports & Analytics
License
MIT — see LICENSE
Links
Accountant Inc. — publisher of KikoBooks, Accountant.World, and Agent Kiko
Available Tools
116 toolsactivate_recurring_scheduleA
Activate a DRAFT recurring invoice schedule so it begins generating invoices on its cadence. Confirm with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Recurring schedule ID to activate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does disclose the state transition (DRAFT to active) and the side effect of starting invoice generation, plus a user-confirmation requirement. It omits reversibility (that pause/resume can undo it), error behavior when the schedule is not in DRAFT, and any permission requirements.
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 action and effect, then the safety caveat. Every clause earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter state-change tool with no output schema, the description covers precondition, effect, and the confirmation requirement. It falls just short by not covering failure modes or routing to the pause/resume 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?
Only one parameter (id) and schema description coverage is 100%, so the schema already documents it as 'Recurring schedule ID to activate'. The description adds no format or sourcing detail (e.g., where to obtain the ID via search_recurring_schedules), 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 (Activate) and resource (DRAFT recurring invoice schedule) and explains the resulting effect ('begins generating invoices on its cadence'). However, it never distinguishes itself from the near-twin sibling resume_recurring_schedule, leaving the DRAFT-vs-paused distinction to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The DRAFT precondition implies when this tool applies and 'Confirm with the user first' gives a workflow guardrail, but it never names pause_recurring_schedule or resume_recurring_schedule as alternatives or states when not to use it. Usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_reconciliationA
Cancel an in-progress reconciliation session (discards its clearing state). Confirm with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Bank_ReconSession_Id to cancel |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does disclose the key consequence: it discards the session's clearing state. It also adds a user-confirmation safeguard, which is meaningful for a destructive operation. It stops short of stating reversibility or required permissions.
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 clauses with zero filler; the destructive action is front-loaded and the safeguard follows immediately. Every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool with no annotations and no output schema, the description covers purpose, effect, and a confirmation requirement. It lacks permissions/reversibility notes and any pointer to the counterpart completion tool, so it is nearly complete but not fully rounded out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the sole id parameter is already documented as the Bank_ReconSession_Id to cancel. The description adds no format, range, or sourcing detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific verb (cancel) plus resource (in-progress reconciliation session) and the parenthetical clarifies the exact effect. It is readily distinguishable from the sibling start_reconciliation and complete_reconciliation tools without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"In-progress" implies the session state that qualifies for cancellation and "confirm with the user first" gives a pre-invocation check, but no alternative is named (e.g., complete_reconciliation when the session should be finalized) and no when-not guidance is offered. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
complete_reconciliationA
Complete/finish a reconciliation session. Fails if a difference remains unless forceComplete is set. Confirm with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Bank_ReconSession_Id to complete | |
| notes | No | Completion notes | |
| forceComplete | No | Complete even if a difference remains (use with care) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose a key failure mode (unresolved difference blocks completion) and a human-in-the-loop precondition. It does not state whether completion is reversible, what state the session locks into, or any auth requirements.
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, front-loaded sentences with zero filler; the core action leads and the conditional/confirmation caveats follow in order of importance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter mutation tool with no output schema and no annotations, the description covers the essential call path, the failure condition, and the confirmation requirement. It could say more about post-completion state or irreversibility, but the agent has enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so id, notes, and forceComplete are already documented with descriptions. The description reinforces the forceComplete intent ('unless forceComplete is set') but adds no syntax or format meaning beyond the schema's own 'use with care' note; 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 ('Complete/finish a reconciliation session'), which unambiguously identifies the target entity. It is distinguishable in intent from siblings like start_reconciliation and cancel_reconciliation, though it never names them 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?
Gives real conditional guidance: it fails when a difference remains unless forceComplete is set, and instructs confirming with the user first. It stops short of naming cancel_reconciliation or other session-management alternatives as the when-not path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
copy_proposalA
Duplicate an existing proposal into a new draft. Requires the Sales module and the write scope. Confirm with the user before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| proposal_id | Yes | The proposal ID to duplicate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does well: it signals a write operation via the scope requirement, names a dependency (Sales module), and adds a user-confirmation safety step. It doesn't say whether the source proposal is left untouched or how failures surface, so it isn't exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with zero filler, ordered as purpose, then prerequisites, then the safety directive. Each sentence earns its place and the key action is 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 one-parameter mutation with no output schema, the description covers purpose, module/scope prerequisites, and the confirmation step. It omits what the resulting draft inherits from the source (fields, status, line items), which would round it out, but return values need not be explained given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single proposal_id parameter, so the schema already explains it fully. The description adds no format, sourcing, or constraint detail beyond the schema, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (duplicate) and resource (proposal) plus the outcome (a new draft), which cleanly separates it from read siblings like get_proposal/search_proposals and from actions like generate_invoice_from_proposal or create_job_from_proposal. An agent can select it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real operational preconditions ('Requires the Sales module and the write scope') and a workflow instruction ('Confirm with the user before calling'), which is exactly the kind of context an agent needs before a mutation. It stops short of stating when to prefer this over alternatives, so no exclusion criteria are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_accountB
Create a new account in the KikoBooks chart of accounts. Requires account number, name, category (ASSET/LIABILITY/EQUITY/INCOME/EXPENSE), and type code.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses nearly nothing: no auth/permission requirements, no uniqueness or duplicate-handling behavior, no indication of what happens to opening balances or parent accounts, and no note that this is a non-read-only mutation. 'Create' implies a write, but the safety and failure profile is entirely absent.
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 tight sentences with zero waste; the purpose is front-loaded and the requirement list follows immediately. Nothing needs trimming.
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 mutation tool with no annotations and no output schema, the description covers the required inputs but omits the return shape, permission needs, and duplicate/error behavior. It is minimally viable rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single top-level parameter is a nested object with no schema-level description (coverage reported as 0%), so the description's enumeration of required fields — account number, name, category, and type code — is genuinely useful routing information. It also names the category enum values, though those are redundantly present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a new account in the KikoBooks chart of accounts'), which clearly separates it from update_account, get_account, and search_accounts. It does not explicitly name a sibling, but the create-verb plus chart-of-accounts scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus search_accounts/get_account/update_account, or what to do if an account with the same number already exists. The create intent is only implied by the verb; there are no conditions, prerequisites, or exclusions stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_billC
Create a new bill (accounts payable) in KikoBooks. Requires vendor ID, dates, and line items.
| Name | Required | Description | Default |
|---|---|---|---|
| bill | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the entire behavioral burden, yet it only says a bill is created. It does not disclose side effects (AP aging, journal entries), whether billNumber is auto-generated when omitted, permission requirements, or whether the operation is reversible.
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 tight sentences with the core action front-loaded and zero filler. It is efficient, though the brevity is partly under-specification rather than disciplined 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?
For a mutation tool with a nested object payload, no annotations, and no output schema, the description is too thin. An agent gets no information about the effects of creating a bill, required permissions, or how the nested bill object maps to outcomes.
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 0% at the top level, so the description must compensate, and it does so only partially by naming vendor ID, dates, and line items. The nested schema itself does describe individual fields (memo, dueDate, lineItems, accountId, taxCode), so the description adds a useful required-field summary but no format or meaning beyond it.
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 ("Create a new bill (accounts payable)") scoped to KikoBooks, which lets an agent distinguish it from siblings like update_bill, get_bill, and create_bill_payment. It stops short of explicitly contrasting those siblings, so it is clear but not fully differentiating.
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 (permissions, vendor must exist), and no routing advice versus the many sibling creation tools (create_bill_payment, create_purchase, create_invoice). Naming required fields is a light prerequisite hint at best.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_bill_paymentB
Create a bill payment (AP) in KikoBooks. Requires vendor ID, payment date, source account, and amount. Optionally apply to specific bills.
| Name | Required | Description | Default |
|---|---|---|---|
| payment | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden but says almost nothing beyond 'this creates a payment'. There is no mention of GL posting behavior, the AutoPost default of true that the schema hints at, required permissions, reversibility, or how a created payment is later voided. For a financial write operation this is a substantial disclosure gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the required-field contract front-loaded before the optional application behavior. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a nested, multi-field AP mutation with no annotations and no output schema, yet the description covers only the required quartet plus applications. Defaults, posting semantics, and the remaining optional fields are left entirely to the schema, which is thin on meaning here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Top-level schema description coverage is 0% (the single 'payment' wrapper object is undocumented), so the description must compensate. It does map the four required fields to plain-English concepts and flags the Applications array as optional, but it says nothing about PaymentMethod, CurrencyCode defaults, CheckNumber, or the Memo/Notes fields.
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 ('Create a bill payment (AP) in KikoBooks'), and the '(AP)' qualifier nudges it apart from the generic create_payment sibling. It stops short of explicitly naming create_payment or create_bill as the alternatives, so an agent must infer the boundary itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives prerequisites ('Requires vendor ID, payment date, source account, and amount') and an optional flow ('apply to specific bills'), which implies when the tool is applicable. It never states when NOT to use it, nor routes to create_payment, create_bill, or void_bill_payment, so usage guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_credit_memoB
Create a credit memo (AR) in KikoBooks. Requires customer ID, date, reason code, and at least one line item. Can be linked to a specific invoice.
| Name | Required | Description | Default |
|---|---|---|---|
| creditMemo | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only restates the schema's required fields and the optional invoice link; it does not say whether the memo is posted to AR/GL, whether it requires specific permissions, whether the operation is reversible, or what defaults apply to currency and accounts.
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, front-loaded sentences with no filler; purpose comes first, then requirements, then the optional linkage. The requirements sentence partly duplicates the schema's required array, which is the only mild redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with a deeply nested payload (~15 line/header fields), no annotations, and no output schema, the description is too thin. It omits whether a result ID is returned, posting/approval behavior, error conditions on invalid customer or reason codes, and guidance on the optional header fields.
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?
Top-level schema coverage is 0% and the single 'creditMemo' object is undocumented in the schema, so the description must compensate. It names the required members (customer, date, reason code) and adds the real constraint that at least one line item is needed (not encoded as minItems in the schema), but it says nothing about the many optional fields (CurrencyCode default, GL overrides, customer/internal messages) or the nested line-item shape.
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 ('Create a credit memo (AR) in KikoBooks'), which cleanly separates it from the read-side siblings search_credit_memos and get_credit_memo. The AR qualifier pins the domain unambiguously.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The closing line 'Can be linked to a specific invoice' implies one usage context, but there is no explicit when-to-use vs alternatives (e.g. void_bill, create_payment/refund) and no prerequisites or exclusions. Usage is only inferable from the note about invoice linking.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_customerC
Create a new customer in KikoBooks. Requires at minimum a display name. Optionally include contact details, billing address, and payment terms.
| Name | Required | Description | Default |
|---|---|---|---|
| customer | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description must carry the full behavioral burden. It says that a new customer is created and that displayName is the minimum requirement, but it omits duplicate handling, authentication needs, validation behavior, side effects, and response characteristics.
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 compact sentences, front-loads the action and required field, and contains no filler. Every sentence contributes directly to understanding the operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with a nested object, no annotations, and no output schema, the description is too thin. It covers the minimum viable call but leaves important behavioral, field-level, and integration context 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 schema exposes many nested customer fields, but the description adds useful high-level grouping: required display name, optional contact details, billing address, and payment terms. It does not map every optional field or specify formats, so it partially compensates for limited schema-level guidance.
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: 'Create a new customer in KikoBooks.' It is clear and actionable, though it does not explicitly differentiate from siblings such as update_customer, delete_customer, or promote_deal_to_customer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when creating a new customer and gives the minimum required field, but it does not say when to choose this over update_customer, promote_deal_to_customer, or other creation alternatives. No exclusions or broader workflow context are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_dealA
Create a new CRM deal (sales opportunity) from a lead. Requires leadId, pipelineStageId, and dealName; optionally include value, currency, status, expected close date, probability, and tags. Requires the Sales module and the write scope. Confirm with the user before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| deal | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden; it does disclose the module/scope prerequisite and a confirmation requirement, both of which are real behavioral context beyond the schema. It is silent on side effects (e.g., whether the originating lead is marked converted) and on what is returned, which leaves some gaps for a write tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four front-loaded sentences with no padding: purpose, then required/optional fields, then prerequisites, then the confirmation rule. It is list-heavy in the middle but every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a nested-object schema, no output schema and no annotations, the description covers purpose, prerequisites, and field expectations adequately for a create tool. The remaining gap is the absence of any statement about the result or side effects of creation, which an agent would otherwise have 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?
The schema's nested properties each carry their own descriptions, and the description reinforces this by naming the three required fields and most optional ones (value, currency, status, close date, probability, tags). It omits a few optional fields (customerId, proposalId, notes), but those remain documented in the schema, so no meaning is lost.
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 opens with a specific verb+resource ("Create a new CRM deal") and immediately disambiguates the domain with "(sales opportunity) from a lead," which distinguishes it from create_lead and from update_deal/move_deal_stage. An agent can classify it correctly without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states concrete preconditions (Sales module enabled, write scope) and an explicit behavioral instruction ("Confirm with the user before calling"), which is usable guidance. It doesn't route the agent to any alternative (e.g., update_deal for modifying an existing deal), so it stops short of the when-not/alternatives bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_depositA
Create a bank deposit from undeposited payments/receipts (DR Bank, CR Undeposited Funds on posting). Created as a DRAFT; use post_deposit to post it. Preview and confirm with the user before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| lines | Yes | Deposit lines (the payments/receipts being deposited) | |
| depositDate | Yes | Deposit date (YYYY-MM-DD) | |
| cashBackMemo | No | Cash-back memo | |
| currencyCode | No | ISO currency code | |
| cashBackAmount | No | Cash-back amount withheld | |
| bank_Account_Id | Yes | Destination Bank_Account_Id | |
| cashBackAccount_Id | No | GL account id for cash back | |
| depositDescription | No | Deposit description | |
| depositToGL_Account_Id | Yes | Destination GL cash account id | |
| bank_TransactionNormalized_Id | No | Linked normalized bank transaction id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that the record is created as a DRAFT, that posting has a specific ledger effect (DR Bank, CR Undeposited Funds), and that posting is a separate step. It stops short of stating permission/auth requirements or how to undo a created draft (delete_deposit exists as a sibling).
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 action and condensed further into the accounting effect, then the lifecycle constraint, then the interaction rule. No filler and no restatement of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter, 4-required mutation tool with no annotations and no output schema, the description covers the essential lifecycle (draft vs posted), the ledger impact, and the human-confirmation requirement. The one gap is the return value: an agent needs the new deposit's id to call post_deposit, and that is not stated.
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 10 params documented in the schema itself, so the baseline is 3. The description only adds the notion that the lines are undeposited payments/receipts, which the schema's 'Deposit lines' text largely already conveys; it adds no format, currency, or cash-back guidance 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+resource (Create a bank deposit) and pins down what it is made from: undeposited payments/receipts. It also names the accounting effect and the sibling that continues the lifecycle (post_deposit), so an agent can separate it from create_payment, update_deposit, and post_deposit without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent forward ('use post_deposit to post it') and imposes a workflow precondition ('Preview and confirm with the user before calling'). It does not, however, say when a deposit is the right construct versus creating individual payments/receipts, so one piece of alternative-selection guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_fixed_assetB
Register a new fixed asset, optionally with depreciation settings (method, useful life, salvage, GL accounts). Preview and confirm with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| location | No | Location | |
| poNumber | No | Purchase order number | |
| assetName | Yes | Asset name | |
| department | No | Department | |
| description | No | Description | |
| modelNumber | No | Model number | |
| categoryCode | No | Asset category code | |
| manufacturer | No | Manufacturer | |
| salvageValue | No | Salvage/residual value | |
| serialNumber | No | Serial number | |
| assetAccountId | No | GL asset account id | |
| acquisitionCost | Yes | Acquisition cost | |
| acquisitionDate | Yes | Acquisition date (YYYY-MM-DD) | |
| assignedToUserId | No | Assigned user id | |
| usefulLifeMonths | No | Useful life in months | |
| acquisitionMethod | No | Acquisition method | |
| vendorCustomerIdStr | No | Vendor/customer reference | |
| depreciationStartDate | No | Depreciation start date (YYYY-MM-DD) | |
| depreciationMethodCode | No | Depreciation method code (e.g. StraightLine) | |
| accumDepreciationAccountId | No | GL accumulated-depreciation account id | |
| depreciationExpenseAccountId | No | GL depreciation-expense account id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses a confirmation-before-commit requirement, but says nothing about permissions, reversibility, side effects on the ledger, or what happens to the optional depreciation settings. Real but partial 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?
Two tight sentences that front-load the core action before the optional-depreciation qualifier. The parenthetical earns its place by enumerating the depreciation sub-fields; 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 21-parameter mutation with no annotations and no output schema, the description is thin. The confirmation instruction helps, but the create operation's effects and safety profile are largely undocumented, leaving an agent to infer them from 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 description coverage is 100%, so all 21 parameters are already documented in the schema. The description groups the depreciation-related params (method, useful life, salvage, GL accounts) but adds no syntax, format, or constraint detail beyond what the schema provides. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Register) and resource (new fixed asset), plus names the optional depreciation settings it accepts. The word 'new' implicitly separates it from update_fixed_asset and dispose_fixed_asset, though those siblings are never 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?
The 'optionally with depreciation settings' phrasing implies the depreciation params are elective, and 'Preview and confirm with the user first' gives a workflow step. However, there is no explicit when-to-use vs. update_fixed_asset/dispose_fixed_asset guidance and no stated prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_invoiceC
Create a new invoice in KikoBooks. Requires customer ID, dates, and at least one line item with description, quantity, and unit price.
| Name | Required | Description | Default |
|---|---|---|---|
| invoice | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a create/mutation but says nothing about permissions, whether the draft is posted or final, idempotency, or what happens to unsupplied defaults — all relevant for a finance write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both front-loaded and free of filler: the action first, then the required inputs. Efficient and 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 mutation tool with nested objects, no annotations, and no output schema, the description is thin — it covers required inputs but leaves behavior, side effects, and handling of the nested lineItems/optional fields 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?
Top-level schema description coverage is 0%, so the description must compensate, and it does name the required inputs (customer ID, dates, and line item description/quantity/unit price). However, it omits the many optional fields (memo, termsCode, currencyCode, billing address) that an agent may need to set.
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 ('Create a new invoice in KikoBooks'), clearly distinguishing it from search/get/update invoice siblings and from create_bill or create_credit_memo. It does not, however, differentiate itself from generate_invoice_from_proposal or generate_invoice_from_job, which are the closest conceptual 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 lists required inputs but gives no guidance on when to use this tool versus generate_invoice_from_proposal, generate_invoice_from_job, or generate_recurring_invoice. No prerequisites, ordering, or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_itemB
Create a new product/service item in KikoBooks. Requires a name. Optionally include pricing, type, and account mappings.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It only restates the required/optional field shape and says nothing about permissions, duplicate handling, side effects, or what is returned for this write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the required field stated up front and no wasted wording. Well front-loaded and appropriately sized for a simple create 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 mutation tool with no annotations and no output schema, the description covers shape but not behavior. The nested schema documents individual sub-fields, which partially compensates, but an agent still lacks guidance on type enum meaning, account ID semantics, and post-create 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?
The description groups the optional fields into meaningful categories ('pricing, type, and account mappings'), which maps onto costPrice/unitPrice, the type enum, and incomeAccountId/expenseAccountId. This adds some interpretive value, but the reported schema coverage is 0% at the top level and the description omits the enum values and field-level distinctions.
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 ('Create a new product/service item in KikoBooks'), which cleanly separates it from search_items/get_item/update_item siblings. It does not explicitly name an alternative, but the creation intent is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by naming the required and optional fields, but gives no when-to-use vs. alternatives guidance (e.g., when to create vs. update_item) or any preconditions. Adequate minimum but with a clear gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_job_from_proposalA
Create a job (with tasks) from an accepted proposal's line items — the Proposal → Workflow bridge. Requires proposal_id and job_name. Requires the Sales and Workflow modules and the write scope. Confirm the proposal and job name with the user before calling, then verify with search_jobs.
| Name | Required | Description | Default |
|---|---|---|---|
| archive | No | Archive the proposal after conversion | |
| job_name | Yes | Name for the new job (required) | |
| option_id | No | Which proposal pricing option to use (default: first) | |
| proposal_id | Yes | The accepted proposal ID to convert into a job | |
| default_task_due_days | No | Default task due date, days from creation (default: 30) | |
| create_tasks_from_lines | No | Create tasks from proposal lines (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose real behavioral context: it requires the Sales and Workflow modules plus the write scope, and it mandates user confirmation before execution and verification afterward. It stops short of describing reversibility or what happens to the source proposal (the archive side-effect lives only 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?
Three tight sentences, front-loaded with the action, the bridge framing, the hard requirements, and the operational steps. No filler and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-output-schema mutation tool, it covers prerequisites, the required modules/scope, the confirmation step, and the verification path. Only reversibility and the archive behavior are left unstated, which are minor gaps given the schema covers the parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters including the two required ones. The description only reinforces that proposal_id and job_name are required and should be user-confirmed, adding little beyond the schema's own text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Create) and resource (a job with tasks) and the source (an accepted proposal's line items), then labels itself the 'Proposal → Workflow bridge,' which cleanly separates it from sibling generators like generate_invoice_from_proposal and copy_proposal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context: the source proposal must already be accepted, and it prescribes a confirm-before-calling and verify-with-search_jobs workflow. It does not explicitly contrast the tool against the nearby generate_invoice_from_proposal / copy_proposal alternatives, so it falls just short of explicit alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_journal_entryA
Create a manual journal entry in KikoBooks. Requires entry date and debit/credit lines that balance. Once posted, entries are immutable — corrections require reversal entries.
| Name | Required | Description | Default |
|---|---|---|---|
| journalEntry | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does add real behavioral context: the debit/credit balance invariant and irreversible immutability after posting. However, the key question the immutability claim raises — does create_journal_entry itself post the entry, or is posting a separate step via post_journal_entry? — is left unanswered, and nothing is said about permission requirements or what is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the action, then requirements, then the behavioral warning. Every sentence carries weight; only the brand mention 'in KikoBooks' is mildly expendable.
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 mutation tool with a nested object, no annotations, and no output schema, the description covers the balance requirement and post-creation immutability but omits whether the result is a draft or posted entry, what identifier is returned, and how imbalance errors surface. It is adequate but leaves the agent guessing on the create/post lifecycle.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one top-level parameter, and the description reinforces the required fields (entry date, lines) and the balancing constraint. The nested schema already documents accountId, debitAmount/creditAmount exclusivity, and the debit-equals-credit rule, so the description adds modest but non-zero meaning. With a single param and adequate nested schema documentation, this is near the baseline-plus range.
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 ('Create a manual journal entry in KikoBooks'), and the immutability note implicitly separates this tool from the sibling post_journal_entry and reverse_journal_entry. It does not name those siblings directly, so an agent still has to infer the create-vs-post boundary rather than being told it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'manual' entry plus the note that corrections require reversal entries suggests when to reach for this tool versus post_journal_entry or reverse_journal_entry. It never states the condition that selects this tool over its siblings, nor whether the entry is created as a draft to be posted later.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_leadA
Create a new CRM lead. Requires first and last name; optionally include company, contact details, status, score, source, and tags. Requires the Sales module and the write scope. Preview the details and confirm with the user before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| lead | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses auth requirements (Sales module, write scope) and a confirm-before-write workflow, which goes beyond the schema. It says nothing about duplicate detection, validation failures, or what is returned after creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, zero filler, front-loaded with the action and required fields before prerequisites and the confirmation instruction. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers fields, permissions, and a safety workflow but omits what the call returns (e.g., the created lead ID) and any duplicate-handling behavior. Adequate but with clear gaps for an agent wiring the result into a follow-up step.
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?
Top-level coverage is 0% (the single 'lead' object is undescribed), but the description compensates by naming the required fields (first/last name) and grouping the optional ones (company, contact details, status, score, source, tags) in a way that maps onto companyName, email/phone, leadStatus, leadScore, leadSourceId, and tagIds. The nested schema also documents each field individually, so the agent has both layers.
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 ('Create a new CRM lead') and immediately enumerates the required and optional field groups. The resource name distinguishes it cleanly from create_deal and create_customer in the sibling list without the agent needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete preconditions ('Requires the Sales module and the write scope') and a procedural directive ('Preview the details and confirm with the user before calling'). It does not, however, state when to prefer this over create_deal or how to handle a lead that may already exist (search_leads), so routing guidance is incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_paymentB
Create a customer payment (AR) in KikoBooks. Requires customer ID, date, method, and amount. Optionally allocate to specific invoices.
| Name | Required | Description | Default |
|---|---|---|---|
| payment | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full behavioral burden. It says 'Create' (a mutation) and mentions optional allocation, but omits auth/permission needs, whether the payment is created as draft or posted, how AutoPost or allocations behave, and whether it can be reversed/voided. Significant gaps for a financial write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the required-input contract front-loaded ahead of the optional allocation detail. No filler, though it is quite terse for a multi-field object payload.
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 nested, annotation-free mutation tool with no output schema, the description covers the core intent and required fields but leaves behavioral questions open (posting state, allocation rules, error/reversal behavior). Adequate but with clear gaps.
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 restates the schema's own required fields (customer ID, date, method, amount) and the allocation option, adding little beyond the structured schema. The nested properties in the schema are individually documented, so the baseline of 3 applies; the description does not explain constraints like whether allocations must sum to the amount.
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?
Clear specific verb+resource: 'Create a customer payment (AR)' in a named system. The '(AR)' qualifier plus 'customer payment' implicitly distinguishes it from siblings like create_bill_payment (AP) and create_deposit, 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?
States the required inputs and the optional allocation use case, which implies when to use it, but gives no explicit when-not or alternative routing (e.g., vs create_deposit, create_sales_receipt, or create_bill_payment). Usage context is inferable but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_purchaseC
Create a purchase (expense) in KikoBooks. Requires expense date and line items with amounts and expense accounts.
| Name | Required | Description | Default |
|---|---|---|---|
| purchase | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full behavioral burden for a mutation tool and largely fails to: it does not say whether the purchase is created as draft or posted, what the accounting side effects are, what happens if accountId or paymentAccountId are omitted, or whether vendorId is required in practice. The only added context is the purchase/expense equivalence, which is thin for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core verb/resource front-loaded and no filler. It is efficiently written; the issue is underspecification rather than 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 nested-object mutation tool with no annotations and no output schema, the description should explain permissions, draft/posted behavior, and the account-field semantics. None of that is present, leaving an agent with only the schema to infer how to build a valid, correctly-categorized purchase.
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 reported at 0%, so the description is expected to compensate, but it only restates that line items need amounts and 'expense accounts'. It never clarifies the critical distinction between lineItems.accountId (expense GL account) and purchase.paymentAccountId (bank/cash account), nor the role of vendorId, taxCode, or referenceNumber.
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 ('Create a purchase') and disambiguates the domain term with the parenthetical '(expense)'. It does not differentiate itself from adjacent write siblings like create_bill or create_invoice, but the purpose itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence lists required inputs ('expense date and line items'), which is a prerequisite rather than usage guidance, and that fact is already in the schema. There is no statement of when to create a purchase versus a bill or credit memo, nor any precondition such as a required vendor or connection state.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_sales_receiptB
Create a sales receipt in KikoBooks. Sales receipts record instant payment+sale in one step (no separate invoice needed). Requires date and at least one line item.
| Name | Required | Description | Default |
|---|---|---|---|
| salesReceipt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full disclosure burden. 'Requires date and at least one line item' merely restates schema requiredness; it says nothing about GL/deposit-account side effects, permission needs, reversibility (no void/delete sibling for sales receipts), idempotency, or the response. For a posting mutation tool this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, then the conceptual distinction, then the requirement. No filler, though the requirements sentence duplicates information the schema already mandates.
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 nested-object mutation tool with no annotations and no output schema, the description omits side effects, required permissions, failure modes, and what the call returns. What an agent needs to call this safely and correctly is largely absent.
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?
Top-level schema description coverage is 0% and the description compensates only by restating the required fields (ReceiptDate, Lines) that the schema already enforces. It adds no format hints, defaults, or meaning for the many optional nested fields such as DepositToAccount_Id, PaymentMethodCode, or Customer_Id's walk-in 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?
States a specific verb and resource (create a sales receipt) and goes further by defining what a sales receipt represents in accounting terms — an instant payment+sale with no separate invoice. That definition implicitly separates it from create_invoice without naming the sibling explicitly, so it stops 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?
The parenthetical 'no separate invoice needed' is effectively a use-this-instead-of-an-invoice rule and gives an agent a clear condition for choosing this tool over create_invoice. It stops short of 5 because no alternative is named outright and no when-not-to-use case (e.g. credit sales) is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_vendorC
Create a new vendor in KikoBooks. Requires display name. Optionally include contact details, address, and 1099 eligibility.
| Name | Required | Description | Default |
|---|---|---|---|
| vendor | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it only implies a mutation via "Create." It says nothing about permissions/auth needs, duplicate-name behavior, idempotency, or what the call returns on success or failure.
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 tight sentences with the required field stated up front and optional fields summarized after; no filler. The grouping of optional fields is slightly lossy 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 nested 15-field create tool with no annotations and no output schema, the description covers the essentials (required name, some optional groups) but leaves several fields unexplained and gives no post-call expectations (created vendor ID, validation failures). Adequate but with clear gaps.
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 reported at 0% and the single top-level parameter is an undescribed nested object, so the description must compensate. It usefully names the required displayName and groups the optional fields (contact, address, 1099 eligibility), but omits currencyCode, paymentTermsCode, and the givenName/familyName/companyName fields 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?
"Create a new vendor in KikoBooks" gives a specific verb and resource, and the create/update/delete vendor sibling set is trivially distinguished by the verb. It does not, however, differentiate itself from any other create_* tool beyond the resource name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states what is required versus optional but never says when to reach for create_vendor versus search_vendors, get_vendor, or update_vendor. No prerequisites or exclusions (e.g., duplicate handling, when to update instead) are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_customerB
Delete (deactivate) a customer in KikoBooks. This performs a soft delete by setting the customer as inactive.
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | The Customer ID to delete (soft delete — sets inactive) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does add genuine behavioral value by disclosing that this is a soft delete that sets the customer inactive rather than removing the record. However, it omits permission requirements, whether the customer can be reactivated, and whether it still appears in search_customers 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?
Two short sentences, zero waste, with the core action and its soft-delete semantics front-loaded. Nothing is padded or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description covers the essential semantics (soft delete/deactivate). The main gap is the absence of any recoverability or permission context, which would be useful given no annotations exist.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is documented in the schema itself, including the soft-delete note. The description adds nothing beyond what the schema already states, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Delete) and resource (customer in KikoBooks) and even clarifies the semantic meaning of the verb with '(deactivate)'. It does not need to differentiate from siblings since the resource is unique among the delete_* tools, though it could note how it differs from update_customer.
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 update_customer to set a customer inactive, nor any prerequisites or warnings. The agent must infer the usage context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_depositA
Soft-delete a DRAFT deposit. Posted deposits must be voided, not deleted. Confirm with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Deposit ID to delete (DRAFT only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the soft-delete (recoverable) semantics, the DRAFT-only precondition, the failure mode for posted deposits, and a user-confirmation requirement. It omits permission requirements and what happens to records linked to the deposit.
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, each carrying a distinct piece of information: action, alternative, and the confirmation requirement. Front-loaded with the core action and no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool with no annotations or output schema, the description covers the essential risks: scope limit, alternative path, and user confirmation. Only permission/error behavior is left unstated, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter at 100% schema coverage; the schema already says 'Deposit ID to delete (DRAFT only)'. The description's DRAFT restriction is identical to what the schema states, so it adds no format, type, or lookup detail beyond structured data.
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 ('Soft-delete a DRAFT deposit') plus the state restriction that defines it. It is immediately distinguishable from the sibling void_deposit, which the description explicitly routes posted deposits to.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear when-to-use (DRAFT deposits) and when-not (posted deposits must be voided instead), which maps onto the sibling void_deposit. It stops just short of naming that tool explicitly, so the routing requires a small inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_purchaseC
Delete a purchase (expense) in KikoBooks.
| Name | Required | Description | Default |
|---|---|---|---|
| purchase_id | Yes | The Purchase/Expense ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says only that a record is deleted, with no disclosure of irreversibility, required permissions, cascading effects on linked records, or error behavior for a nonexistent ID. For a destructive mutation with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no filler, and the verb and resource are front-loaded. It is efficient, though arguably under-specified rather than maximally concise.
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 destructive mutation with no annotations, no output schema, and no confirmation/permission detail, the description is too thin to let an agent call it safely. It leaves irreversibility and side effects entirely undocumented.
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 purchase_id parameter is documented as 'The Purchase/Expense ID to delete.' The description adds nothing beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Delete a purchase') and clarifies the domain term as an expense, which helps disambiguate from invoices/bills. It does not explicitly differentiate from sibling mutators like void_bill, but the operation and target are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to delete versus void or reverse, no preconditions, and no mention of related tools such as get_purchase for verifying the record first. The agent must 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.
delete_recurring_scheduleA
Soft-delete a DRAFT recurring invoice schedule. Confirm with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Recurring schedule ID to delete (DRAFT only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does meaningful work: 'soft-delete' signals the record is not permanently destroyed, and 'DRAFT' states an eligibility restriction that would otherwise be invisible. It still omits what happens to the schedule's status/records and what errors occur for non-draft schedules, so it is good 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?
Two short sentences with zero filler; the core action and its scope are front-loaded and the confirmation requirement 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 single-parameter deletion tool with no annotations and no output schema, the description covers the essential facts: what is deleted, that it is soft, and that it is restricted to DRAFT with user confirmation. It could still note the sibling alternative (pause) and post-delete state, which is why it is not a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'id' parameter and even mirrors the description's DRAFT-only constraint. The description adds no syntax, ID-format, or lookup guidance beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Soft-delete a ... recurring invoice schedule') plus a qualifying scope ('DRAFT'). The verb 'soft-delete' is precise and distinct from a hard delete, but the description never differentiates this from close siblings such as pause_recurring_schedule, resume_recurring_schedule, or activate_recurring_schedule, which an agent must choose between.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one explicit operational rule, 'Confirm with the user first,' and an eligibility condition (DRAFT only). However, it offers no comparison against the alternative actions in the sibling set (pause vs. delete vs. deactivate), so the agent gets an implied context rather than real 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.
delete_statementA
Soft-delete a DRAFT customer statement. Confirm with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Statement ID to delete (DRAFT only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses that the delete is soft (recoverable rather than destructive) and that is restricted to DRAFT statements, which is meaningful behavioral context. It still omits permissions required, post-delete state, and the 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?
Two short sentences with zero waste: the operation and its precondition come first, then the confirmation requirement. Nothing extraneous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, no-output-schema tool, the definition covers the operation, its scope restriction, and the user-confirmation step. The remaining gaps (post-delete recoverability path, error conditions for non-DRAFT ids) 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?
Only one parameter, and schema description coverage is 100% – the schema already documents the id and its DRAFT-only constraint. The description restates that constraint rather than adding format or validation detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('soft-delete') and resource ('DRAFT customer statement'), with the scope constraint (DRAFT only) front-loaded. It distinguishes itself from hard-delete siblings by naming the soft-delete behavior, though it does not explicitly compare against void-style siblings such as void_bill.
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?
'Confirm with the user first' gives one actionable precondition, and the DRAFT-only framing implies when the tool is valid. However, no alternatives are named (e.g., what to do for a posted/reconciled statement), so the agent must infer the escape path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_vendorB
Delete (deactivate) a vendor in KikoBooks. This performs a soft delete by setting the vendor as inactive.
| Name | Required | Description | Default |
|---|---|---|---|
| vendor_id | Yes | The Vendor ID to delete (soft delete — sets inactive) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that this is a soft delete setting the vendor inactive, which materially changes an agent's risk assessment. However, it says nothing about permissions, whether the change is reversible, or the effect on the vendor's existing bills/payments.
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 waste; the soft-delete behavior is front-loaded alongside the action. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, no-annotation, no-output-schema tool, the description covers the essential surprise (delete is actually deactivate). It is nearly complete, missing only the reversibility/auth details an agent might want before mutating 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% and the single parameter's schema description already contains the same soft-delete note. The description adds no syntax, format, or lookup guidance beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Delete (deactivate) a vendor in KikoBooks') and clarifies the mode of deletion. An agent can tell what the tool targets, though it does not explicitly distinguish itself from siblings like update_vendor or void_bill.
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, prerequisites, or alternatives are given. It does not say how this differs from update_vendor (which could also set inactive) or when to prefer deactivation over other removal paths.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dispose_fixed_assetA
Dispose a fixed asset (sale/scrap/donation) — creates a disposal record and updates asset status, recognizing any gain/loss. Confirm with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | GL_FixedAsset_Id to dispose | |
| buyerName | No | Buyer name | |
| buyerContact | No | Buyer contact | |
| disposalDate | Yes | Disposal date (YYYY-MM-DD) | |
| disposalType | Yes | Disposal type (e.g. Sale, Scrap, Donation) | |
| disposalCosts | No | Costs incurred to dispose | |
| invoiceNumber | No | Sale invoice number | |
| disposalReason | No | Reason for disposal | |
| disposalProceeds | Yes | Proceeds received on disposal |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the side effects: it creates a disposal record, updates asset status, and recognizes gain/loss. However, it omits irreversibility, required permissions, and whether the operation can be undone, which matters for a destructive financial 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?
A single tight sentence with the action front-loaded and the confirmation requirement last; every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Purpose, side effects, and the confirmation gate are covered, but for a 9-parameter financial mutation with no annotations and no output schema, the description says nothing about gain/loss calculation inputs, error/permission conditions, or the result shape. Adequate but with clear gaps.
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 9 parameters are already documented in the schema. The description only echoes the disposal types already captured by disposalType; it adds no syntax, format, or defaults 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 (dispose) and resource (fixed asset) with the disposal modes enumerated. It is clearly distinguishable from the other fixed-asset siblings (search_fixed_assets, get_fixed_asset, create_fixed_asset, update_fixed_asset, run_depreciation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear usage directive ('Confirm with the user first') that tells the agent this is a consequential action needing user consent. It also scopes the disposal modes (sale/scrap/donation), but names no alternative tool or explicit when-not condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_invoice_from_jobA
Generate a DRAFT AR invoice from a job's approved timesheets and billable expenses — the Job → invoice bridge. Creates a draft invoice (does not post to GL). Requires the Workflow module and the write scope. Confirm the job and date with the user before calling, then verify the created invoice with get_invoice.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | The job ID to invoice | |
| due_date | No | Due date (YYYY-MM-DD) | |
| customer_id | No | Override customer ID for the invoice | |
| invoice_date | Yes | Invoice date (YYYY-MM-DD) — required | |
| gl_ar_account_id | No | AR GL account ID for the invoice header | |
| include_expenses | No | Include billable expenses (default: true) | |
| include_timesheets | No | Include approved timesheet lines (default: true) | |
| revenue_gl_account_id | No | Default revenue GL account ID for lines |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does well: it discloses that the result is a DRAFT, that nothing is posted to GL, that Workflow module and write scope are required, where the line data comes from, and that the result should be checked with get_invoice. It lacks failure/error or idempotency behavior, but the state-change and authorization profile is unusually well covered.
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 paragraph that front-loads the core action and scope, then layers prerequisites and a follow-up step in short clauses. Every sentence carries distinct information (draft status, no GL post, module/scope, confirmation, verification); nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation tool with no output schema and no annotations, this description covers the essential gaps: what is created (draft), what is not done (no GL post), prerequisites (Workflow module, write scope), and how to verify (get_invoice). It does not describe error cases or what the returned draft contains, but the get_invoice pointer largely compensates for the missing 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%, so all 8 parameters are already documented (job_id, invoice_date required; due_date, customer_id, GL account overrides, include_expenses/include_timesheets, etc.). The description's mention of 'approved timesheets and billable expenses' only echoes what include_timesheets/include_expenses already say, so it adds no new parameter meaning 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?
States a specific verb and resource ('Generate a DRAFT AR invoice from a job's approved timesheets and billable expenses') and explicitly frames itself as 'the Job → invoice bridge.' This cleanly distinguishes it from create_invoice (manual creation) and generate_invoice_from_proposal (proposal-based), so an agent can route correctly without opening sibling schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operational guidance: require the Workflow module and write scope, confirm job and date with the user before calling, then verify with get_invoice. It implies the from-job context but never explicitly contrasts with create_invoice or generate_invoice_from_proposal, so the when-not/alternative guidance is incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_invoice_from_proposalA
Generate a DRAFT AR invoice from a signed/contracted proposal — the Proposal → invoice bridge. Maps the selected pricing option's line items onto a new draft invoice (does not post to GL). Requires the Sales module and the write scope. Confirm the proposal and terms with the user before calling, then verify the created invoice with search_invoices or get_invoice.
| Name | Required | Description | Default |
|---|---|---|---|
| due_date | No | Due date (YYYY-MM-DD) | |
| terms_code | No | Payment terms code | |
| proposal_id | Yes | The signed/contracted proposal ID to invoice | |
| invoice_date | No | Invoice date (YYYY-MM-DD); defaults to today if omitted | |
| gl_ar_account_id | No | Override AR GL account ID | |
| default_revenue_gl_account_id | No | Default revenue GL account ID for lines |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the output state (DRAFT, not posted to GL), the derivation logic (maps the selected pricing option's line items), and required module/scope. It does not address idempotency, duplicate-invoice handling, or what happens if the proposal is already invoiced. Squarely above average for an unannotated mutation 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?
Three front-loaded clauses: identity/scope, behavior/requirements, then verification. Each sentence earns its place. Slightly dense with em-dash and parenthetical asides, but no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-param creation tool with no output schema, the description covers state (draft), side effects (no GL posting), prerequisites (Sales module, write scope), and a verification path in lieu of describing the return value. It lacks detail on error/failure cases (e.g., unapproved proposal) and whether the returned invoice ID is surfaced.
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 due_date, terms_code, proposal_id, invoice_date, and both GL account overrides. The description adds only the high-level notion that line items come from 'the selected pricing option', with no guidance on the GL override params. Baseline 3 is correct 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 gives a specific verb+resource ('Generate a DRAFT AR invoice from a signed/contracted proposal') and explicitly frames it as 'the Proposal → invoice bridge', which separates it from create_invoice, generate_invoice_from_job, and generate_recurring_invoice without the agent opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the gating conditions ('Requires the Sales module and the write scope'), a pre-call workflow ('Confirm the proposal and terms with the user'), and a post-call action ('verify the created invoice with search_invoices or get_invoice'). It never explicitly says when to prefer create_invoice or generate_invoice_from_job instead, so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_recurring_invoiceA
Generate an invoice now from a recurring schedule and advance its next-run date. Creates a DRAFT invoice. Confirm with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Recurring schedule ID to generate an invoice from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the resulting state ('Creates a DRAFT invoice'), a side effect on other data ('advance its next-run date'), and a required human-confirmation step. It does not mention idempotency (what happens on a repeat call) or behavior for paused/inactive schedules, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero filler, and the core action and its side effect are front-loaded before the safety instruction. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter generation tool with no output schema, the description covers the action, the resulting draft state, the schedule mutation, and the confirmation requirement. The only material gap is what the tool returns (presumably the new draft invoice) and behavior against inactive schedules.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema description coverage is 100%, so the schema already explains that 'id' is the recurring schedule ID. The description confirms the schedule context but adds no format, range, or lookup guidance beyond the schema — the baseline 3 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?
States a specific verb and resource ('Generate an invoice') plus the source of truth ('from a recurring schedule'), which distinguishes it from generate_invoice_from_proposal and generate_invoice_from_job. It also names the second effect ('advance its next-run date'), so the agent knows this is not a pure read or a plain create.
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 instruction 'Confirm with the user first' is a genuine prerequisite and useful guidance, but the description never states when to use this over alternatives such as pause_recurring_schedule/resume_recurring_schedule or waiting for the scheduled run, nor any when-not condition. Usage is therefore implied rather than specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_accountA
Get a single chart of accounts entry by ID from KikoBooks. Returns full account details including balances, hierarchy, and metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | Yes | The GL Account ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It partially discharges it by naming the payload ('balances, hierarchy, and metadata') and by using 'Get', which implies a side-effect-free read, but it never explicitly states the operation is non-mutating, nor what happens on a missing/invalid ID.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler. The identity/scope information is front-loaded and the return-value note follows, which is the right ordering.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description supplies the essentials: what is fetched, by what key, and roughly what comes back. It is only thin on failure/permission behavior, which is minor for a simple lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the sole parameter is documented in the schema as 'The GL Account ID to retrieve'. The description's 'by ID' adds no syntax, format, or sourcing detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get'), a specific resource ('a single chart of accounts entry'), and the retrieval key ('by ID'). The word 'single' plus 'by ID' implicitly separates it from the sibling search_accounts, so an agent can route correctly without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the tool takes an ID, so it is for looking up an account you already have the identifier for, as opposed to search_accounts which finds accounts by criteria. No explicit when-to-use, when-not-to-use, or prerequisite (e.g., how to obtain an account_id) is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ap_agingA
Get accounts-payable aging brackets (current, 1-30, 31-60, 61-90, 90+ days) — how much is owed to vendors and how overdue. Read-only report.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it does disclose the key trait — 'Read-only report' — which is the main safety signal an agent needs. It says nothing about scope filtering (org/period), rate limits, or data freshness, so the disclosure is partial rather than rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the brackets enumerated inline and the safety trait appended at the end. Nothing is redundant and the resource is 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 zero-parameter report with no annotations and no output schema, the description covers purpose, output content (the five aging brackets), and safety. It stops short of specifying the reporting period or the granularity of the returned amounts, but it is otherwise sufficient to call 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?
The tool takes zero parameters, so there is no parameter semantics burden to carry; the baseline of 4 applies. The description's enumeration of brackets is about output content, not 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?
States a specific verb ('Get') and resource ('accounts-payable aging brackets') and defines exactly what the report measures: how much is owed to vendors and how overdue. By framing the scope as amounts owed to vendors (payables), it implicitly separates itself from the sibling get_ar_aging, which covers receivables.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the reporting use case (understanding vendor obligations by overdue bucket) but never states when to call this versus get_ar_aging, get_trial_balance, or the search_* tools. No prerequisites or exclusions are given, so usage must be 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.
get_ar_agingA
Get accounts-receivable aging brackets (current, 1-30, 31-60, 61-90, 90+ days) — how much customers owe and how overdue. Read-only report.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden, and 'Read-only report' does substitute for the missing readOnlyHint, which is genuinely useful. However, it says nothing about scoping (whole organization vs. filtered), permissions required, or whether results are period-dependent, leaving behavioral gaps the annotations would normally cover.
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 sentence plus a short qualifier, front-loaded with the resource and followed by the bracket detail. Every clause earns its place and there is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only report with no output schema, the description usefully enumerates the return brackets so the agent knows what it will get back. The only shortfall is the absence of any statement about scoping or time period, which matters for an aging 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?
The tool takes zero parameters, so per the rubric the baseline is 4. The bracket list in the description describes output shape rather than parameter meaning, so there is nothing further for the description to add here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Get') and resource ('accounts-receivable aging brackets') and enumerates the exact brackets returned, so the agent knows precisely what report this is. It does not explicitly name sibling get_ap_aging as the counterpart, but the 'accounts-receivable' scope makes the distinction self-evident.
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 resource itself — an aging report is fetched when overdue receivables are needed — but there are no explicit when-to-use or when-not conditions and no mention of alternatives such as get_ap_aging or get_trial_balance. No exclusions or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bank_accountA
Get full details of a single bank account by ID. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Bank account ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and 'Read-only' is a genuine, useful disclosure about the operation's safety profile. However, it says nothing about permissions, error behavior when the ID doesn't exist, or any rate considerations, leaving substantial gaps for an un-annotated 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?
Two terse sentences with zero waste; the purpose is front-loaded and the read-only trait follows immediately. Nothing could be trimmed without losing 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 minimal one-parameter lookup with no output schema, the description is nearly sufficient: it scopes the resource, the key, and the safety profile. It stops short of describing the returned shape, though 'full details' gestures at it and no output schema constrains 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?
The single 'id' parameter has 100% schema description coverage ('Bank account ID'), so the schema already documents it. The description only restates 'by ID' without adding format, type, or lookup-mechanics detail 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?
States a specific verb ('Get') and resource ('a single bank account by ID'), with the 'single... by ID' scope clearly separating it from the sibling search_bank_accounts. It doesn't explicitly name the sibling, but the singular/by-ID framing makes the distinction inferable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'by ID' suggests you must already have the account identifier, which routes an agent away from this tool when it needs to discover accounts. No explicit when-to-use or when-not guidance, and no alternative named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bank_transactionA
Get full details of a single imported bank transaction by ID. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Bank transaction ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden; it does this by declaring 'Read-only', which is exactly the safety signal an annotation would have supplied. It does not go further into permissions or response format, but for a lookup tool the key behavioral trait is covered.
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, purpose first and the read-only qualifier second. Nothing is wasted and the essential information is 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 one-parameter retrieval tool, the description covers what is fetched ('full details of a single imported bank transaction') and its read-only nature, which is sufficient for correct invocation. Without an output schema it could have sketched the returned shape, a minor remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single 'id' parameter is already documented as 'Bank transaction ID'. The description adds only 'by ID', which confirms intent but no format or syntax 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 (Get) and resource (a single imported bank transaction) with an explicit lookup key ('by ID'), which implicitly separates it from the sibling search_bank_transactions (plural search). It does not name the sibling explicitly, but the singular/ID framing makes the distinction 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?
The phrase 'by ID' implies the tool is used when a transaction identifier is already known, and the contrast with search_* siblings is implied rather than stated. There is no explicit when-to-use/when-not guidance or named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_billA
Get a single bill by ID from KikoBooks. Returns full bill details including line items, payment history, and balance due.
| Name | Required | Description | Default |
|---|---|---|---|
| bill_id | Yes | The Bill ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden; it helpfully discloses the return payload (line items, payment history, balance due). However, it says nothing about permissions, whether the bill must be in a certain state, or error behavior when the ID is invalid.
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 tight sentences with the action front-loaded and the return contents second. No redundant or filler text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-entity read tool with no annotations and no output schema, the description covers the action and the shape of the return, which is sufficient for correct invocation. Minor gaps around error/empty-state behavior keep it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage, so the schema already documents bill_id fully. The description adds no format or type detail beyond what the schema provides, which is the expected baseline when schema coverage is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (a single bill by ID), and the word 'single' implicitly distinguishes it from the list-oriented search_bills sibling. Clear enough to route correctly, though it does not name the alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by ID' implies you invoke this when you already have a bill_id, and listing the returned fields hints at why you'd use it over a search. But there is no explicit when-to-use guidance, no mention of search_bills as the alternative, and no prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bill_paymentB
Get a bill payment (AP) by ID from KikoBooks. Returns full payment details including bill applications.
| Name | Required | Description | Default |
|---|---|---|---|
| payment_id | Yes | The bill payment ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden; it implies a read-only lookup by using 'Get' and it discloses that the payload includes bill applications, which is genuinely useful. It says nothing about permissions, whether voided payments are returned, or error behavior for an unknown ID.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the identity of the resource and its scope front-loaded before the return-value note.
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 getter with no output schema, the description covers the essentials: what is fetched, by what key, and roughly what comes back. The remaining gap is the relationship to the search/create/void siblings in the same family.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (payment_id) and schema description coverage is 100%, so the schema already defines it fully. The description adds no format, type, or sourcing guidance beyond what the schema states, which matches the baseline for a fully documented parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a bill payment by ID') and tags it '(AP)', which separates it from AR-side siblings. It does not explicitly contrast with the adjacent get_payment or search_bill_payments, so an agent still has to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus search_bill_payments (to find an ID first) or get_payment (a different payment object). The description never names an alternative or a precondition beyond having an ID.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_business_healthA
Get the overall business-health summary (composite financial health indicators and scores) for the organization. Read-only dashboard report.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden. It does usefully disclose the safety profile ('Read-only dashboard report'), which substitutes for a readOnlyHint, but says nothing about the period covered, refresh/data-freshness behavior, or cost of the aggregation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the subject front-loaded and no filler. The second sentence adds the read-only constraint rather than restating 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 zero-parameter, read-only tool with no annotations and no output schema, the description covers what it returns at a high level and its safety profile. It leaves the reporting period/time window unstated, which is the main remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there are no parameter semantics to document; the baseline for a no-parameter tool is 4. Nothing in the description misleads about 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 description names a specific resource (business-health summary) and clarifies the payload as composite financial health indicators and scores for the organization. The word 'composite' distinguishes it from single-metric siblings like get_profit_and_loss and get_cash_position, though it does not name them 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?
'Read-only dashboard report' implies this is a top-level overview used before drilling into specific financial reports, but no explicit when-to-use or when-not-to-use guidance is given relative to the many sibling report tools. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cash_positionB
Get the current cash position across GL cash accounts and bank accounts as of a date. Read-only report.
| Name | Required | Description | Default |
|---|---|---|---|
| asOfDate | No | Cash position as of this date (YYYY-MM-DD). Default: today |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses 'Read-only report,' which rules out mutations and clarifies the safety profile, but it adds no further context such as required permissions, data freshness, or whether inactive accounts are included.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste: the core purpose is front-loaded, followed by a brief safety note. Every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only report with one optional parameter and no output schema, the description covers purpose, scope, and read-only nature adequately. It could mention the shape of the returned cash position (e.g., balances by account), but the phrase 'across GL cash accounts and bank accounts' implies that breakdown.
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 asOfDate parameter is fully documented in the schema. The description mirrors this with 'as of a date' but adds no syntax or format details beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get'), resource ('current cash position'), scope ('across GL cash accounts and bank accounts'), and timing ('as of a date'). This clearly differentiates it from siblings like get_bank_account (single account) and get_trial_balance (full ledger), but it does not explicitly name an alternative tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as get_trial_balance, get_bank_account, or search_bank_transactions. The 'Read-only report' phrase signals safety but not selection criteria or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_connection_statusA
Report whether the KikoBooks MCP server is connected to an organization. Returns status (connected | unauthenticated | disconnected), whether credentials are configured, and the API base URL. Never returns the API key or any token. Call this first to confirm connectivity before other tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so well: it enumerates the exact return statuses (connected | unauthenticated | disconnected), states what credential/base-URL information is included, and gives a security guarantee that secrets are never returned. This is exactly the kind of read-only safety and return-shape context an agent needs for a connectivity 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?
Three tightly packed sentences: purpose, return contents plus security guarantee, then usage directive. Front-loaded with the core purpose and no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Because there is no output schema, the description must explain return values — and it does (status enum, credential flag, base URL, no secrets). Combined with the call-first guidance, nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the schema is an empty object, so there is no parameter semantics for the description to explain. Baseline score of 4 applies for a no-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Report') and resource (connectivity of the KikoBooks MCP server to an organization), and is clearly distinct from every sibling tool, which are all domain CRUD/search/analytics operations. An agent can identify this as the health-check tool without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to 'Call this first to confirm connectivity before other tools,' establishing both when to use it and its ordering relative to all siblings. No alternative tool exists for this purpose, so no when-not clause is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_credit_memoA
Get a credit memo by ID from KikoBooks. Returns full credit memo details including line items and application history.
| Name | Required | Description | Default |
|---|---|---|---|
| credit_memo_id | Yes | The credit memo ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It usefully states what comes back (line items and application history), but says nothing about error behavior for invalid IDs, permissions, or the read-only nature beyond the verb 'Get'.
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, purpose front-loaded, and the return contents appended without filler. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter getter with no output schema, describing the returned payload (line items, application history) fills the main gap. Missing only edge-case behavior such as invalid-ID handling, which is a minor omission at this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is already documented as 'The credit memo ID to retrieve'. The description's 'by ID' adds nothing beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (Get a credit memo) plus the lookup key (by ID), making the operation unambiguous. It does not explicitly contrast itself with the sibling search_credit_memos, 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?
The phrase 'by ID' implies the tool is for direct retrieval when an identifier is already known, which distinguishes it implicitly from search_credit_memos. No explicit when-to-use, prerequisites, or fallback guidance is offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_customerA
Get a single customer by ID from KikoBooks. Returns full customer details including contact info, addresses, and balance.
| Name | Required | Description | Default |
|---|---|---|---|
| customer_id | Yes | The Customer ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the return shape (contact info, addresses, balance), which is useful, but says nothing about permissions, behavior on an invalid/missing ID, or whether soft-deleted customers 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?
Two short sentences, zero filler, with the lookup action front-loaded and the return summary second. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description covers the essential return fields, which compensates for the absent output schema. Minor gaps remain around error behavior and permissions, but nothing blocking 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 coverage is 100% for the single customer_id parameter, so the schema already documents type and meaning. The description's 'by ID' adds no syntax or constraint detail beyond that, which is the expected baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('customer') with a scoping qualifier ('single ... by ID'), which is enough to distinguish it from search_customers. It does not name that sibling explicitly, 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?
The 'by ID' phrasing implies this is a direct-lookup tool rather than a discovery tool, which is usable guidance. However, it never states when to prefer this over search_customers or what to do if the ID is unknown, so the usage rule is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dealA
Get a single CRM deal by ID with full detail (value, stage, pipeline, linked lead/customer). Requires the Sales module.
| Name | Required | Description | Default |
|---|---|---|---|
| deal_id | Yes | The CRM deal ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. 'Get' implies a safe read and the Sales-module prerequisite is genuine behavioral context, but nothing is said about behavior for unknown/unauthorized IDs or access scoping.
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 sentence, front-loaded with the verb and resource, with the field list and prerequisite appended — no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a single documented parameter and no output schema, the description usefully names the fields returned and the module prerequisite. It stops short of error/not-found behavior, but is otherwise adequate for a trivial read 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?
Only one parameter and schema description coverage is 100%, so the schema already documents deal_id fully ('The CRM deal ID to retrieve'). The description's 'by ID' adds no syntax or format 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 (get), resource (CRM deal), scope (single, by ID), and enumerates the returned detail (value, stage, pipeline, linked lead/customer). The 'single ... by ID' framing cleanly distinguishes it from the sibling search_deals.
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 prerequisite 'Requires the Sales module' is useful, and 'by ID' implies the caller must already hold an ID. But it never states when to prefer this over search_deals or what to do if only a name is known, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_depositA
Get full details of a single bank deposit by ID, including its allocated payments. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Deposit ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It discloses that the operation is 'Read-only' and mentions the returned detail includes allocated payments, but it does not cover permissions, error behavior, or other operational 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?
The description is a single front-loaded sentence with no wasted words. The key operation and resource come first, followed by return detail and read-only status.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter get tool with no output schema, the description is largely complete: it identifies the resource, lookup key, returned scope, and read-only nature. It could be strengthened by explicitly pointing to search_deposits for lookup workflows, but that is a minor 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 only parameter is clearly documented as 'Deposit ID' in the schema. The description reinforces that the ID identifies a single bank deposit but adds no format, range, or other semantic detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get'), a specific resource ('single bank deposit'), the lookup key ('by ID'), and additional returned content ('including its allocated payments'). This clearly distinguishes it from list/search siblings such as search_deposits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used when a single deposit is needed by ID, but it does not explicitly say when to use it versus search_deposits or other get/deposit tools. There are no exclusions or alternative-routing instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_enabled_modulesA
List the modules and capabilities enabled for the connected organization. Bookkeeping and AI are always available. CRM, Proposals (Sales), and Workflow are mandatory for accounting firms (CA) but opt-in for self-service businesses (CB), so call this before offering any sales, proposal, or job/workflow action — if a module is not enabled, do not attempt its tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden and does provide meaningful behavioral context: Bookkeeping and AI are always available, while CRM, Proposals, and Workflow are mandatory or opt-in depending on organization type. It also discloses the intended usage constraint. It stops short of explicitly stating that it is a read-only operation or describing the response shape, but the added context is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose, then gives important availability context, then ends with a clear actionable instruction. The single paragraph is dense but earns every clause; nothing is redundant or misplaced.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-argument capability-listing tool with no output schema or annotations, the description gives an agent everything needed to call it correctly and interpret its role: what it returns, which modules are always available, which are conditional, and the policy for using disabled module 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?
The tool takes zero parameters, so the baseline is 4. The description appropriately does not add parameter-level details because none exist, and the empty schema is fully consistent with the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('modules and capabilities enabled for the connected organization'), making the scope unambiguous. It also frames itself as a prerequisite capability check, which distinguishes it from the many search/get/create action tools in 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?
Explicitly instructs when to call it: 'call this before offering any sales, proposal, or job/workflow action.' It also states the consequence of not doing so ('if a module is not enabled, do not attempt its tools') and explains the organizational conditions (CA vs CB) that determine module availability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_expense_by_categoryA
Get the expense breakdown grouped by category/account. Read-only report for understanding where money is being spent.
| Name | Required | Description | Default |
|---|---|---|---|
| periodBucket | No | Optional period bucket filter (integer); omit for the default view |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the safety profile ("Read-only report"), which is genuinely useful given the absence of readOnlyHint, but it says nothing about the default period covered, whether all accounts are included, or whether the periodBucket filter changes scope.
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, both front-loaded: the first defines the output, the second defines the safety profile and purpose. No filler, no restatement of the tool 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?
For a one-optional-parameter read-only report, the description conveys the shape of the result (a breakdown grouped by category/account) in lieu of an output schema, and flags the read-only nature in lieu of annotations. Only the default time window and aggregation granularity remain unstated, which is a minor 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 periodBucket parameter is already documented as an optional integer filter in the schema. The description adds no information about the parameter (it never mentions period filtering), so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (expense breakdown grouped by category/account), so the agent knows exactly what is produced. It does not explicitly distinguish itself from its close sibling get_income_by_category or the other report tools (get_trial_balance, get_profit_and_loss), though the word 'expense' does most of the work implicitly.
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?
"Read-only report for understanding where money is being spent" hints at the analytical use case, which is implied usage guidance. It never states when to pick this over get_income_by_category or get_profit_and_loss, and there are no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fixed_assetA
Get full details of a single fixed asset by ID, including depreciation settings. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Fixed asset ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does supply the key safety fact ('Read-only'). Beyond that it says nothing about authentication, pagination, or error behavior (e.g., what happens if the ID does not exist), so the disclosure is minimal.
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 tight sentence with the primary intent front-loaded, followed by a short safety tag. No filler or repetition of the tool 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?
For a simple single-parameter getter with no output schema, the description is nearly complete: it names the resource and even flags the returned depreciation settings. It only lacks detail on failure modes when the ID is not found.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter exists and schema coverage is 100% ('Fixed asset ID'), so the schema already does the work. The description's 'by ID' is consistent but adds no syntax or format 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 (Get), resource (fixed asset), and scope (a single one, by ID), plus the notable content it returns (depreciation settings). An agent can immediately distinguish it from the sibling search_fixed_assets.
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 'a single fixed asset by ID' implies this is the follow-up to a search result, but there is no explicit statement of when to use it versus search_fixed_assets or when not to use it. Usage is inferable but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_income_by_categoryA
Get the income/revenue breakdown grouped by category/account. Read-only report for understanding revenue sources.
| Name | Required | Description | Default |
|---|---|---|---|
| periodBucket | No | Optional period bucket filter (integer); omit for the default view |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the read-only safety profile ('Read-only report'). However, it says nothing about return format, pagination or ordering, permission requirements, or precisely what the breakdown contains, and there is no output schema to compensate.
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, zero filler, with the core action front-loaded and the read-only/intent qualifier trailing. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter, read-only analytic tool with no output schema, the description covers the action, the grouping dimension, and the safety profile adequately. It leaves the exact shape of the report and its relationship to sibling financial reports unspecified, which is a minor gap rather than a blocking one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is only one optional parameter, so the schema already documents periodBucket. The description adds no meaning about the bucket's units, allowed values (there are no enums), or what the default view is, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the income/revenue breakdown') plus the grouping dimension ('by category/account'), which distinguishes it from the many search_* siblings. It does not name the obvious adjacent sibling get_expense_by_category or get_profit_and_loss, so differentiation is only implicit through the 'income/revenue' scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'For understanding revenue sources' implies the use case but gives no when-to-use rule, no exclusions, and no routing toward alternatives such as get_profit_and_loss or get_expense_by_category. Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_invoiceA
Get a single invoice by ID from KikoBooks. Returns full invoice details including line items, payments, credits, and balance due.
| Name | Required | Description | Default |
|---|---|---|---|
| invoice_id | Yes | The Invoice ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden; 'Get' makes the read-only nature clear and it goes beyond that by describing the returned payload (line items, payments, credits, balance due), which compensates for the absent output schema. It omits permission requirements and error behavior for a missing ID, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the lookup key front-loaded and the return summary second; every clause earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description covers identity and return shape adequately. Sibling routing (search_invoices) and failure behavior are the remaining minor gaps.
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 well-documented invoice_id parameter, so the baseline is 3. The description's 'by ID' corroborates the schema but adds no format, type, or sourcing detail beyond it.
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 (get a single invoice) plus the lookup key (by ID) and the source system, so the agent can distinguish it from search_invoices and update_invoice without opening the schema. It stops short of explicitly naming the sibling search tool, so it is 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?
The phrase 'by ID' implies the tool is for direct retrieval when an identifier is already known, but the description never says when to prefer it over search_invoices or what to do if the ID is unknown. Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_itemA
Get a single product/service item by ID from KikoBooks. Returns full item details including pricing and account mapping.
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | The Item ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the full burden. It discloses that it returns 'full item details including pricing and account mapping', which is genuinely useful context about the return shape even absent an output schema. But it doesn't state error behavior (e.g., non-existent ID), auth/permission needs, or whether it's read-only — though a 'Get' strongly implies read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no waste, front-loaded with the verb+resource+scope. Every phrase earns its place, with return content disclosed 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 one-parameter read tool this is nearly sufficient, but with no annotations and no output schema, the description is the only source of behavioral info yet omits error handling and permission requirements. Return content is partially described, which helps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — the single item_id parameter is fully documented in the schema as 'The Item ID to retrieve'. Description adds no parameter specifics beyond restating that ID is required. Baseline 3 when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (single product/service item by ID from KikoBooks). Clearly distinguishes from sibling search_items (search vs single fetch), though it doesn't explicitly name the alternative like the highest-scoring examples do.
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 — retrieve one item when you have its ID. However, no explicit when/when-not guidance and no mention of search_items as the alternative for listing/finding items without an ID. Adequate but with clear gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_jobA
Get a single job (Project/Engagement) by ID with full detail (status, customer, dates, billing). Requires the Workflow module.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | The job (Project/Engagement) ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It adds useful context by disclosing the Workflow module dependency and the returned detail fields, and 'Get' signals read-only. It does not cover error behavior when the ID is unknown or whether jobs from other modules are visible.
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 tight clauses with zero waste: the core action and scope come first, and the module prerequisite follows. Every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter get-by-ID tool with no output schema or annotations, the description covers the resource, the returned fields, and the module prerequisite. Only error/not-found behavior is left unspecified, which is a minor 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% for the single job_id parameter, so the schema already documents its meaning and type. The description adds no format or constraint detail beyond that, matching the baseline for fully covered 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?
States a specific verb and resource ('Get a single job by ID') and enumerates the detail returned (status, customer, dates, billing). This clearly separates it from search_jobs and list_job_tasks, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Requires the Workflow module' clause is a genuine prerequisite, but there is no explicit statement of when to use this versus search_jobs (single known ID) or list_job_tasks. Usage is only implied by 'single job by ID'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_journal_entryB
Get a single journal entry by ID from KikoBooks. Returns full entry details including debit/credit lines, posting status, and audit hash.
| Name | Required | Description | Default |
|---|---|---|---|
| entry_id | Yes | The Journal Entry ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses return content (debit/credit lines, posting status, audit hash), but says nothing about read-only nature, permissions, or error behavior for a missing/voided entry.
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 action and identifier, then the return contents. No filler or redundant phrasing.
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, describing the returned fields is the right compensating detail, and it covers the essentials for a simple single-entity fetch. The absence of any note about missing entries or permissions is a minor 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?
Only one parameter, and schema description coverage is 100% ('The Journal Entry ID to retrieve'), so the schema already documents it fully. The description's 'by ID' adds no syntax or format 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?
The description states a specific verb and resource ('Get a single journal entry by ID'), and the word 'single' implicitly contrasts with search_journal_entries. It is clear but never names the sibling tools it must be distinguished from.
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 search_journal_entries as the way to discover IDs, and no prerequisites or exclusions. Usage is only inferable from the phrase 'by ID'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_leadA
Get a single CRM lead by ID with full detail (contact info, status, source, linked customer). Requires the Sales module.
| Name | Required | Description | Default |
|---|---|---|---|
| lead_id | Yes | The CRM lead ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It usefully discloses the module prerequisite ('Requires the Sales module') and implies read-only via 'Get', but says nothing about error behavior for missing/invalid IDs or any access constraints beyond the module.
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 core action, then the returned detail, then the prerequisite. Zero wasted 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?
For a simple single-entity getter with no output schema, the description covers the resource, what detail is returned (contact info, status, source, linked customer), and the module prerequisite. It is nearly complete, though it lacks any note on missing-record behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single lead_id parameter, so the schema already documents it fully. The description's 'by ID' adds no syntax or format detail beyond what the schema provides, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (CRM lead) with clear scope ('single ... by ID'), which implicitly separates it from search_leads. However it never names the sibling alternative, so differentiation relies on inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'by ID' (lookup of one known lead vs. browsing), and the Sales module prerequisite is stated, but there is no explicit when-to-use guidance or pointer to search_leads for discovery.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_organization_detailsA
Get the connected organization's profile — legal name, currency, fiscal settings, and enabled modules. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the burden, and it does disclose 'Read-only' — a meaningful safety signal. Beyond that it says nothing about authentication requirements, caching/staleness of fiscal settings, or whether it errors when no organization is connected, which is thin for a tool with zero annotation coverage.
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 verb and resource, then the returned fields, then the read-only qualifier. No filler and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates what the profile contains, which is exactly what the agent needs from a zero-parameter getter. It is nearly complete, missing only confirmation of behavior on a disconnected/unauthenticated state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so per the rubric the baseline is 4. The description correctly implies a single implicit scope (the connected organization) rather than accepting any identifier, which reinforces why no input is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Get') and resource ('the connected organization's profile') and enumerates the fields returned — legal name, currency, fiscal settings, enabled modules. It does not, however, differentiate itself from the sibling get_enabled_modules, which overlaps with the last field it advertises.
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 contains no when-to-use guidance at all. It never says when this profile fetch is preferable to get_connection_status or get_enabled_modules, nor whether it should precede other org-scoped operations, leaving the agent to infer routing from names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_paymentA
Get a customer payment (AR) by ID from KikoBooks. Returns full payment details including allocations to invoices.
| Name | Required | Description | Default |
|---|---|---|---|
| payment_id | Yes | The payment ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Get' and 'Returns' imply a non-mutating read, and it usefully discloses that allocations to invoices are included, but it says nothing about behavior when the ID is not found, permission requirements, or whether results are cached/limited.
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 action and scope, then the return payload. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with no annotations, the description covers the essentials and compensates for the absent output schema by describing the return content (full details plus invoice allocations). Only minor gaps remain around failure/permission 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% — payment_id is already documented as 'The payment ID to retrieve'. The description adds only the phrase 'by ID', which restates the schema rather than adding format, source, or validation detail.
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 ('Get a customer payment (AR) by ID') and the '(AR)' qualifier implicitly separates it from get_bill_payment, which covers the AP side. It does not explicitly name that sibling, so an agent must infer the boundary rather than being routed to it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'By ID' implies the tool is for direct lookup once an identifier is known, which nudges the agent away from search_payments. However there is no explicit statement of when to use this versus the search variant, nor any prerequisite about where the ID comes from.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pipelineA
Get the CRM sales pipeline with its stages and per-stage deal counts — the 'where are my deals' overview. Optionally narrow to one pipeline by ID. Requires the Sales module.
| Name | Required | Description | Default |
|---|---|---|---|
| pipeline_id | No | Optional pipeline ID to narrow to one pipeline when the org has several |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses a module dependency and the aggregate nature of the response, but it never states read-only/no-side-effect behavior or permission requirements beyond the module gate, leaving the mutation profile 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?
Two sentences, front-loaded with the purpose and return contents, then the optional parameter and prerequisite. No filler and nothing is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-optional-param read tool with no output schema, the description covers what the tool returns (stages and per-stage deal counts) and the module prerequisite. It is complete enough to call correctly, with only minor gaps like pagination or multi-pipeline ordering.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is fully described in the schema, so the baseline is 3. The description only restates that pipeline_id optionally narrows to one pipeline, adding no syntax or edge-case detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Get the CRM sales pipeline') and even describes the return shape ('stages and per-stage deal counts'). The 'where are my deals' overview framing implicitly separates it from deal-level siblings like get_deal/search_deals, but no alternative 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?
It gives a prerequisite ('Requires the Sales module') and notes the parameter is an optional narrowing filter, which implies when the tool applies. However, it offers no explicit when-to-use/when-not guidance or routing against the many sibling search/get tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_profit_and_lossA
Get the monthly profit & loss (income statement) trend — revenue, expenses, and net profit per month. Read-only. Use trendPeriods to control how many months.
| Name | Required | Description | Default |
|---|---|---|---|
| trendPeriods | No | Number of monthly periods to return (default: 12) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden, and it does declare 'Read-only', which is valuable safety context. It stops there: no mention of permission requirements, rate limits, or behavior when trendPeriods is large. Partial disclosure earns a 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short clauses, all front-loaded: the resource and trend granularity come first, the read-only note second, the parameter pointer last. No filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully describes the return shape (monthly revenue, expenses, net profit), and there is only one optional parameter. The main gap is the absent routing guidance against sibling report tools, but functionally an agent has enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single optional parameter, so the schema already documents trendPeriods fully including the default of 12. The description's 'control how many months' restates this without adding format or limit details. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (monthly profit & loss / income statement trend) and enumerates the content returned — revenue, expenses, net profit per month. This distinguishes it clearly from sibling financial reports like get_income_by_category and get_trial_balance without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is given, and no alternative report tool is named (e.g. when to prefer this over get_income_by_category or get_expense_by_category). The only directive — 'Use trendPeriods to control how many months' — is parameter usage, not tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_proposalA
Get a single proposal by ID with full detail (status, pricing options, line items, signatures). Requires the Sales module.
| Name | Required | Description | Default |
|---|---|---|---|
| proposal_id | Yes | The proposal ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses a genuine prerequisite (Sales module) and that the response is the 'full detail' record, but says nothing about behavior when the ID is missing/unauthorized or whether the result is cached/limited. For a low-risk single read this is adequate but thin.
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 tightly packed sentence with the core action front-loaded, followed by the prerequisite. No filler, nothing that could be trimmed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-item get with full schema coverage and no output schema, the description gives the agent what it needs: scope, returned fields, and a module prerequisite. It would be complete at 5 with a brief note on not-found/error behavior, given the absence of annotations.
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 required parameter is documented in-schema, so the baseline is 3. The description reinforces 'by ID' and names the detail fields returned, but adds no format or validity constraints 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+resource ('Get a single proposal by ID') and enumerates the returned detail (status, pricing options, line items, signatures). The word 'single' implicitly separates it from search_proposals, but no sibling is named explicitly, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent must infer it should call this when it already has a proposal_id rather than when browsing. The one real constraint given is the prerequisite 'Requires the Sales module,' which is useful but not a when/when-not statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_purchaseB
Get a single purchase (expense) by ID from KikoBooks. Returns full purchase details.
| Name | Required | Description | Default |
|---|---|---|---|
| purchase_id | Yes | The Purchase/Expense ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden. It says the tool retrieves a single record and returns full details, but does not mention read-only nature, permissions, error behavior for invalid IDs, or anything about the return shape beyond 'full purchase details'.
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 core action is front-loaded. Every sentence contributes to identifying the operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read tool with 100% schema coverage, the description covers purpose adequately. But with no output schema, 'Returns full purchase details' is vague about the actual return structure, and it omits error behavior, leaving gaps an agent might need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is only one parameter, purchase_id. The description adds no meaning beyond the schema; it merely restates that retrieval is by ID, which the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get'), resource ('purchase (expense)'), and scope ('single ... by ID'), which distinguishes it from search_purchases and other get_* siblings. However, it does not explicitly name or contrast those alternatives, so this is clear but not fully sibling-differentiating.
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 explicit when-to-use or when-not-to-use guidance. The phrase 'by ID' implies a prerequisite but does not tell the agent when to choose get_purchase over search_purchases or other retrieval tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reconciliation_summaryA
Get the bank reconciliation summary across accounts — matched/unmatched counts and cleared balances. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does supply the key behavioral fact ('Read-only') and the shape of the returned data. It says nothing about scope/freshness (org-wide? per bank account? live vs cached), which an agent would want before trusting the numbers.
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 tight sentences, zero waste, with the resource and scope front-loaded and the read-only fact appended as a qualifier.
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 read tool, the description is nearly sufficient: it names the resource, the aggregation scope, the return contents and the read-only nature. Only the data scope/freshness question remains open.
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?
Zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. No parameter documentation is needed here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (get reconciliation summary) and names the scope ('across accounts') plus the payload (matched/unmatched counts, cleared balances). This distinguishes it from session-level siblings like search_reconciliation_sessions, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance. It does not tell the agent how this differs from search_reconciliation_sessions or start/complete_reconciliation, leaving the choice entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recurring_scheduleA
Get full details of a single recurring invoice schedule by ID. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Recurring schedule ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden; it does disclose "Read-only," which usefully signals this is a safe, non-mutating fetch. It says nothing beyond that, though — no indication of what the returned schedule details include, whether missing IDs error, or any pagination/permission behavior, and no output schema exists to cover 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?
Two short sentences, purpose front-loaded, with the read-only guarantee as a compact trailing qualifier. Nothing is repeated and 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 one-parameter, non-nested read tool with full schema coverage and no output schema, the description is nearly sufficient: it names the resource, the lookup key, and the safety profile. The only shortfall is the absence of any routing hint against the surrounding recurring-schedule siblings (search/delete/pause/resume/activate).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single id parameter is documented as "Recurring schedule ID". The description's "by ID" adds no syntax, format, or constraint detail beyond the schema, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (recurring invoice schedule) and narrows scope to a single record fetched by ID, which implicitly separates it from the sibling search_recurring_schedules. It does not explicitly name that sibling, so an agent still has to infer the boundary rather than being told it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"by ID" implies the precondition (you already have a schedule ID), and "single" implies it is not the bulk search path. However, no alternative tool is named and there is no explicit when/when-not statement distinguishing this from search_recurring_schedules, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sales_receiptB
Get a sales receipt by ID from KikoBooks. Returns full receipt details including line items and payment information.
| Name | Required | Description | Default |
|---|---|---|---|
| sales_receipt_id | Yes | The sales receipt ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose return content ('full receipt details including line items and payment information'), which is useful, but says nothing about error/not-found behavior, permissions, or that this is strictly read-only beyond the verb 'Get'.
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 tight sentences with the resource and lookup key front-loaded, and the return content second. Every clause earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter getter with no output schema, the description covers what the tool does and what it returns. It would be fully complete with a note on not-found behavior or the fact that the ID comes from search_sales_receipts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single parameter is already fully documented in the schema. The description adds no format or constraint details beyond 'by ID', so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a sales receipt by ID from KikoBooks'), which is unambiguous. The 'by ID' phrasing implicitly distinguishes it from search_sales_receipts, but no sibling is named explicitly, keeping it just below a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 like search_sales_receipts, nor any prerequisite guidance beyond the implicit 'you need an ID'. The agent must 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.
get_statementA
Get full details of a single customer statement by ID. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Statement ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden and does volunteer 'Read-only,' which usefully discloses the non-mutating nature. However it says nothing about permissions, error behavior for a missing ID, or what 'full details' actually contains, so the behavioral picture is only partial.
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 retrieval scope is front-loaded and the safety trait ('Read-only') is placed as a compact trailing qualifier.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only lookup with no output schema, the description supplies the essentials: what is returned ('full details'), the lookup key (ID), and the fact that it does not mutate. It stops short of characterizing the returned payload, which is a minor gap given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter is documented as 'Statement ID' in the schema, so the description can only add marginal value. Its phrase 'by ID' confirms the identifier is the statement's own ID rather than a related entity, but adds no format or constraint detail.
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 ('Get full details of a single customer statement by ID'), which distinguishes it from the sibling search_statements, delete_statement, and send_statement. It never names an alternative explicitly, but the 'single ... by ID' scoping makes the retrieval-by-identifier intent unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer 'use this when you already have a statement ID and want its details,' versus search_statements when you don't. There is no explicit when-to-use, no prerequisite, and no named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trial_balanceA
Get the trial balance (debit/credit balances per GL account) as of a date. Read-only financial report. Optionally filter by account category, type, or code.
| Name | Required | Description | Default |
|---|---|---|---|
| topN | No | Max rows to return (default: 200) | |
| asOfDate | No | Balances as of this date (YYYY-MM-DD). Default: today | |
| accountCode | No | Filter to a single account code | |
| accountType | No | Filter by account type | |
| includeHeaders | No | Include header/roll-up accounts (default: false) | |
| accountCategory | No | Filter by account category (e.g. Asset, Liability, Equity, Income, Expense) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears the full behavioral burden; it does disclose the key trait 'Read-only', which is genuinely useful. It says nothing about permissions, pagination behavior, default row limits, or result ordering, so the safety profile is only partially covered.
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 core purpose and output definition before the optional filters. Every clause carries information; nothing is padded or repeated.
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 six-parameter tool with no annotations and no output schema, the description covers purpose, output concept, and filter dimensions adequately. It stops short of describing the report's shape (columns, ordering, how topN truncates) or any prerequisite, which an agent would need without an output schema to lean 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%, so the schema already documents all six parameters including defaults and formats; baseline is 3. The description restates the filter dimensions (category, type, code) and the as-of-date concept without adding syntax, defaults, or interaction rules beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the trial balance') and even defines the output concept parenthetically ('debit/credit balances per GL account as of a date'), which lets an agent distinguish it from neighboring reports like get_profit_and_loss and get_ar_aging. It does not, however, explicitly name or contrast itself against those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage ('Read-only financial report', optional filter dimensions), so an agent can infer this is a safe lookup invoked when a trial balance is needed. But there is no when-to-use/when-not guidance and no routing to alternative report tools such as get_profit_and_loss, 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.
get_vendorA
Get a single vendor by ID from KikoBooks. Returns full vendor details including contact, addresses, and payment terms.
| Name | Required | Description | Default |
|---|---|---|---|
| vendor_id | Yes | The Vendor ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden. It usefully discloses what is returned (contact, addresses, payment terms) and 'Get' implies a safe read, but there is no statement on error behavior, permissions, or whether missing IDs error vs return null.
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 action and resource, and the return-content clause is directly relevant. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read with no output schema, the description covers the action, the input, and the shape of the return value. Only minor gaps remain around error/missing-record 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?
There is a single parameter with 100% schema description coverage ('The Vendor ID to retrieve'), so the schema already documents it fully. The description adds no format or type guidance beyond that, which puts it at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a single vendor by ID') and adds the source system and return scope ('full vendor details'), which cleanly separates it from the many search_* siblings in the same family.
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 'a single vendor by ID' implies the lookup-by-ID use case versus search_vendors, but no explicit alternative or when-to-use condition is named. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_job_tasksA
List the tasks for a specific job (Project/Engagement). Filter by status or name. Requires the Workflow module.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by task name | |
| page | No | Page number (default: 1) | |
| job_id | Yes | The job ID whose tasks to list | |
| status | No | Filter by task status | |
| pageSize | No | Results per page (default: 15) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full behavioral burden. It does disclose one genuine precondition (Workflow module required) and the read-only nature is implied by 'List', but it says nothing about permissions, pagination limits, result volume, or what happens with an invalid job_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and the entity disambiguation, then filters, then the hard prerequisite. Nothing is padded or restated.
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 list tool with no output schema and no annotations, the description covers purpose, filters, and the module prerequisite without exposing the return shape. The main remaining gap is return-format/pagination expectations, which the schema partially addresses via page/pageSize defaults.
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 (job_id, name, status, page, pageSize) are already documented in the schema with defaults. The description only echoes the name/status filters and adds no matching semantics (e.g. whether name is a substring match, or valid status values), so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the tasks for a specific job') and usefully disambiguates the term 'job' as Project/Engagement, which many agents would otherwise misread. It does not, however, contrast itself with nearby siblings such as get_job or update_task_status, so an agent still has to infer the boundary from the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description names the two available filters and states the prerequisite ('Requires the Workflow module'), which is real usage guidance. It gives no explicit when-to-use/when-not-to-use rule and never names an alternative tool (e.g. get_job for the job itself), so routing remains implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_deal_stageA
Move a CRM deal to a different pipeline stage (advance or regress it on the board). Requires the Sales module and the write scope. Preview the target stage and confirm before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| deal_id | Yes | The CRM deal ID to move | |
| target_stage_id | Yes | The pipeline stage ID to move the deal into |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that this is a mutation requiring module entitlement and write scope plus a preview/confirm workflow, but says nothing about reversibility, side effects (history, automations), or what a failure looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action and followed by prerequisites and the confirm step. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter mutation with full schema coverage and no output schema, the description covers the essentials: what moves, what is required, and a safety practice. Minor gaps remain around failure behavior and reversibility, but nothing critical 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 deal_id and target_stage_id are already documented in the schema. The description adds no extra meaning about parameter format, source of stage IDs, or constraints, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Move a CRM deal to a different pipeline stage') and clarifies the effect ('advance or regress it on the board'), so an agent understands exactly what changes. It does not explicitly differentiate from the related sibling update_deal, which also mutates deals, leaving the 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?
Provides concrete prerequisites ('Requires the Sales module and the write scope') and a workflow instruction ('Preview the target stage and confirm before calling'), which is real usage context. It stops short of naming alternatives, so it never says when to use update_deal vs this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_recurring_scheduleA
Pause an active recurring invoice schedule so it stops generating invoices. Confirm with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Recurring schedule ID to pause | |
| pauseReason | No | Reason for pausing |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the core effect (generation stops). It does not say whether the pause is reversible (a resume sibling exists), what happens to invoices already generated, or what permissions are needed for this state mutation.
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, the effect front-loaded and the confirmation guard second. No filler, nothing redundant with 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?
For a two-parameter mutation with no annotations and no output schema, the description covers purpose and effect but omits reversibility, side effects on existing invoices, and any return/status information. Adequate but with clear gaps.
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 'id' and 'pauseReason' are already documented in the schema. The description adds no format, range, or semantics beyond that, which is the expected baseline when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (pause) and resource (recurring invoice schedule) and states the immediate consequence: it stops generating invoices. It doesn't explicitly contrast with the closest siblings resume_recurring_schedule, activate_recurring_schedule, and delete_recurring_schedule, though the verbs are self-evidently distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Pause an active ... schedule' implies a precondition (the schedule must be active) and 'Confirm with the user first' gives a procedural rule. It never says when to pause versus delete or resume, so the choice among the four schedule-state siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_depositA
Post a DRAFT deposit to the General Ledger (DR Bank, CR Undeposited Funds). Irreversible except by void. Confirm with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Deposit ID to post | |
| postingDate | No | GL posting date (YYYY-MM-DD). Default: deposit date |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does well: it discloses irreversibility, the reversal mechanism (void), the confirmation requirement, and the ledger entries produced. It stops short of covering auth/permission needs or failure behavior, but the critical mutation risks are 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?
Three tight sentences, with the core action and its side effect front-loaded and the safety caveats following. Nothing is padded or repeated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an irreversible mutation with no annotations and no output schema, the description supplies what an agent most needs: what gets posted, that it cannot be undone except by void, and that user confirmation is required. Return-value detail is absent but not essential here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both id and postingDate with formats and defaults. The description adds no parameter-level meaning beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Post) and resource (a DRAFT deposit) plus the exact GL effect (DR Bank, CR Undeposited Funds). It is clearly distinguishable from siblings like create_deposit, update_deposit, and void_deposit without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies the precondition clearly: it operates on a DRAFT deposit and must be confirmed with the user first, and it names void as the only reversal path. It does not explicitly route the agent to alternatives (e.g., void_deposit vs. create_deposit), so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_journal_entryA
Post a journal entry to the general ledger in KikoBooks. Once posted, the entry becomes immutable and affects account balances.
| Name | Required | Description | Default |
|---|---|---|---|
| entry_id | Yes | The Journal Entry ID to post to the general ledger |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does disclose the two most consequential traits: the entry becomes immutable and it affects account balances. It omits permissions/authorization requirements, whether the entry must be balanced or in draft state before posting, and what error conditions to expect, 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?
Two short sentences, zero filler, and the state-changing consequence is front-loaded immediately after the action statement. Every clause contributes 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 one-parameter mutation with no output schema and no annotations, the description covers the essential semantics an agent needs: what it does, that it is irreversible, and that it changes balances. It is only slightly short of complete because it says nothing about prerequisites (entry state) or failure behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single entry_id parameter, so the schema already explains the input. The description adds no format, source, or lookup guidance beyond that, which matches the baseline 3 for a well-covered 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 (post) and resource (journal entry) with the target system named (KikoBooks). The action is clearly distinct from the sibling lifecycle operations create_journal_entry, get_journal_entry, reverse_journal_entry, and search_journal_entries, so an agent can place it correctly without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: 'Post a journal entry' tells the agent this applies to an existing, presumably unposted entry, and the immutability note hints at caution. However, it never names when to choose this over create_journal_entry (build a new entry) or reverse_journal_entry (undo a posted one), leaving the routing decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
promote_deal_to_customerA
Promote a deal's customer to the 'Customer' lifecycle stage and link it to the deal. This is the required gate before creating a proposal or job from a deal. Requires the Sales module and the write scope. Confirm with the user before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| deal_id | Yes | The CRM deal ID whose customer should be promoted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it discloses real behavioral facts: Sales module dependency, write scope requirement, the fact that it is a gate for downstream creation steps, and a human-confirmation requirement. It does not cover idempotency, what happens if the customer is already in that stage, or reversibility.
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, each earning its place: what it does, why/when it matters, and the operational prerequisites plus confirmation. The core action is 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 single-parameter mutation with no annotations and no output schema, the description supplies the key operational context an agent needs (prerequisites, confirmation, downstream relevance). Remaining gaps are edge-case behavior such as already-promoted customers and error outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter whose schema description is already complete (100% coverage). The description only echoes 'a deal's customer' and adds no format, sourcing, or lookup guidance beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (promote) and resource (a deal's customer), plus the concrete side effect of linking it to the deal. It is clearly distinguishable from sibling tools like update_customer, create_customer, or move_deal_stage.
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?
States an explicit precondition ('required gate before creating a proposal or job from a deal') that tells the agent when this tool must be used, plus a user-confirmation requirement. It does not name alternatives or when-not-to-use cases, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_recurring_scheduleA
Resume a paused recurring invoice schedule. Confirm with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Recurring schedule ID to resume |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose a meaningful trait beyond the schema: a user-confirmation requirement before the state change. It does not state what resuming actually triggers (next run timing, invoice generation), what happens if the schedule is not paused, or whether the change is reversible.
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, zero filler, and the action is front-loaded ahead of the confirmation caveat. Nothing in it is redundant with the schema or 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 one-parameter state-change tool with no annotations and no output schema, the description covers the action and a key safety step, but leaves the resume-vs-activate distinction and the post-resume behavior undocumented. It is adequate but has clear gaps given the absence of structured behavioral fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage ('Recurring schedule ID to resume'), so the schema already documents it fully. The description adds no format, ID-source, or lookup guidance beyond the schema, which is the expected baseline at full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Resume') and resource ('recurring invoice schedule') and adds a state precondition ('paused'), which is more than a restatement of the name. However, it does not differentiate itself from the sibling activate_recurring_schedule, so an agent cannot tell the two apart from the text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'paused' qualifier implies the applicable state, and 'Confirm with the user first' is a usable workflow instruction. But no alternative is named or excluded (activate_recurring_schedule vs resume_recurring_schedule is left ambiguous), so the guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reverse_journal_entryA
Reverse a posted journal entry in KikoBooks. Creates a new entry with opposite debits/credits. Posted entries cannot be deleted — only reversed.
| Name | Required | Description | Default |
|---|---|---|---|
| entry_id | Yes | The Journal Entry ID to reverse | |
| reversal_date | No | Date for the reversal entry (YYYY-MM-DD). Defaults to original entry date. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose the important non-obvious semantics — reversal creates a NEW counter-entry rather than mutating or removing the original, and posted entries are permanent — but says nothing about permissions, period/date constraints, whether the reversal itself can be undone, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with no padding; the core action is front-loaded and the mechanism and constraint follow immediately. Every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter mutation with no annotations and no output schema, the description covers purpose, mechanism, and the key permanence constraint. It does not indicate what the caller receives (e.g., the new reversal entry ID) or any validation behavior around reversal_date, which is a minor 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% for both parameters, including that reversal_date defaults to the original entry date, so the schema already does the heavy lifting. The description adds no additional syntax or constraints 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?
States a specific verb (reverse) plus resource (posted journal entry) and explains the mechanism: a new entry with opposite debits/credits. It also distinguishes itself from the delete/void-style siblings by noting posted entries cannot be deleted, only reversed.
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 clear and almost explicit: use this when a posted entry needs to be undone, because deletion is not possible. It does not name or exclude any concrete sibling tool (e.g., post_journal_entry or get_journal_entry) as an alternative, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_depreciationA
Run depreciation for a fiscal year + period — posts all unposted depreciation schedule entries and updates accumulated depreciation. Posts to the GL. Confirm with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| fiscalYear | Yes | Fiscal year to run depreciation for | |
| periodNumber | Yes | Fiscal period number to run depreciation for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does name the concrete side effects: it posts all unposted depreciation schedule entries, updates accumulated depreciation, and posts to the GL. It omits reversibility (how to undo), idempotency (behavior on re-run for a closed period), and any permission/auth requirement, which are meaningful gaps for a GL-mutating operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and its scope, then the side effects, then the safety instruction. 'Posts to the GL' is slightly redundant with 'posts all unposted depreciation schedule entries,' a minor bit of waste in an otherwise tight description.
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 mutation tool with no annotations and no output schema, the description covers the action, its GL effects, and a confirmation requirement. What an agent still lacks is return/result information and re-run or undo behavior, but the core decision-relevant content is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented there, so the baseline is 3. The description's 'fiscal year + period' phrasing simply restates the schema and adds no format, range, or validation detail beyond it.
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 opens with a specific verb+resource pair ('Run depreciation') and immediately scopes it to a fiscal year + period. No sibling tool in this server performs depreciation posting, and the scope qualifiers make confusion with the search_/get_ fixed-asset and recurring-schedule tools unlikely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear operational context: this posts real GL entries and the agent should 'Confirm with the user first,' which is a meaningful gating instruction. It stops short of stating when-not to run it (e.g. an already-posted period) or naming alternatives such as posting manual journal entries, so it does not reach the explicit when/when-not bar of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_accountsA
List chart of accounts from KikoBooks. Supports filtering by category (ASSET, LIABILITY, EQUITY, INCOME, EXPENSE), type, and text search. Returns paginated results.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| type | No | Filter by account type code | |
| search | No | Search by account name or number | |
| category | No | Filter by account category | |
| pageSize | No | Number of results per page (default: 50, max: 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses pagination, which is useful, but that overlaps with the page/pageSize schema fields and it says nothing about read-only safety, default ordering, auth requirements, or result 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?
Three short, front-loaded sentences with zero filler: what it does, what can be filtered, and what comes back. Each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with no output schema, the definition covers the essential contract (resource, filters, pagination). It omits only minor details like default sort order and the account fields returned, which a caller might want.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented. The description restates category values (already an enum in the schema) and mentions type/text search without adding syntax, format, or edge-case 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?
States a specific verb+resource ('List chart of accounts from KikoBooks') and enumerates the available filters, so the agent knows exactly what it retrieves. It does not explicitly distinguish itself from the singular sibling get_account, but the list/search semantics make the split 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?
The description implies usage (list all accounts, optionally narrowed by category/type/text search) but gives no explicit when-to-use versus when-not guidance, no mention of the get_account alternative, and no prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_bank_accountsB
Search the organization's bank accounts (connected/manual) with paging and filters. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| search | No | Search by bank account display name | |
| sortBy | No | Sort column (default: AccountDisplayName) | |
| status | No | Filter by status | |
| pageSize | No | Results per page (default: 50) | |
| sortDesc | No | Sort descending (default: false) | |
| accountType | No | Filter by account type | |
| unmappedOnly | No | Only accounts not yet mapped to a GL account |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does disclose 'Read-only', which is genuinely useful safety context, and hints at paging. It does not cover return format, pagination behavior, or any auth/rate constraints, leaving meaningful behavioral gaps.
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 tight sentences with the resource and scope front-loaded; no wasted words. It could be marginally more informative without losing brevity, but it is well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, 8-parameter search tool with full schema coverage and no output schema, the essentials are present (resource, scope, read-only). It still omits what results are returned and how pagination behaves, so it is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 8 parameters with defaults. The description only summarizes them as 'paging and filters' without adding syntax or value beyond the schema, matching the baseline 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?
States a specific verb and resource ('Search the organization's bank accounts') and adds scope ('connected/manual', 'with paging and filters'). It does not, however, differentiate from the nearby ambiguous sibling search_accounts (GL accounts) or route the agent 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?
There is no explicit when-to-use or when-not guidance. It does not tell the agent how this differs from search_accounts or get_bank_account, so selection between these overlapping siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_bank_transactionsA
Search imported bank transactions with filters (account, date range, direction, match status, duplicates). Read-only — this is append-only bank evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| dateTo | No | Value date on/before (YYYY-MM-DD) | |
| search | No | Search by description/counterparty text | |
| sortBy | No | Sort column (default: ValueDate) | |
| dateFrom | No | Value date on/after (YYYY-MM-DD) | |
| pageSize | No | Results per page (default: 50) | |
| sortDesc | No | Sort descending (default: true) | |
| direction | No | Filter by direction (e.g. Debit / Credit / Inflow / Outflow) | |
| matchStatus | No | Filter by match status (e.g. Matched / Unmatched) | |
| excludedOnly | No | Only excluded transactions | |
| bankAccountId | No | Filter to a single bank account ID | |
| duplicatesOnly | No | Only transactions flagged as duplicates |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It helpfully declares 'Read-only' (substituting for a readOnlyHint) and the 'append-only' immutability of the underlying evidence, which is genuine value. It does not, however, disclose return format, pagination behavior beyond schema defaults, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight clauses with zero waste; the scope and the read-only nature are both front-loaded. Nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool with full schema coverage and no output schema, the description is nearly complete, conveying scope and mutation safety. It could mention pagination/result shape, but the schema handles parameters well enough that this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 12 parameters thoroughly (defaults, formats, examples). The description only restates filter categories (account, date range, direction, match status, duplicates) without adding syntax or format detail. 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 (Search) and a precisely scoped resource (imported bank transactions), then enumerates the filter dimensions. This is clearly distinguishable from siblings like search_bank_accounts (different resource) and get_bank_transaction (single-record fetch).
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 list of filter dimensions implies the use case (finding transactions by account/date/direction), but there is no explicit when-to-use guidance and no mention of alternatives such as get_bank_transaction for retrieving a single transaction. Usage is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_bill_paymentsB
List bill payments (AP) from KikoBooks. Supports filtering by vendor, status, payment method, date range, and text search. Returns paginated results.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| search | No | Search by check number, memo, or reference | |
| status | No | Filter by payment status | |
| toDate | No | Filter payments to this date (YYYY-MM-DD) | |
| fromDate | No | Filter payments from this date (YYYY-MM-DD) | |
| pageSize | No | Number of results per page (default: 50) | |
| vendorId | No | Filter by vendor ID | |
| paymentMethod | No | Filter by payment method |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'List' implies read-only and 'Returns paginated results' discloses the pagination trait, which is genuine added context. But it omits pagination limits/defaults, ordering, auth requirements, and any note that an empty filter returns everything.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with the core verb-resource front-loaded and no filler. Slightly improved by naming the filters, though that sentence largely duplicates 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?
For an 8-param search tool with no output schema and no annotations, the description is thin: return shape is only gestured at ('paginated results') and nothing is said about filtering defaults or empty-result behavior. Adequate but leaves real gaps.
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 eight parameters are already documented. The description's filter list (vendor, status, payment method, date range, text search) merely restates schema dimensions and adds no syntax or semantics beyond them, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List bill payments (AP)') and names the source system (KikoBooks). However, it never distinguishes itself from close siblings like search_payments, search_bills, or get_bill_payment, so an agent must infer the boundary between AP bill payments and generic payments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no exclusions, and no pointer to alternatives such as search_payments for generic payments or get_bill_payment for a single record. The agent gets filter hints but nothing about when this tool is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_billsA
List bills (accounts payable) from KikoBooks. Filter by status, vendor, date range, or overdue status. Returns paginated results.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| dateTo | No | End date filter (YYYY-MM-DD) | |
| search | No | Search by bill number or vendor name | |
| status | No | Filter by bill status | |
| overdue | No | Filter for overdue bills only | |
| dateFrom | No | Start date filter (YYYY-MM-DD) | |
| pageSize | No | Results per page (default: 50, max: 500) | |
| vendorId | No | Filter by vendor ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses pagination behavior ("Returns paginated results"), which is useful context, and "List" implies read-only, but it says nothing about permissions, result caps, sorting, or whether results are scoped to the caller.
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 what the tool returns before listing filters. Every sentence carries information, though the filter list largely duplicates the schema rather than earning extra space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an eight-parameter, no-output-schema, no-annotation read tool, the core is covered: entity, filters, and paginated return. Missing scoping/permission notes and sorting behavior are modest gaps given the schema handles parameter detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all eight parameters including formats and defaults. The description only restates the filter dimensions in prose, adding no syntax, default, or interaction semantics beyond the schema — the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource, and glosses the accounting term ("bills (accounts payable)"), so an agent knows exactly what entity is returned. It does not, however, distinguish this from sibling readers such as get_bill or search_bill_payments, 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?
The enumerated filter dimensions (status, vendor, date range, overdue) imply when this tool is useful, but there is no explicit statement of when to prefer it over get_bill or search_bill_payments, nor any exclusion or prerequisite guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_credit_memosA
List credit memos (AR) from KikoBooks. Supports filtering by customer, status, reason, date range, amount range, and remaining balance. Returns paginated results.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| search | No | Search by credit memo number or description | |
| status | No | Filter by status (e.g., 'Draft', 'Posted', 'Applied', 'Voided') | |
| toDate | No | Filter to this date (YYYY-MM-DD) | |
| fromDate | No | Filter from this date (YYYY-MM-DD) | |
| pageSize | No | Number of results per page (default: 50) | |
| invoiceId | No | Filter by related invoice ID | |
| maxAmount | No | Maximum credit memo amount | |
| minAmount | No | Minimum credit memo amount | |
| reasonCode | No | Filter by reason code | |
| customer_id | No | Filter by customer ID | |
| hasRemainingBalance | No | Filter to only credit memos with unapplied balance |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose that results are paginated and that this is a listing operation (implying read-only), but it says nothing about permissions, default sort order, or what happens with no filters (full result set?). Adequate but thin for a tool with zero annotation coverage.
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 what the tool does, followed by capability and return shape. Little waste, though the filter enumeration is largely redundant with 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?
For a read-only, 12-parameter search tool with a fully documented schema and no output schema, the description covers purpose, filtering breadth, and pagination. It would be stronger with a note on what a returned record contains or the default ordering, but nothing essential to 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 all 12 parameters are already documented in the schema with types and examples. The description's enumerated filter list (customer, status, reason, date range, amount range, remaining balance) mirrors those fields without adding format, default, or combination semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List credit memos (AR)') plus the system of record, so the agent knows this is a read/search operation over credit memos. It does not explicitly differentiate itself from the sibling get_credit_memo (single-record fetch), leaving that distinction to be inferred from the verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by listing the filter dimensions available, which tells the agent this is the tool for scoped credit-memo retrieval, but it never states when to use this versus get_credit_memo or create_credit_memo, and gives no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_customersB
Search customers in KikoBooks. Supports text search across name, company, and email. Returns paginated results with sorting options.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| search | No | Search by customer name, company, or email | |
| pageSize | No | Results per page (default: 50, max: 500) | |
| sortColumn | No | Column to sort by (e.g., 'DisplayName', 'CompanyName') | |
| sortDirection | No | Sort direction |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose that results are paginated and sortable, which is useful behavioral context, but it omits that this is a read-only operation, any auth/permission requirements, and default ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with the purpose front-loaded and no filler. Slightly more compact than strictly necessary but nothing wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple all-optional search tool with no output schema, the description covers purpose, search fields, pagination, and sorting adequately. It stops short of describing the shape of returned customer records or empty-result behavior, which would matter given there is 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%, so all five parameters are already documented in the schema. The description restates the searchable fields (name, company, email) but adds no syntax, matching behavior, or sort-column guidance beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) and resource (customers in KikoBooks), and names the searchable fields. It is clearly distinguishable from sibling search tools by resource, though it never explicitly contrasts itself with get_customer or the other search_* 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 description gives no indication of when to use this tool versus get_customer (single-record lookup) or whether search is required to discover IDs before create/update calls. Usage is only implied by the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_dealsA
Search CRM deals (sales opportunities) in the pipeline. Filter by status, pipeline, stage, lead, tag, or text. Requires the Sales module — call get_enabled_modules first for CB orgs. Returns paginated results.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| tagId | No | Filter by tag ID | |
| leadId | No | Filter by originating lead ID | |
| search | No | Search by deal name or associated customer | |
| status | No | Filter by deal status (e.g. open, won, lost) | |
| stageId | No | Filter by pipeline stage ID | |
| pageSize | No | Results per page (default: 50) | |
| pipelineId | No | Filter by pipeline ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses two useful traits — a module/authorization prerequisite and paginated returns — but says nothing about error behavior when the Sales module is absent, result ordering, or what fields come back. Adequate but incomplete for a no-annotation 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?
Three short sentences with no filler, front-loaded with the core action and resource. The prerequisite and return-shape notes are appended in the order an agent would need them.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter search tool with no output schema, the description covers the purpose, filter surface, prerequisite, and pagination. It could say more about the shape of returned deal records, but the essential calling information is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every one of the 8 parameters is already documented (page, pageSize, search, status, stageId, pipelineId, leadId, tagId). The description's filter list roughly mirrors the schema without adding format, defaults, or ID-resolution guidance. 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 a specific verb and resource ('Search CRM deals (sales opportunities) in the pipeline') and enumerates the filter dimensions available. The resource noun distinguishes it from search_leads/search_accounts, though no sibling is named explicitly, so differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit prerequisite and routing instruction: 'Requires the Sales module — call get_enabled_modules first for CB orgs.' That is concrete operational guidance beyond most descriptions. It does not, however, say when to use search_deals versus the sibling get_deal for retrieving a single record.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_depositsB
Search bank deposits (grouped undeposited payments moved to a bank account) with filters. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| dateTo | No | Deposit date on/before (YYYY-MM-DD) | |
| sortBy | No | Sort column (default: DepositDate) | |
| status | No | Filter by deposit status | |
| dateFrom | No | Deposit date on/after (YYYY-MM-DD) | |
| pageSize | No | Results per page (default: 50) | |
| reconciled | No | Filter by reconciled state | |
| searchTerm | No | Search text | |
| bankAccountId | No | Filter by destination bank account ID | |
| sortDescending | No | Sort descending (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose the key trait 'Read-only', which correctly signals a non-mutating operation, but says nothing about pagination behavior, result volume, or permissions, leaving gaps for a 10-parameter list 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?
Two short sentences, zero waste, with the resource and its definition front-loaded before the read-only note. Nothing could be trimmed without losing 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 filter-based search tool with no output schema, the description identifies the resource and the safety profile, and the schema fully covers the inputs. It could have noted that results are paginated or what a result row contains, but the essentials for correct invocation are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all ten parameters are already documented with formats and defaults in the schema. The description only gestures at 'filters' and adds no syntax, default, or interaction detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search bank deposits') and adds a defining parenthetical that clarifies what a deposit is (grouped undeposited payments moved to a bank account). It does not differentiate itself from near-siblings like search_bank_transactions, search_bank_accounts, or get_deposit, so an agent must infer the list-vs-single distinction.
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 usage cue is 'with filters', which implies retrieval, and no alternatives or exclusions are named. It never says when to prefer this over get_deposit or search_bank_transactions, nor what conditions select it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_fixed_assetsB
Search fixed assets (capitalized property/equipment) with filters by category, status, depreciation method, location, or department. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| search | No | Search by asset name/tag | |
| status | No | Filter by status (e.g. Active / Disposed) | |
| location | No | Filter by location | |
| pageSize | No | Results per page (default: 50) | |
| department | No | Filter by department | |
| sortColumn | No | Sort column (default: AcquisitionDate) | |
| categoryCode | No | Filter by asset category code | |
| sortDirection | No | Sort direction (default: DESC) | |
| depreciationMethodCode | No | Filter by depreciation method code |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden, and it does disclose the one most important trait: 'Read-only'. However, it says nothing about permissions, pagination behavior beyond the schema defaults, or what a result set contains, leaving substantial behavioral gaps for a 10-parameter read 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?
Two short sentences with zero filler; the core purpose is front-loaded and the read-only caveat is placed at the end where it reads as a qualifier. Nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter search tool with no output schema and no annotations, the definition covers purpose and safety but omits return shape, sorting/paging semantics, and routing against get_fixed_asset and the many other search_* siblings. It is minimally viable rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the schema. The description's filter list (category, status, depreciation method, location, department) largely mirrors those schema fields and adds no syntax, format, or matching-behavior detail beyond them. 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 (Search) and resource (fixed assets), disambiguates the domain with '(capitalized property/equipment)', and enumerates the filterable dimensions. It does not explicitly name a sibling like get_fixed_asset, so the search-vs-get split is only implied by the verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given. It never says to reach for this tool for browsing/filtering assets vs get_fixed_asset for a single asset, nor does it state prerequisites or when results would be empty. Usage must be inferred entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_invoicesC
Search invoices in KikoBooks. Filter by status (DRAFT, PENDING, SENT, PAID, etc.), customer, date range, or overdue status. Returns paginated results.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| search | No | Search by invoice number or customer name | |
| status | No | Filter by invoice status | |
| isPosted | No | Filter by GL posting state | |
| pageSize | No | Results per page (default: 50) | |
| dueDateTo | No | Due date on/before (YYYY-MM-DD) | |
| isOverdue | No | Only invoices past their due date | |
| termsCode | No | Filter by payment terms code | |
| customerId | No | Filter by customer ID (AR_Customer_Id) | |
| hasBalance | No | Only invoices with an outstanding balance | |
| sortColumn | No | Sort column (default: AR_Invoice_Id) | |
| dueDateFrom | No | Due date on/after (YYYY-MM-DD) | |
| srcProvider | No | Filter by source provider (e.g. Stripe, BILL) | |
| currencyCode | No | Filter by ISO currency code | |
| invoiceDateTo | No | Invoice date on/before (YYYY-MM-DD) | |
| sortDirection | No | Sort direction (default: DESC) | |
| invoiceDateFrom | No | Invoice date on/after (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose that results are paginated, which is useful, but it omits permissions, defaults, sort behavior, and result contents for a 17-param read 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?
Three tight sentences, front-loaded with the verb/resource and then filtering capability. No filler, though the 'etc.' after the status list is slightly imprecise.
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 17-param search tool with no output schema and no annotations, the description is somewhat thin: it says results are paginated but does not describe sorting defaults or the fields returned. The complete schema compensates for parameter documentation, keeping this at a minimum-viable level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each of the 17 parameters is documented in the schema, so the baseline is 3. The description's mention of status, customer, date range, and overdue merely echoes a subset of the schema without adding format or interplay details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) and resource (invoices) with the scope of filtering, so the purpose is unambiguous. It does not differentiate from siblings such as get_invoice or search_bills, 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?
The description lists filter dimensions but gives no when-to-use guidance and no alternatives (e.g., use get_invoice for a single record by ID). An agent gets no signal about when this tool is the right choice versus the many sibling search_* and get_invoice tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_itemsC
List products/services (items) from KikoBooks. Returns paginated results with search support.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| search | No | Search by item name or description | |
| pageSize | No | Results per page (default: 50, max: 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses pagination and search support, which is useful, but says nothing about read-only nature (only implied by 'List'), permissions, or result scope. For a zero-annotation tool this is thin.
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 resource and followed by the return behavior. Efficient with no wasted 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?
With no annotations and no output schema, the description should do more: it omits how items relate to get_item, what fields are returned, and any caveats. It is under-specified for a tool an agent must route correctly among many search_* siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so page, search, and pageSize are already documented. The description's mention of 'search support' loosely maps to the search parameter but adds no syntax or format detail beyond the schema. 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 a specific verb (List) and resource (products/services, i.e. items) and names the source system (KikoBooks). An agent can tell it deals with items, but it does not explicitly differentiate from the closely-related get_item sibling or from the other search_* 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 description gives no when-to-use guidance, no conditions for choosing search over get_item, and no exclusions. Usage must be inferred 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.
search_jobsA
Search jobs (shown as 'Projects' for self-service businesses, 'Engagements' for accounting firms). Filter by customer, status, name, or tags. Requires the Workflow module — call get_enabled_modules first for CB orgs. Returns paginated results.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by job name | |
| page | No | Page number (default: 1) | |
| tags | No | Filter by tags | |
| status | No | Filter by job status | |
| pageSize | No | Results per page (default: 15) | |
| customerId | No | Filter by customer ID | |
| filterType | No | Filter type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses a key precondition (Workflow module dependency), a procedural step (call get_enabled_modules first), and the return behavior (paginated results). It lacks detail on auth or exact pagination mechanics, but adds substantial context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with the search purpose and terminology mapping, followed by filters and the module precondition. Every sentence carries distinct information with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully notes paginated results and the module dependency for CB orgs. For a 7-parameter read tool with full schema coverage, this is nearly complete; only explicit pagination defaults/mechanics are left implicit.
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 seven parameters are already documented in the schema. The description restates the filterable fields (name, status, tags, customer) without adding syntax, formats, or enum values beyond what the schema provides. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (jobs), and immediately disambiguates the resource by noting it appears as 'Projects' for self-service businesses and 'Engagements' for accounting firms. This distinguishes it from get_job and the many other search_* 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?
Explains what the tool can filter by (customer, status, name, tags) and gives a precondition: it requires the Workflow module and the agent should call get_enabled_modules first for CB orgs. It doesn't name sibling alternatives or when-not-to-use, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_journal_entriesA
List journal entries from KikoBooks general ledger. Filter by date range, source (MANUAL, AR_INVOICE, AP_BILL, etc.), and posted status. Posted entries are immutable.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| dateTo | No | End date (YYYY-MM-DD) | |
| posted | No | Filter by posted status | |
| search | No | Search by entry number or description | |
| source | No | Filter by journal entry source | |
| dateFrom | No | Start date (YYYY-MM-DD) | |
| pageSize | No | Results per page (default: 50, max: 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that posted entries are immutable, which matters for any downstream mutation, but omits whether the tool is strictly read-only, its pagination defaults/limits, and any auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the purpose, then the filter axes, then the immutability note. Every sentence earns its place with no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list tool with full schema coverage and no output schema, the description covers purpose, filters, and a key behavioral constraint. It is nearly complete, though return shape and pagination behavior are 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 every parameter (dateTo, dateFrom, posted, source, search, page, pageSize) is already documented in the schema. The description restates the filter axes and echoes a few enum values but adds no format or semantic detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) plus resource (journal entries) and system scope (KikoBooks general ledger), and lists the filter dimensions. It is clearly distinguishable from get_journal_entry or create_journal_entry, but never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the 'List ... Filter by ...' framing, which tells an agent this is a query tool. However, it gives no explicit guidance on when to use it versus get_journal_entry for a single entry, or versus the reporting tools like get_trial_balance, and offers no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_leadsA
Search CRM leads (prospective customers). Filter by status, lead source, tag, or text. Requires the Sales module — call get_enabled_modules first for self-service (CB) orgs. Returns paginated results.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| tagId | No | Filter by tag ID | |
| search | No | Search by lead name, company, or email | |
| status | No | Filter by lead status | |
| pageSize | No | Results per page (default: 50) | |
| leadSourceId | No | Filter by lead source ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does disclose two useful traits: results are paginated and a module prerequisite gates execution. It still omits read-only/safety framing and any mention of auth scope or limits, so it is good but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core purpose, then filters, then prerequisite and return behavior. Every clause adds information an agent needs and 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 six-parameter, all-optional search tool with no annotations and no output schema, the description covers purpose, filter surface, module prerequisite, and pagination. Remaining gaps (default page size behavior, whether an empty filter returns everything) 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 description coverage is 100%, so all six parameters are already documented with per-field meanings. The description only groups the filters (status, lead source, tag, text) without adding format, enum, or default details beyond the schema, matching 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?
States a specific verb and resource ('Search CRM leads (prospective customers)') and immediately enumerates the filterable dimensions. The parenthetical distinguishes leads from the many sibling search tools like search_customers, search_deals, and search_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?
Gives explicit preconditions: the Sales module is required and get_enabled_modules should be called first for self-service (CB) orgs, naming a concrete sibling tool. It does not, however, state when to prefer this over get_lead for a single record or search_deals for related entities.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_paymentsB
List customer payments (AR) from KikoBooks. Supports filtering by customer, status, payment method, date range, and text search. Returns paginated results.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| search | No | Search by reference number, check number, or memo | |
| status | No | Filter by payment status (e.g., 'Draft', 'Posted', 'Voided') | |
| pageSize | No | Number of results per page (default: 50) | |
| customer_id | No | Filter by customer ID | |
| payment_date_to | No | Filter payments to this date (YYYY-MM-DD) | |
| payment_date_from | No | Filter payments from this date (YYYY-MM-DD) | |
| payment_method_code | No | Filter by payment method (e.g., 'CHECK', 'CREDIT_CARD', 'ACH') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the data source (KikoBooks), the scope (customer AR), and that results are paginated, which is useful. It omits permissions, sort order, and result shape beyond '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 tight sentences, front-loaded with the resource and scope, then capabilities, then return behavior. No filler. Could arguably be trimmed further, so not 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 an 8-parameter list tool with no annotations and no output schema, the description is minimally adequate. It does not describe returned fields or pagination defaults (pageSize=50, page=1 live only in the schema), leaving gaps an agent would need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all 8 parameters with syntax and examples. The description only summarizes the filter categories (customer, status, method, date range, text search) and adds no syntax or format 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: 'List customer payments (AR) from KikoBooks.' The '(AR)' scope implicitly distinguishes it from the sibling search_bill_payments (AP). It is clear, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by its nature as a list/search tool. The description enumerates filter capabilities but gives no when-to-use guidance, no condition that selects it over search_bill_payments or get_payment, and no prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_proposalsA
Search proposals in KikoBooks. Filter by customer, status (draft, sent, signed, declined), name, source, or date range. Requires the Sales module — call get_enabled_modules first for CB orgs. Returns paginated results.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by proposal name | |
| page | No | Page number (default: 1) | |
| source | No | Filter by source | |
| status | No | Filter by proposal status (draft, sent, signed, declined, etc.) | |
| toDate | No | Created on/before (YYYY-MM-DD) | |
| orderBy | No | Sort column | |
| fromDate | No | Created on/after (YYYY-MM-DD) | |
| pageSize | No | Results per page (default: 15) | |
| customerId | No | Filter by customer ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the module-gating prerequisite and that results are paginated, but omits permission/auth requirements beyond the module check, whether the search is read-only, and any limits on result volume.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with the scope first, filters second, and the operational prerequisite third. No filler, nothing repeated, and the most decision-relevant information is 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 9-parameter, zero-required search with no output schema, the description covers scope, filters, pagination, and the module gate. It does not describe sort/orderBy behavior or the shape of returned proposal records, but "paginated results" gives the agent enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all nine parameters including the status enum values. The description's filter list (customer, status, name, source, date range) largely restates the schema rather than adding format or defaulting detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Search proposals in KikoBooks") and enumerates the filterable facets, which cleanly separates it from the sibling get_proposal (single-record fetch) and the search_* family. An agent can pick this tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete precondition ("Requires the Sales module — call get_enabled_modules first for CB orgs") that tells the agent when this tool will fail and how to check first. It stops short of naming alternatives (e.g., get_proposal for a known ID) or stating when not to use it, so it lands at 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_purchasesC
Search purchases (expenses) in KikoBooks. Supports filtering by vendor, status, date range, and text search.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| dateTo | No | Filter to date (YYYY-MM-DD) | |
| search | No | Search by vendor name, memo, or reference | |
| status | No | Filter by status (e.g., DRAFT, POSTED, VOIDED) | |
| dateFrom | No | Filter from date (YYYY-MM-DD) | |
| pageSize | No | Results per page (default: 50) | |
| vendorId | No | Filter by vendor ID | |
| sortColumn | No | Column to sort by | |
| sortDirection | No | Sort direction |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it adds almost nothing beyond 'Search' — it does not state that the operation is read-only, note pagination/sorting behavior, or mention any auth/permission requirements. Filtering dimensions are the only added 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?
Two compact sentences with the core purpose front-loaded and no filler. It is efficient, though it stops short of adding any information the schema does not already contain.
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 no annotations, the description should ideally indicate the shape of results (a paginated list of purchase records) and how the sort/pagination parameters interact. It covers the input filtering surface adequately but leaves the output and read-only nature implicit.
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 nine parameters (page, dateTo, search, status, dateFrom, pageSize, vendorId, sortColumn, sortDirection) are already documented in the schema. The description only summarizes the filter set at a high level, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Search) and resource (purchases/expenses) plus the filter dimensions supported, so the agent knows exactly what it retrieves. It does not differentiate itself from closely related siblings such as search_bills or search_payments, which is the main gap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternative tools for overlapping needs (search_bills, search_payments, get_purchase). The agent must infer usage purely from the name and filter list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_reconciliation_sessionsA
Search bank reconciliation sessions (open and completed) with filters by account and status. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| status | No | Filter by session status (e.g. InProgress / Completed) | |
| pageSize | No | Results per page (default: 20) | |
| accountId | No | Filter reconciliation sessions to a single bank account ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully declares 'Read-only', which is the key safety signal an agent needs, but it says nothing about pagination defaults/limits or what the result set contains, leaving real gaps for a no-annotation 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?
Two short sentences, zero filler, with the resource and scope front-loaded ahead of the read-only note. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search over four fully documented optional params with no output schema, the description covers purpose, scope, and safety. Minor gap: it says 'open and completed' while the schema's status example reads 'InProgress / Completed', a small terminology mismatch.
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, pageSize, status, and accountId are already fully documented. The description's 'filters by account and status' restates two of them without adding syntax or value detail; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (search bank reconciliation sessions) and scopes it to open and completed sessions with account/status filters. It is distinguishable from the mutation siblings (start/complete/cancel_reconciliation) and get_reconciliation_summary, though it does not name them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the search verb and the '(open and completed)' scope note, but there is no explicit when-to-use vs when-not guidance and no named alternative such as get_reconciliation_summary or the start/complete/cancel siblings. An agent must infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_recurring_schedulesA
Search recurring invoice schedules (templates that auto-generate invoices on a cadence) with filters. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| dateTo | No | Next-run date on/before (YYYY-MM-DD) | |
| sortBy | No | Sort column | |
| status | No | Filter by schedule status (e.g. Active / Paused) | |
| dateFrom | No | Next-run date on/after (YYYY-MM-DD) | |
| pageSize | No | Results per page (default: 50) | |
| customerId | No | Filter by customer ID | |
| searchTerm | No | Search text | |
| sortDirection | No | Sort direction | |
| recurrenceType | No | Filter by recurrence type (e.g. Monthly / Weekly) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden; it does at least declare 'Read-only,' which is the single most important behavioral fact for an unannotated tool. It says nothing about pagination semantics, result caps, or permissions, which leaves meaningful behavioral gaps.
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 resource and the definitional parenthetical, then the read-only reassurance. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a fully documented 10-parameter schema and no output schema to explain, the description covers the essentials for a search tool plus the read-only guarantee. It omits how the many filters interact or pagination behavior, but nothing critical to selection 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% with 10 well-documented parameters, so the schema already carries the semantics and the baseline is 3. The description adds no filter syntax, combination rules, or sorting hints beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) and resource (recurring invoice schedules) and even glosses the domain concept as 'templates that auto-generate invoices on a cadence,' which removes ambiguity about what is being searched. It does not explicitly contrast itself with sibling retrieval tools like get_recurring_schedule, so sibling 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?
'with filters' and 'Read-only' imply this is the list/browse operation rather than a fetch-by-id or mutation, but the description never states when to prefer it over get_recurring_schedule or the pause/resume/delete siblings. Usage is inferable from context, not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_sales_receiptsA
List sales receipts from KikoBooks. Sales receipts record instant payments (no invoice needed). Supports filtering by customer, status, payment method, and date range.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| dateTo | No | Filter to this date (YYYY-MM-DD) | |
| status | No | Filter by status (e.g., 'Draft', 'Posted') | |
| dateFrom | No | Filter from this date (YYYY-MM-DD) | |
| pageSize | No | Number of results per page (default: 50) | |
| searchTerm | No | Search by receipt number or description | |
| customer_id | No | Filter by customer ID | |
| paymentMethodCode | No | Filter by payment method code |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses useful semantic context (a sales receipt represents an instant payment needing no invoice), but says nothing about result ordering, pagination behavior beyond schema defaults, permissions, or volume/rate characteristics for a search operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the verb and resource, then the entity definition, then the filter capabilities. No filler and nothing that fails to earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with no output schema and fully described parameters, the description is nearly sufficient; it explains the entity and the filter surface. It lacks only guidance on result volume/pagination and how it differs from sibling search tools, which are minor gaps.
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 8 well-documented optional parameters, so the baseline is 3. The description summarizes the filter categories but adds no syntax, format, or interaction detail (e.g., how searchTerm combines with filters) 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?
States a specific verb and resource ('List sales receipts from KikoBooks') and adds a domain gloss ('record instant payments, no invoice needed') that helps distinguish it from invoice-oriented tools. However, it never names the closest siblings (search_payments, search_invoices, get_sales_receipt) to route the agent, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Lists the available filter axes (customer, status, payment method, date range), which implies how the tool is used, but gives no explicit when-to-use vs. alternatives, no prerequisites, and no statement of what it does not cover. Usage must be inferred from the filter list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_statementsB
Search customer statements (periodic AR statements sent to customers) with filters. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| dateTo | No | Statement date on/before (YYYY-MM-DD) | |
| sortBy | No | Sort column | |
| dateFrom | No | Statement date on/after (YYYY-MM-DD) | |
| pageSize | No | Results per page (default: 50) | |
| customerId | No | Filter by customer ID | |
| searchTerm | No | Search text | |
| sortDirection | No | Sort direction | |
| statementType | No | Filter by statement type | |
| deliveryStatus | No | Filter by delivery status (e.g. Draft / Sent) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose the key safety trait ("Read-only"), which is valuable, but says nothing about pagination behavior, result caps, or return shape despite page/pageSize parameters.
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 resource and purpose, with zero filler. Slightly terse relative to the tool's 10-parameter surface, but efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate but thin for a 10-parameter read tool with no output schema and no annotations: the description does not indicate what a statement record contains or what the filtered result set looks like. The fully-described schema compensates partially, keeping this at a minimum-viable 3.
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 10 parameters are already documented in the schema (dates, customerId, statementType, deliveryStatus, sorting, paging). The description adds no parameter-level meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource ("Search customer statements") and, importantly, disambiguates the resource with "periodic AR statements sent to customers," distinguishing it from bank statements. It does not name or differentiate against the sibling get_statement, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance: nothing says to use this for browsing/filtering multiple statements versus get_statement for a single known statement, or how it relates to send_statement/delete_statement. "Read-only" is a safety trait, not usage direction, so no exclusions or alternatives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_vendorsC
Search vendors in KikoBooks. Supports text search by name or company. Returns paginated results.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| search | No | Search by vendor name or company | |
| pageSize | No | Results per page (default: 50, max: 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that search is by name or company and that results are paginated, which is mildly useful, but says nothing about sorting, result limits, or what a match returns. For a search tool with zero annotation coverage, this is thin.
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, front-loaded sentences with no filler. Efficient, though 'in KikoBooks' is redundant given the toolset context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A search tool with no annotations and no output schema should explain what happens when search is omitted, how results are ordered, and roughly what is returned. The description omits all of that, leaving the most consequential behaviors undocumented.
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 three parameters including defaults and max. The description's mention of name/company text search and pagination adds no syntax or format beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (vendors) scoped to KikoBooks. It distinguishes itself from read tools like get_vendor but does not differentiate from the large family of sibling search_* tools beyond the resource name, which the tool name already conveys.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus get_vendor or the other search_* tools. It mentions pagination but offers no conditions, prerequisites, or exclusions. Usage is left entirely to inference from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_statementA
Send a customer statement to the customer (email). Show the recipient to the user and confirm before sending.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Statement ID to send | |
| deliveryMethod | No | Delivery method (e.g. Email) | |
| recipientEmail | No | Override recipient email address |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the key behavioral trait that an outbound email is sent and that confirmation is required first, which is valuable for a side-effecting tool, but it says nothing about permissions required, whether a sent statement can be recalled or resent, or what state change occurs on the statement record.
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 action and target are front-loaded before the safety instruction. Nothing repeats the tool name or 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 three-parameter, no-output-schema tool the description covers purpose, channel, and the required human confirmation step. It is close to complete, with only return/error outcome behavior left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with all three parameters documented, so the schema already carries the parameter burden. The description only hints at the 'recipient' concept (mapping loosely to recipientEmail) and adds no syntax or override 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?
States a specific verb (send) against a specific resource (customer statement), names the audience and the channel (the customer, email). This verb distinguishes it from the sibling get_statement, search_statements, and delete_statement without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an operational precondition (show recipient, confirm before sending) which implies the tool should be followed by human approval, but it never states when to prefer this over siblings like delete_statement or get_statement, nor any exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_statement_balanceA
Update the closing statement balance on an in-progress reconciliation session. Confirm with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Bank_ReconSession_Id to update | |
| statementBalance | Yes | New closing statement balance |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It discloses two useful facts: the session must be in-progress (a precondition) and user confirmation is required before invoking. It does not say whether the prior balance is overwritten, what happens if the session is closed, or what permissions are needed.
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 imperative sentences, with the action and its scope front-loaded and the safety instruction second. 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 numeric mutation with no output schema, the description covers the action, the state precondition, and the confirmation requirement. Return-value and error behavior are unspecified, but that is a minor gap given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters ('Bank_ReconSession_Id to update', 'New closing statement balance'), so the schema already documents them. The description only adds the word 'closing', which is marginal beyond the schema 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?
States a specific verb and resource ('Update the closing statement balance') and scopes it to an 'in-progress reconciliation session', which separates it from unrelated statement tools like delete_statement or send_statement. It does not name a sibling alternative, but the operation is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'in-progress reconciliation session' qualifier implies when the tool applies, and 'Confirm with the user first' gives a procedural prerequisite. There is no explicit when-not guidance or reference to alternatives such as start_reconciliation or complete_reconciliation for other session states.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_reconciliationA
Start a bank reconciliation session for an account over a statement period, seeded with the closing statement balance. Confirm with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Optional notes | |
| periodEnd | Yes | Statement period end (YYYY-MM-DD) | |
| periodStart | Yes | Statement period start (YYYY-MM-DD) | |
| bank_Account_Id | Yes | Bank_Account_Id to reconcile | |
| statementBalance | Yes | Closing statement balance from the bank statement |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden. It usefully discloses that the session is 'seeded with the closing statement balance' and that user confirmation is required, but it says nothing about irreversibility, effect on any pre-existing session for the same account/period, required permissions, or what the tool 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?
Two tightly written sentences with the action and its inputs front-loaded and the confirmation caveat last. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a state-creating tool with no annotations and no output schema, the description covers the inputs and the confirmation requirement but omits side effects, return value, and interaction with existing reconciliation sessions. It is adequate but leaves meaningful gaps 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%, so the schema already documents all five parameters including formats (YYYY-MM-DD) and semantics. The description restates account, period, and closing balance without adding syntax or edge-case meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource ('Start a bank reconciliation session') and adds scope details (an account, over a statement period, seeded with the closing statement balance). It implicitly separates itself from the reconciliation siblings (complete_reconciliation, cancel_reconciliation, set_statement_balance) but never names them, so differentiation is inferred rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Confirm with the user first' is a real workflow guideline for invoking this tool. However, there is no guidance on when this tool should be used instead of the sibling set_statement_balance, complete_reconciliation, or the search_reconciliation_sessions tools, nor any stated prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_accountC
Update an existing account in the KikoBooks chart of accounts. Provide the account ID and the fields to update.
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | ||
| account_id | Yes | The GL Account ID to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden for a mutation tool. It does not say whether this is a partial or full replacement update, what happens to fields omitted from the 'account' object, whether permissions are required, or whether the change is reversible/auditable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the action front-loaded and no filler. The second sentence is mildly boilerplate but does point the caller at the two required inputs.
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 mutation tool with no annotations, no output schema, a nested object parameter, and only 50% schema coverage should do considerably more. Missing partial-update semantics, required-account existence assumptions, and failure behavior leave real gaps for an agent.
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 only 50%, and the description adds no field-level meaning beyond 'the fields to update'. The nested 'account' object itself has no schema description, and the description does not clarify partial-update semantics for accountName, description, accountTypeCode, or parentGLAccountId.
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 ('Update an existing account') and scopes it to the 'KikoBooks chart of accounts', which is clear enough to separate it from create_account/get_account/search_accounts by naming convention. It lacks an explicit contrast with those siblings, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence ('Provide the account ID and the fields to update') is a parameter instruction, not usage guidance. There is no statement of when to use this versus create_account (new account) or get_account (read), nor any prerequisite or state requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_billB
Update an existing bill in KikoBooks. Only DRAFT/PENDING bills can be fully edited.
| Name | Required | Description | Default |
|---|---|---|---|
| bill | Yes | ||
| bill_id | Yes | The Bill ID to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden. It discloses only one trait (editable statuses), but says nothing about what happens to an APPROVED/VOIDED bill, whether this is a partial/patch update, whether omitted fields are preserved or cleared, or what permissions are required for a mutation.
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 tight sentences with the core action front-loaded and the key precondition second. Nothing redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, a nested object parameter, and partial schema coverage, the description is too thin. It omits update semantics (full vs. partial), behavior for non-editable statuses, and any notion of the result, leaving real gaps an agent must guess at.
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 only 50% — the top-level 'bill' container object has no description, and the description text adds no semantics for any parameter. It neither explains the container's shape nor clarifies that only a subset of fields is updatable, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update an existing bill') and names the product domain (KikoBooks), so an agent can identify the operation immediately. It does not distinguish itself from siblings such as void_bill, update_purchase, or update_invoice, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The constraint 'Only DRAFT/PENDING bills can be fully edited' gives an important precondition for use, but it is left ambiguous — it implies APPROVED/VOIDED bills can be partially edited without saying how, and it never names alternatives (e.g. void_bill to cancel an APPROVED bill). Usage is implied rather than explicitly routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_customerC
Update an existing customer in KikoBooks. Provide the customer ID and the fields to update.
| Name | Required | Description | Default |
|---|---|---|---|
| customer | Yes | ||
| customer_id | Yes | The Customer ID to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing. It does not say whether this is a partial or full-replacement update, what happens to fields omitted from the customer object, whether the caller needs particular permissions, or whether the change is reversible. For a mutation tool with zero annotation coverage this is a real gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler, and the verb/resource statement is front-loaded. It is efficient, though the second sentence is close to restating the schema rather than earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, a nested object parameter, and only 50% schema description coverage, the definition leaves too much unspecified. An agent cannot tell whether the update is partial or complete, what the response will be, or what errors to expect.
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 merely restates the schema ('provide the customer ID and the fields to update'), adding no meaning about update semantics such as whether unspecified fields are preserved. With only 50% schema description coverage in the nested customer object (termsCode, currencyCode and the billing address fields are undocumented), the description fails to compensate for the missing 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?
States a specific verb and resource ('Update an existing customer in KikoBooks'), which is clear enough to distinguish it from search_customers, get_customer, create_customer, and delete_customer. It does not, however, do anything to set it apart from the other update_* siblings (update_vendor, update_account) beyond the resource name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives input instructions ('Provide the customer ID and the fields to update'), not usage guidance. There is no statement of when this tool is appropriate versus update_vendor/update_account, nor any prerequisites, exclusions, or warnings about the operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_dealA
Update an existing CRM deal. Supply the deal_id and the full deal object (leadId, pipelineStageId, and dealName are required). Use this to change value, status, close date, or probability. Requires the Sales module and the write scope. Read the current deal first (get_deal), then confirm changes.
| Name | Required | Description | Default |
|---|---|---|---|
| deal | Yes | ||
| deal_id | Yes | The CRM deal ID to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does meaningfully: it discloses that a full deal object must be supplied (implying overwrite rather than partial patch), states the permission prerequisites (Sales module + write scope), and recommends a read-then-confirm workflow. It omits behavior on unmapped fields and does not describe the response, though no output schema exists to lean on.
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 tight sentences, front-loaded with purpose, then parameters, then usage, then permissions/workflow. Every sentence contributes, though the required-field enumeration and the changeable-field list brush against redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with a nested object, no annotations, and no output schema, this is fairly complete: purpose, required fields, overwrite semantics, prerequisites, and a safe workflow are all covered. It leaves out error/partial-update behavior but nothing critical to calling it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 50% schema description coverage and a nested deal object, the description adds real meaning beyond the schema: it clarifies the 'full deal object' contract, restates the three required subfields, and points at the fields worth changing (value, status, close date, probability). The required-field list partially duplicates the schema's required array, keeping it out of 5 territory.
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 ('Update an existing CRM deal') that separates it from get_deal, create_deal, and search_deals. It also scopes the mutation ('change value, status, close date, or probability'), implicitly distinguishing it from move_deal_stage. It stops short of explicitly naming those siblings as 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?
Gives concrete when-to-use context ('change value, status, close date, or probability') and a clear workflow prerequisite: read the deal first via get_deal, then confirm changes. It names get_deal as the read alternative but offers no explicit when-not-to-use or exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_depositA
Update a DRAFT bank deposit. Posted deposits cannot be edited. Preview and confirm with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Deposit ID to update (DRAFT only) | |
| lines | Yes | Deposit lines | |
| depositDate | Yes | Deposit date (YYYY-MM-DD) | |
| cashBackMemo | No | Cash-back memo | |
| currencyCode | No | ISO currency code | |
| cashBackAmount | No | Cash-back amount withheld | |
| bank_Account_Id | Yes | Destination Bank_Account_Id | |
| cashBackAccount_Id | No | GL account id for cash back | |
| depositDescription | No | Deposit description | |
| depositToGL_Account_Id | Yes | Destination GL cash account id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that only DRAFT deposits are mutable, that posted deposits are immutable, and that user confirmation is required before execution. However, it does not explain whether the lines array replaces all existing lines, how omitted fields are treated, or whether special permissions are needed — significant gaps for a multi-line mutation.
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-loading purpose, the key constraint, and the required workflow. Every sentence earns its place with no redundant or filler text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 10-parameter, nested mutation with no annotations and no output schema, the description supplies the critical business rule (DRAFT only) and the mandatory confirmation step. The schema's 100% coverage handles parameter details, though line-replacement semantics remain unstated — a minor gap relative to the schema's richness.
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 ten parameters including nested line fields are already documented in the schema. The description adds no parameter-level meaning, which is acceptable at the baseline when the schema is complete.
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 ('Update a DRAFT bank deposit') and adds the critical scope qualifier 'DRAFT' that implicitly separates it from siblings like post_deposit, void_deposit, and delete_deposit. An agent can identify what the tool does and when it is valid without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states the exclusion ('Posted deposits cannot be edited') and prescribes a required workflow ('Preview and confirm with the user first'). It does not name an alternative tool for posted deposits, so it stops short of a full when/when-not/alternatives map.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_fixed_assetA
Update a fixed asset. Financial fields are locked once depreciation has been posted. Confirm with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | GL_FixedAsset_Id to update | |
| location | No | Location | |
| poNumber | No | Purchase order number | |
| assetName | Yes | Asset name | |
| department | No | Department | |
| description | No | Description | |
| modelNumber | No | Model number | |
| categoryCode | No | Asset category code | |
| manufacturer | No | Manufacturer | |
| salvageValue | No | Salvage/residual value | |
| serialNumber | No | Serial number | |
| assetAccountId | No | GL asset account id | |
| acquisitionCost | Yes | Acquisition cost | |
| acquisitionDate | Yes | Acquisition date (YYYY-MM-DD) | |
| assignedToUserId | No | Assigned user id | |
| usefulLifeMonths | No | Useful life in months | |
| acquisitionMethod | No | Acquisition method | |
| vendorCustomerIdStr | No | Vendor/customer reference | |
| depreciationStartDate | No | Depreciation start date (YYYY-MM-DD) | |
| depreciationMethodCode | No | Depreciation method code | |
| accumDepreciationAccountId | No | GL accumulated-depreciation account id | |
| depreciationExpenseAccountId | No | GL depreciation-expense account id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that financial fields are locked once depreciation is posted and that user confirmation is required, but omits permissions/authorization needs, whether omitted fields are preserved, and what the mutation returns or whether it is reversible.
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, purpose front-loaded, constraint and confirmation instruction following. Every sentence earns its place with no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 22-parameter mutation tool with no annotations and no output schema, the description is thin. The lock and confirmation notes are valuable, but it leaves update semantics (partial vs full replacement), permissions, and result behavior 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 all 22 parameters are already documented in the schema; baseline is 3. The 'financial fields are locked' note hints at which parameters are constrained but doesn't name which of the cost/date/depreciation fields are affected or add format 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 and resource ('Update a fixed asset'), so the agent knows it mutates an existing fixed-asset record rather than creating, disposing, or reading one. However, it never names a sibling to differentiate against (e.g. create_fixed_asset, dispose_fixed_asset), so it stays 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?
'Confirm with the user first' is genuine usage guidance for an agent-facing mutation, and the depreciation-lock note frames a precondition. But there is no explicit when-not-to-use or routing to alternatives among siblings, so 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.
update_invoiceA
Update an existing invoice in KikoBooks. Only DRAFT invoices can be fully edited. For posted invoices, only status changes and memo updates are allowed.
| Name | Required | Description | Default |
|---|---|---|---|
| invoice | Yes | ||
| invoice_id | Yes | The Invoice ID to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the single most consequential behavioral rule: editability is gated on invoice state, with posted invoices reduced to status and memo changes. It omits what actually happens when a disallowed field is submitted (silent drop vs. error), whether changes are reversible, and any auth requirements, so the disclosure is important but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, and the resource identification is front-loaded ahead of the state-dependent constraint. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and a nested payload, the description covers the critical state gate but leaves gaps: no statement of what the response returns, how rejected field edits are surfaced, or whether status changes require specific permissions. Adequate, but not complete for a write operation of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% and the nested `invoice` object carries no top-level description, so the schema only partly documents the payload. The description compensates by tying specific fields (status, memo) to the posted-invoice restriction, but it never addresses dueDate, termsCode, or which status transitions are actually permitted, so it adds partial rather than full meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Update an existing invoice in KikoBooks'), which is unambiguous and clearly distinct from create_invoice/get_invoice/search_invoices. It stops short of naming any sibling tool explicitly, so an agent must infer the boundaries itself, but the purpose itself is unmistakable.
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 conditional guidance tied to the invoice's state: full edit for DRAFT, limited edit (status and memo only) for posted invoices. That is genuinely useful when-to-use context, though it never names sibling alternatives (e.g., void_bill for voiding instead of status-editing) or states prerequisites such as required permissions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_itemC
Update an existing product/service item in KikoBooks.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| item_id | Yes | The Item ID to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says "update" but omits whether this is a partial or full replacement of the item, what happens to fields not supplied, whether changes are reversible, and any permission requirements — significant gaps for a mutation tool with zero annotation coverage.
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 wasted words. It is appropriately brief, though arguably under-specified rather than concise, which 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 mutation tool with no annotations, no output schema, a nested object parameter, and only 50% schema coverage, the description is too thin. It should at minimum clarify partial-vs-full update semantics and what a successful response looks like.
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 only 50% and the description adds no parameter meaning beyond the schema. It does not explain the required item_id, nor clarify whether the nested item object's fields are all required or whether omitting one leaves it unchanged — a critical ambiguity for an update operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb+resource ("Update an existing product/service item") and the verb distinguishes it from the get_item/search_items/create_item siblings. However, it does not differentiate from the broader update_* family or clarify scope, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as create_item or the other update_* tools, and no prerequisites or preconditions are stated. The agent must infer usage entirely from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_job_statusA
Update a job's (Project/Engagement) status. Requires the Workflow module and the write scope. Read the current job first (get_job) and confirm the new status with the user before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | The job (Project/Engagement) ID to update | |
| status | Yes | The new job status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose real behavioral facts: a module dependency, a write-scope authorization requirement, and a read-before-write plus user-confirmation protocol for a mutation. What it omits is what happens on an invalid or disallowed status, and whether the change is reversible or triggers downstream effects.
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 action, then prerequisites, then the safe-call procedure. Every sentence adds information an agent needs and there is no restatement of the name or 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?
For a two-parameter mutation with no annotations and no output schema, the description supplies purpose, auth prerequisites, and a safe invocation sequence, which covers most of what an agent needs. The remaining hole is the set of valid status values, which is absent from both the schema and the description and will force the agent to guess.
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 of 3 applies. The description adds nothing at the parameter level, and notably leaves the critical gap unaddressed: 'status' has no enum and neither the schema nor the description says which status values are accepted.
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 ('Update a job's status') and usefully disambiguates the overloaded term 'job' as Project/Engagement, so an agent knows exactly what object is being mutated. It does not, however, distinguish itself from the adjacent sibling update_task_status or explain how job status differs from task status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit prerequisites ('Requires the Workflow module and the write scope') and a concrete pre-call procedure: read the current job with get_job and confirm the new status with the user. It names a sibling tool to call first and the condition for doing so, which is exactly the routing guidance the dimension asks for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_purchaseC
Update an existing purchase (expense) in KikoBooks.
| Name | Required | Description | Default |
|---|---|---|---|
| purchase | Yes | ||
| purchase_id | Yes | The Purchase/Expense ID to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and largely fails it. It does not say whether the update is partial (merge) or full replacement, whether fields omitted from the 'purchase' object are preserved, whether status can be set to VOIDED here versus via a void tool, or what permissions are required.
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 wasted words and the action front-loaded, but the brevity reflects under-specification rather than disciplined economy. It fits on one line but conveys almost nothing an agent could not guess from the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and a nested required object with 50% schema coverage, this description is too thin. An agent cannot know the update semantics, side effects on status, or error behavior from 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 only 50%; the nested 'purchase' object's properties (memo, status, referenceNumber) are documented in the schema, but the object itself and the semantics of a partial update are not. The description adds no parameter-level meaning beyond the schema, leaving the merge/replace question unresolved.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Update an existing purchase'), and the parenthetical '(expense)' clarifies KikoBooks' terminology. However, it gives no field-level or scope detail and does nothing to distinguish it from the many sibling update_* tools (update_bill, update_deposit, update_invoice).
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 versus update_bill, update_deposit, or delete_purchase, nor any prerequisite such as needing a purchase_id obtained from search_purchases or get_purchase. The agent must infer the workflow entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_task_statusA
Update a job task's status (e.g. mark a task complete). Requires the Workflow module and the write scope. List tasks first (list_job_tasks) and confirm the new status with the user before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | The new task status (e.g. Open, In Progress, Completed) | |
| task_id | Yes | The task ID to update | |
| sub_domain | No | Optional SubDomain context the endpoint accepts; supply only if a prior call reports it is required |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does a good job: it discloses required module/scope and a user-confirmation safeguard before mutating. It stops short of describing reversibility, side effects on the job, or error behavior, so it is not fully 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?
Three short sentences, front-loaded with the action then prerequisites then workflow. Every sentence earns its place and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter mutation tool with full schema coverage and no output schema, the description covers prerequisites, sequencing, and a safety confirmation. It omits edge behavior such as invalid statuses or what happens on a missing task, but the essentials for correct invocation are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so task_id, status, and sub_domain are already documented. The description's status examples duplicate the schema's examples and add no syntax or constraint details beyond it, making the baseline of 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 states a specific verb and resource: updating a job task's status, with a concrete example (marking a task complete). It distinguishes this from the sibling update_job_status by scoping it to a task and points to list_job_tasks as the companion tool.
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 explicit preconditions (Workflow module and write scope) and a prescribed workflow: list tasks first with list_job_tasks and confirm the new status with the user before calling. This is unusually strong usage guidance for a mutation tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_vendorC
Update an existing vendor in KikoBooks. Provide the vendor ID and the fields to update.
| Name | Required | Description | Default |
|---|---|---|---|
| vendor | Yes | ||
| vendor_id | Yes | The Vendor ID to update |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden for a mutation tool. It does not disclose whether this is a partial or full replacement update, whether omitted fields are cleared, what permissions are required, or what happens if the vendor ID does 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?
Two short sentences, front-loaded with the action and followed by the required inputs. It is efficient with no wasted words, though it is arguably under-specified rather than optimally concise.
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 mutation tool with no annotations, no output schema, and a nested object containing a dozen undocumented fields. The description does not address update semantics, error behavior, or the shape of the nested payload, leaving significant gaps an agent would need filled.
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 only 50%: vendor_id is documented in the schema, but the nested 'vendor' object and its twelve sub-properties have no descriptions at all. The description adds nothing beyond restating that fields should be provided, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Update an existing vendor in KikoBooks'), which is unambiguous about what the tool does. It does not differentiate itself from siblings like create_vendor, delete_vendor, or get_vendor, but the verb+resource combination makes the purpose 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?
It says to 'Provide the vendor ID and the fields to update,' which is minimal how-to guidance, but there is no when-to-use context, no prerequisites, and no mention of alternatives (e.g., when to update vs. delete or create). No exclusions or conditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
void_billA
Void a bill in KikoBooks. Voiding marks the bill as cancelled and reverses any accounting impact. Only applicable to posted bills.
| Name | Required | Description | Default |
|---|---|---|---|
| bill_id | Yes | The Bill ID to void |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does disclose non-obvious behavior: the bill is marked cancelled rather than removed, and accounting impact is reversed. The missing piece is reversibility of the void itself and any permission or state requirements beyond 'posted', which for an irreversible accounting action would be worth stating.
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 zero filler: identity, effect, precondition, in that order. The most decision-relevant constraint (posted-only) is present and 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 single-parameter mutation with no output schema and no annotations, the description covers purpose, effect, and the key precondition. It does not address permissions, irreversibility of the void, or what a successful response indicates, but the core decision inputs are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (bill_id) and schema description coverage is 100%, so the schema already fully documents it. The description adds nothing about the parameter's format or source, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Void a bill') and immediately defines what voiding means mechanically ('marks the bill as cancelled and reverses any accounting impact'). This distinguishes it from sibling mutations like update_bill, delete_purchase, or void_bill_payment without needing to name them, since the resource and effect are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear applicability precondition — 'Only applicable to posted bills' — which tells the agent when the call will succeed versus fail. It stops short of naming what to do for a non-posted bill (edit via update_bill? delete?), so it lacks an explicit alternative, but the condition is concrete rather than implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
void_bill_paymentA
Void a bill payment (vendor payment) in KikoBooks. Voiding reverses the payment's accounting impact without physically deleting the record.
| Name | Required | Description | Default |
|---|---|---|---|
| payment_id | Yes | The Bill Payment ID to void |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose the core mutation semantic: voiding reverses the payment's accounting impact rather than deleting the record. It does not cover reversibility of the void, permission requirements, or error conditions, which would be needed for a full 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the action and its key semantic distinction front-loaded. No filler and no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter void tool with no output schema, the description supplies the essential semantics (reversal, no deletion). It omits permissions, post-void state, and confirmability, so a minor gap remains, but nothing critical for calling it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single payment_id parameter, so the schema already documents it fully. The description adds no parameter-level detail (format, source of the ID), so the baseline of 3 for a schema-covered tool 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 names a specific verb ('Void') and a precise resource ('bill payment (vendor payment) in KikoBooks'). The parenthetical and the distinction from physical deletion make it separable from neighbors like void_bill and delete_statement 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?
Usage is implied by the contrast with deletion: it signals that this is the tool for reversing a payment while keeping the record. However, it never explicitly states when to choose this over delete, void_bill, or reverse_journal_entry, nor any prerequisites. Adequate but leaves the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
void_depositA
Void a deposit (sets status to VOID with a reversing effect). Use instead of delete for posted deposits. Confirm with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Deposit ID to void | |
| voidReason | No | Reason for voiding |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the core semantics: the record is retained with status VOID and the effect is reversing rather than deleting. However, it does not state whether a void is reversible, what happens to downstream/linked records, or what permissions or error conditions apply to a mutation of this weight.
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, zero filler, and correctly front-loaded: the verb and effect come first, the sibling disambiguation second, and the safety instruction last. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation with no annotations and no output schema, the description covers purpose, state outcome, alternative selection, and a confirmation safeguard, which is enough to invoke it correctly. It stops short of the irreversibility and failure-mode details that would make it fully self-sufficient.
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 'id' and 'voidReason' documented in the schema itself, so the baseline of 3 applies. The description adds no syntax, format, or constraint detail (e.g., whether voidReason is required in practice or has a length limit) beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Void a deposit') and goes further by naming the resulting state change and its accounting effect ('sets status to VOID with a reversing effect'). It also differentiates itself from the closely related sibling delete_deposit, so an agent can choose between them without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the alternative ('Use instead of delete for posted deposits') and the condition (posted vs. unposted) that selects it, plus a pre-invocation prerequisite ('Confirm with the user first'). This is the when/when-not/alternative structure at full strength.
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.
116 tool updates
v0.2.9- First observed
activate_recurring_schedule - First observed
cancel_reconciliation - First observed
complete_reconciliation - First observed
copy_proposal - First observed
create_account - First observed
create_bill - First observed
create_bill_payment - First observed
create_credit_memo - First observed
create_customer - First observed
create_deal - First observed
create_deposit - First observed
create_fixed_asset - First observed
create_invoice - First observed
create_item - First observed
create_job_from_proposal - First observed
create_journal_entry - First observed
create_lead - First observed
create_payment - First observed
create_purchase - First observed
create_sales_receipt - First observed
create_vendor - First observed
delete_customer - First observed
delete_deposit - First observed
delete_purchase - First observed
delete_recurring_schedule - First observed
delete_statement - First observed
delete_vendor - First observed
dispose_fixed_asset - First observed
generate_invoice_from_job - First observed
generate_invoice_from_proposal - First observed
generate_recurring_invoice - First observed
get_account - First observed
get_ap_aging - First observed
get_ar_aging - First observed
get_bank_account - First observed
get_bank_transaction - First observed
get_bill - First observed
get_bill_payment - First observed
get_business_health - First observed
get_cash_position - First observed
get_connection_status - First observed
get_credit_memo - First observed
get_customer - First observed
get_deal - First observed
get_deposit - First observed
get_enabled_modules - First observed
get_expense_by_category - First observed
get_fixed_asset - First observed
get_income_by_category - First observed
get_invoice - First observed
get_item - First observed
get_job - First observed
get_journal_entry - First observed
get_lead - First observed
get_organization_details - First observed
get_payment - First observed
get_pipeline - First observed
get_profit_and_loss - First observed
get_proposal - First observed
get_purchase - First observed
get_reconciliation_summary - First observed
get_recurring_schedule - First observed
get_sales_receipt - First observed
get_statement - First observed
get_trial_balance - First observed
get_vendor - First observed
list_job_tasks - First observed
move_deal_stage - First observed
pause_recurring_schedule - First observed
post_deposit - First observed
post_journal_entry - First observed
promote_deal_to_customer - First observed
resume_recurring_schedule - First observed
reverse_journal_entry - First observed
run_depreciation - First observed
search_accounts - First observed
search_bank_accounts - First observed
search_bank_transactions - First observed
search_bill_payments - First observed
search_bills - First observed
search_credit_memos - First observed
search_customers - First observed
search_deals - First observed
search_deposits - First observed
search_fixed_assets - First observed
search_invoices - First observed
search_items - First observed
search_jobs - First observed
search_journal_entries - First observed
search_leads - First observed
search_payments - First observed
search_proposals - First observed
search_purchases - First observed
search_reconciliation_sessions - First observed
search_recurring_schedules - First observed
search_sales_receipts - First observed
search_statements - First observed
search_vendors - First observed
send_statement - First observed
set_statement_balance - First observed
start_reconciliation - First observed
update_account - First observed
update_bill - First observed
update_customer - First observed
update_deal - First observed
update_deposit - First observed
update_fixed_asset - First observed
update_invoice - First observed
update_item - First observed
update_job_status - First observed
update_purchase - First observed
update_task_status - First observed
update_vendor - First observed
void_bill - First observed
void_bill_payment - First observed
void_deposit
TDQS
Scored across 116 tools
Most tools map to a distinct resource plus action, and descriptions clarify boundaries such as search_bills versus search_bill_payments. A few overlaps remain—update_deal versus move_deal_stage, get_payment versus get_bill_payment, and search_accounts versus search_bank_accounts—but overall selection is largely manageable.
All tool names use snake_case with a verb_noun pattern (search_/get_/create_/update_/delete_/void_/post_/generate_). Minor variations such as list_job_tasks and action-specific verbs still follow the same predictable convention.
116 tools is extreme for a single MCP server, far beyond the 3-15 well-scoped range and well past the 50+ threshold. The surface is overwhelming and likely to strain tool selection, even if many tools are individually justified.
The server covers search/get/create/update for many core entities and includes reports, banking, fixed assets, and CRM flows. However, notable lifecycle gaps exist: proposals have no create/update/send tools, jobs lack direct creation and timesheet tools despite invoice-from-timesheet support, and invoices lack void/send operations.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
A Model Context Protocol server for Wix AI tools
Hosted MCP server for Mini Accountant: invoices, expenses, customers, analytics, tax estimates.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that connects AI assistants like Claude to Moneybird accounting software, enabling management of contacts, financial data, products, and business operations through natural language.41 npm29MIT
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables LLMs to securely interact with Alegra accounting API, allowing operations on invoices, contacts, and items data.112 npm1ISC
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables AI assistants to interact with Kanta API for managing clients, users, persons, and accessing risk summaries and firm information.1-
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that bridges Odoo ERP systems with AI agents, enabling them to access and manipulate partner information, accounting data, invoices, and perform financial reconciliation through a standardized interface.MIT