Skip to main content
Glama
samaxbytez

freeagent-mcp-server

by samaxbytez

freeagent-mcp-server

npm version License: MIT

MCP server for the FreeAgent accounting API. Provides 76 tools covering invoices, expenses, contacts, projects, timeslips, banking, bills, estimates, credit notes, accounting reports, and more.

Features

  • OAuth2 Authentication - Built-in browser-based auth flow with automatic token refresh

  • Company - Company info, business categories, tax timeline

  • Users - List, get, create, update, and delete users

  • Contacts - Full CRUD for clients and suppliers

  • Projects - Create and manage projects

  • Tasks - Manage project tasks with billing rates

  • Timeslips - Track time with start/stop timer support

  • Invoices - Create, send, and manage invoices with status transitions

  • Estimates - Quotes, estimates, and proposals with approval workflows

  • Bills - Manage supplier bills

  • Credit Notes - Issue and manage credit notes

  • Expenses - Track and categorize expenses

  • Banking - Bank accounts and transaction management

  • Categories - Browse accounting categories

  • Accounting Reports - Profit & loss, balance sheet, trial balance

Related MCP server: Cuéntica MCP

Prerequisites

  1. Sign up for a FreeAgent Developer account

  2. Register an application in the Developer Dashboard

  3. Set the OAuth redirect URI to http://localhost:3456/callback

  4. Note your Client ID and Client Secret

See the FreeAgent API Quick Start for detailed instructions.

Getting Started

1. Set environment variables

export FREEAGENT_CLIENT_ID="your_client_id"
export FREEAGENT_CLIENT_SECRET="your_client_secret"
# export FREEAGENT_SANDBOX=true  # uncomment to use sandbox instead of production

2. Authenticate (one-time)

npx freeagent-mcp-server auth

This opens your browser to authorize the app. The auth flow supports two modes:

  • Automatic (default) - A local server on port 3456 catches the OAuth redirect automatically. This is seamless when the port is available and the redirect URI is configured.

  • Manual paste fallback - If the redirect doesn't work (port busy, firewall, etc.), simply copy the full URL from your browser's address bar and paste it into the terminal. The URL will look like http://localhost:3456/callback?code=...&state=....

After approval, tokens are saved to ~/.freeagent-mcp/tokens.json and automatically refreshed when they expire.

3. Configure your MCP client

See the Configuration section below.

Installation

Requirements: Node.js 18 or later.

npx freeagent-mcp-server

Global install

npm install -g freeagent-mcp-server
freeagent-mcp

To pin a specific version, append @<version> (e.g. npm install -g freeagent-mcp-server@1.3.0).

Build from source

git clone https://github.com/samaxbytez/freeagent-mcp.git
cd freeagent-mcp
npm install
npm run build
npm start

Configuration

Environment Variables

Variable

Required

Description

FREEAGENT_CLIENT_ID

Yes*

OAuth2 client ID from Developer Dashboard

FREEAGENT_CLIENT_SECRET

Yes*

OAuth2 client secret from Developer Dashboard

FREEAGENT_SANDBOX

No

Set to true for sandbox (defaults to production)

FREEAGENT_ACCESS_TOKEN

No

Legacy: direct access token (skips stored token flow)

FREEAGENT_BASE_URL

No

Override API base URL

*Not required if using FREEAGENT_ACCESS_TOKEN directly.

Claude Desktop / Cowork

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "freeagent": {
      "command": "npx",
      "args": ["-y", "freeagent-mcp-server"],
      "env": {
        "FREEAGENT_CLIENT_ID": "your_client_id",
        "FREEAGENT_CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}

This works with both Claude Desktop chat and Claude Cowork. Make sure to run npx freeagent-mcp-server auth in your terminal first to complete the one-time OAuth setup.

Claude Code

Add to your .mcp.json:

{
  "mcpServers": {
    "freeagent": {
      "command": "npx",
      "args": ["-y", "freeagent-mcp-server"],
      "env": {
        "FREEAGENT_CLIENT_ID": "your_client_id",
        "FREEAGENT_CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}

Architecture

freeagent-mcp/
├── src/
│   ├── index.ts              # Entry point, server setup
│   ├── auth.ts               # OAuth2 flow, token storage & refresh
│   ├── client.ts             # FreeAgent API HTTP client
│   ├── utils.ts              # Shared utilities (responses, logging)
│   ├── auth.test.ts          # Auth module tests
│   ├── client.test.ts        # Client tests
│   ├── utils.test.ts         # Utils tests
│   └── tools/
│       ├── company.ts        # Company info tools (3)
│       ├── users.ts          # User management tools (6)
│       ├── contacts.ts       # Contact CRUD tools (5)
│       ├── projects.ts       # Project management tools (5)
│       ├── tasks.ts          # Task management tools (5)
│       ├── timeslips.ts      # Time tracking tools (7)
│       ├── invoices.ts       # Invoice tools (9)
│       ├── estimates.ts      # Estimate tools (7)
│       ├── bills.ts          # Bill management tools (5)
│       ├── credit-notes.ts   # Credit note tools (5)
│       ├── expenses.ts       # Expense tracking tools (5)
│       ├── banking.ts        # Banking tools (7)
│       ├── categories.ts     # Category tools (2)
│       ├── accounting.ts     # Accounting report tools (5)
│       └── tools.test.ts     # Tool handler tests
├── package.json
├── tsconfig.json
└── smithery.yaml

Tools Reference

Company (3 tools)

Tool

Description

API Endpoint

freeagent_get_company

Get company information

GET /company

freeagent_list_business_categories

List business categories

GET /company/business_categories

freeagent_get_tax_timeline

Get tax timeline

GET /company/tax_timeline

Users (6 tools)

Tool

Description

API Endpoint

freeagent_list_users

List users with optional view filter

GET /users

freeagent_get_user

Get a specific user

GET /users/:id

freeagent_get_current_user

Get the authenticated user

GET /users/me

freeagent_create_user

Create a new user

POST /users

freeagent_update_user

Update a user

PUT /users/:id

freeagent_delete_user

Delete a user

DELETE /users/:id

Contacts (5 tools)

Tool

Description

API Endpoint

freeagent_list_contacts

List contacts with filtering and sorting

GET /contacts

freeagent_get_contact

Get a specific contact

GET /contacts/:id

freeagent_create_contact

Create a new contact

POST /contacts

freeagent_update_contact

Update a contact

PUT /contacts/:id

freeagent_delete_contact

Delete a contact

DELETE /contacts/:id

Projects (5 tools)

Tool

Description

API Endpoint

freeagent_list_projects

List projects with optional view filter

GET /projects

freeagent_get_project

Get a specific project

GET /projects/:id

freeagent_create_project

Create a new project

POST /projects

freeagent_update_project

Update a project

PUT /projects/:id

freeagent_delete_project

Delete a project

DELETE /projects/:id

Tasks (5 tools)

Tool

Description

API Endpoint

freeagent_list_tasks

List tasks with optional filtering

GET /tasks

freeagent_get_task

Get a specific task

GET /tasks/:id

freeagent_create_task

Create a new task for a project

POST /tasks

freeagent_update_task

Update a task

PUT /tasks/:id

freeagent_delete_task

Delete a task

DELETE /tasks/:id

Timeslips (7 tools)

Tool

Description

API Endpoint

freeagent_list_timeslips

List timeslips with date and status filters

GET /timeslips

freeagent_get_timeslip

Get a specific timeslip

GET /timeslips/:id

freeagent_create_timeslip

Create a new timeslip

POST /timeslips

freeagent_update_timeslip

Update a timeslip

PUT /timeslips/:id

freeagent_delete_timeslip

Delete a timeslip

DELETE /timeslips/:id

freeagent_start_timer

Start a timer on a timeslip

POST /timeslips/:id/timer

freeagent_stop_timer

Stop a timer on a timeslip

DELETE /timeslips/:id/timer

Invoices (9 tools)

Tool

Description

API Endpoint

freeagent_list_invoices

List invoices with view and contact filters

GET /invoices

freeagent_get_invoice

Get a specific invoice

GET /invoices/:id

freeagent_create_invoice

Create a new invoice

POST /invoices

freeagent_update_invoice

Update an invoice

PUT /invoices/:id

freeagent_delete_invoice

Delete an invoice

DELETE /invoices/:id

freeagent_mark_invoice_as_sent

Mark invoice as sent

PUT /invoices/:id/transitions/mark_as_sent

freeagent_mark_invoice_as_draft

Mark invoice as draft

PUT /invoices/:id/transitions/mark_as_draft

freeagent_mark_invoice_as_cancelled

Cancel an invoice

PUT /invoices/:id/transitions/mark_as_cancelled

freeagent_send_invoice_email

Email an invoice

POST /invoices/:id/send_email

Estimates (7 tools)

Tool

Description

API Endpoint

freeagent_list_estimates

List estimates with filters

GET /estimates

freeagent_get_estimate

Get a specific estimate

GET /estimates/:id

freeagent_create_estimate

Create a new estimate

POST /estimates

freeagent_update_estimate

Update an estimate

PUT /estimates/:id

freeagent_delete_estimate

Delete an estimate

DELETE /estimates/:id

freeagent_mark_estimate_as_sent

Mark estimate as sent

PUT /estimates/:id/transitions/mark_as_sent

freeagent_mark_estimate_as_approved

Mark estimate as approved

PUT /estimates/:id/transitions/mark_as_approved

Bills (5 tools)

Tool

Description

API Endpoint

freeagent_list_bills

List bills with view and date filters

GET /bills

freeagent_get_bill

Get a specific bill

GET /bills/:id

freeagent_create_bill

Create a new bill

POST /bills

freeagent_update_bill

Update a bill

PUT /bills/:id

freeagent_delete_bill

Delete a bill

DELETE /bills/:id

Credit Notes (5 tools)

Tool

Description

API Endpoint

freeagent_list_credit_notes

List credit notes with filters

GET /credit_notes

freeagent_get_credit_note

Get a specific credit note

GET /credit_notes/:id

freeagent_create_credit_note

Create a new credit note

POST /credit_notes

freeagent_update_credit_note

Update a credit note

PUT /credit_notes/:id

freeagent_delete_credit_note

Delete a credit note

DELETE /credit_notes/:id

Expenses (5 tools)

Tool

Description

API Endpoint

freeagent_list_expenses

List expenses with date and project filters

GET /expenses

freeagent_get_expense

Get a specific expense

GET /expenses/:id

freeagent_create_expense

Create a new expense

POST /expenses

freeagent_update_expense

Update an expense

PUT /expenses/:id

freeagent_delete_expense

Delete an expense

DELETE /expenses/:id

Banking (7 tools)

Tool

Description

API Endpoint

freeagent_list_bank_accounts

List bank accounts

GET /bank_accounts

freeagent_get_bank_account

Get a specific bank account

GET /bank_accounts/:id

freeagent_create_bank_account

Create a new bank account

POST /bank_accounts

freeagent_update_bank_account

Update a bank account

PUT /bank_accounts/:id

freeagent_delete_bank_account

Delete a bank account

DELETE /bank_accounts/:id

freeagent_list_bank_transactions

List transactions for a bank account

GET /bank_transactions

freeagent_get_bank_transaction

Get a specific bank transaction

GET /bank_transactions/:id

Categories (2 tools)

Tool

Description

API Endpoint

freeagent_list_categories

List all accounting categories

GET /categories

freeagent_get_category

Get a specific category by nominal code

GET /categories/:nominal_code

Accounting Reports (5 tools)

Tool

Description

API Endpoint

freeagent_get_profit_and_loss

Get profit and loss summary

GET /accounting/profit_and_loss/summary

freeagent_get_balance_sheet

Get balance sheet

GET /accounting/balance_sheet

freeagent_get_opening_balances

Get opening balances

GET /accounting/balance_sheet/opening_balances

freeagent_get_trial_balance

Get trial balance summary

GET /accounting/trial_balance/summary

freeagent_get_trial_balance_opening

Get trial balance opening balances

GET /accounting/trial_balance/summary/opening_balances

Example Prompts

  • "Show me the company information from FreeAgent"

  • "List all active contacts"

  • "Create a new invoice for contact 12345 dated today with 30 day payment terms"

  • "How much time did I log this week?"

  • "Start a timer on timeslip 67890"

  • "Show my profit and loss for the current year"

  • "List all overdue invoices"

  • "Create an expense for lunch at $25 under the entertainment category"

  • "What's my current balance sheet?"

  • "List all open bills from suppliers"

Development

# Install dependencies
npm install

# Type check
npm run type-check

# Run tests
npm test

# Run tests in watch mode
npm run test:watch

# Build
npm run build

# Lint
npm run lint

# Format
npm run format

Adding New Tools

  1. Create a new file in src/tools/ (or add to an existing one)

  2. Follow the pattern: export a registerXxxTools(server, client) function

  3. Register each tool with server.tool() or server.registerTool()

  4. Always use logToolCall(), jsonResponse(), and errorResponse()

  5. Import and call the register function in src/index.ts

  6. Add tests in src/tools/tools.test.ts

Troubleshooting

"Missing credentials" error on startup Set FREEAGENT_CLIENT_ID and FREEAGENT_CLIENT_SECRET environment variables, then run npx freeagent-mcp-server auth to authenticate.

"No stored tokens found" You need to complete the one-time auth flow first: npx freeagent-mcp-server auth

Authentication times out If the automatic redirect doesn't work, copy the full URL from your browser's address bar after approving and paste it into the terminal. Ensure your FreeAgent app's redirect URI is set to http://localhost:3456/callback.

Port 3456 is busy The auth flow will automatically fall back to manual paste mode. Just paste the redirect URL from your browser after approving.

401 Unauthorized errors Your tokens may have been revoked. Re-run npx freeagent-mcp-server auth to re-authenticate.

"FreeAgent API error (403)" Your token may not have the required permission level. Check that your FreeAgent app has the appropriate access scopes.

Sandbox vs Production By default the server connects to the FreeAgent production API. Set FREEAGENT_SANDBOX=true to use the sandbox.

Tool not found Ensure you're using the correct tool name with the freeagent_ prefix (e.g., freeagent_list_invoices, not list_invoices).

Empty responses Some endpoints return empty responses for successful DELETE operations. This is expected behavior.

Releasing

Releases are automated from Conventional Commits — see RELEASING.md. In short: merging feat:/fix: PRs to main opens a release PR (version bump + changelog); merging that PR publishes to npm.

Changelog

See CHANGELOG.md for the release history. The latest published version is shown by the npm badge at the top of this README.

License

MIT

Available Tools

76 tools
freeagent_create_bank_accountB

Create a new bank account in FreeAgent

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesThe type of bank account
nameYesName for the bank account
bank_nameYesName of the bank
currencyNoCurrency code (e.g. GBP, USD)
opening_balanceNoOpening balance amount
is_personalNoWhether this is a personal account
is_primaryNoWhether this is the primary account
account_numberNoBank account number
sort_codeNoBank sort code
ibanNoIBAN number
bicNoBIC/SWIFT code

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only states creation but doesn't mention potential side effects, validations, permission requirements, or error conditions. Inadequate for a 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.

Conciseness4/5

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

The description is a single concise sentence. No wasted words, though it could be slightly more informative without losing conciseness.

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

Completeness2/5

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

Given the tool has 11 parameters, 3 required, no output schema, and no annotations, the one-sentence description is insufficient. It lacks information about return value, constraints, or how this tool fits in the broader workflow.

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

Parameters3/5

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

Schema coverage is 100% with all parameters described in the schema. The description adds no extra meaning beyond 'create bank account' – baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('create') and the resource ('bank account in FreeAgent'), and it distinguishes from sibling tools which deal with other entities or actions on bank accounts (list, get, update, delete).

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool vs alternatives like update_bank_account. No scenario context or prerequisites mentioned.

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

freeagent_create_billC

Create a new bill in FreeAgent. bill_items should be a JSON string array of objects with category (URL), description, total_value, and sales_tax_rate.

ParametersJSON Schema
NameRequiredDescriptionDefault
contactYesContact URL for the bill
referenceYesBill reference
dated_onYesBill date (YYYY-MM-DD)
due_onYesBill due date (YYYY-MM-DD)
bill_itemsYesJSON array of bill items, e.g. [{"category":"https://...","description":"Item","total_value":"100.00","sales_tax_rate":"20.0"}]
currencyNoCurrency code, e.g. GBP
commentsNoComments on the bill

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits but only provides the basic action. No mention of success/error responses, permissions, side effects, or idempotency.

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

Conciseness4/5

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

Single sentence, no fluff. However, it could be restructured to front-load more essential details without increasing length.

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

Completeness2/5

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

Given 7 parameters, 5 required, no output schema, and no annotations, the description is too sparse. It should explain the return value, required contacts context, and error handling.

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

Parameters3/5

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

Schema descriptions cover 100% of parameters. The description adds minor context about the bill_items format (JSON array with specific fields), but this is already present in the schema. Baseline 3 applies.

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

Purpose4/5

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

Clearly states 'Create a new bill in FreeAgent', which specifies the verb and resource. However, it does not differentiate from sibling tools like freeagent_create_invoice or freeagent_create_credit_note, but the resource name 'bill' is distinct enough.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives (e.g., updating a bill or creating other entities). Does not mention prerequisites or when not to use.

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

freeagent_create_contactA

Create a new contact in FreeAgent. Must provide either first_name and last_name, or organisation_name.

ParametersJSON Schema
NameRequiredDescriptionDefault
first_nameNoContact first name
last_nameNoContact last name
organisation_nameNoOrganisation name
emailNoContact email address
phone_numberNoContact phone number
address1NoAddress line 1
address2NoAddress line 2
address3NoAddress line 3
townNoTown or city
postcodeNoPostal code
countryNoCountry
default_payment_terms_in_daysNoDefault payment terms in days

TDQS

A3.8/5.0
Behavior2/5

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

No annotations present, so description must fully disclose behavior. It only states the constraint but omits authentication requirements, error conditions, side effects, or any behavioral traits beyond creation.

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

Conciseness5/5

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

Two sentences: first states purpose, second states constraint. No redundant information, well front-loaded.

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

Completeness2/5

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

No output schema, yet description does not clarify return value, success indication, or error scenarios. With 12 parameters and complex constraints, the description is incomplete.

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

Parameters4/5

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

Schema coverage is 100% with descriptions for each parameter. The description adds value by specifying the mandatory combination of name fields, which is not enforced in the schema.

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

Purpose5/5

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

Clearly states 'Create a new contact in FreeAgent' with a specific verb and resource, and distinguishes from other create tools by specifying the required fields.

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

Usage Guidelines4/5

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

Explicitly states the requirement to provide either first_name+last_name or organisation_name, giving clear context for when to use. However, no mention of when not to use or alternatives like update_contact.

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

freeagent_create_credit_noteC

Create a new credit note in FreeAgent

ParametersJSON Schema
NameRequiredDescriptionDefault
contactYesContact URL for the credit note
dated_onYesCredit note date in YYYY-MM-DD format
payment_terms_in_daysNoPayment terms in days
currencyNoCurrency code, e.g. GBP, USD
commentsNoComments or notes for the credit note
credit_note_itemsNoJSON array of credit note line items, each with item_type, quantity, price, description

TDQS

C2.8/5.0
Behavior2/5

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

No annotations provided, and the description only says 'create', implying mutation but no details on side effects, permissions, or response behavior. This is barely informative for an agent.

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

Conciseness3/5

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

The description is a single sentence, concise but not particularly informative. It wastes no words but could be more structured to include key behavioral hints.

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

Completeness2/5

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

With no output schema or annotations, the description lacks critical context: what a credit note is, how credit_note_items should be structured, or what happens after creation. Incomplete for an informed agent.

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

Parameters3/5

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

Schema description coverage is 100%, so each parameter has a description in the schema. The tool description adds no additional meaning beyond what the schema provides, earning the baseline score.

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

Purpose4/5

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

The description clearly states the action ('Create') and resource ('credit note'), distinguishing it from other create tools like freeagent_create_invoice. However, it lacks specificity about what a credit note is (e.g., for adjusting an invoice), but for a CRUD tool this is sufficient.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives like freeagent_create_invoice or freeagent_create_bill. No prerequisites, context, or exclusions provided.

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

freeagent_create_estimateB

Create a new estimate in FreeAgent

ParametersJSON Schema
NameRequiredDescriptionDefault
contactYesContact URL
estimate_typeYesType of estimate
dated_onYesEstimate date (YYYY-MM-DD)
currencyYesCurrency code
referenceNoEstimate reference
payment_terms_in_daysNoPayment terms in days
commentsNoComments on the estimate
estimate_itemsNoJSON array of estimate items with item_type, quantity, price, description

TDQS

B3/5.0
Behavior2/5

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

No annotations exist, and the description lacks behavioral details beyond 'create'. It does not mention side effects (e.g., triggering notifications), authorization needs, or default status after creation (e.g., draft).

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

Conciseness3/5

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

The description is concise (one sentence) but lacks important details, sacrificing completeness for brevity. While not overly verbose, it is under-specified.

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

Completeness2/5

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

With no output schema and no annotations, the description should provide more context, such as the expected state after creation (e.g., draft) or the structure of the 'estimate_items' parameter. It fails to compensate for the missing structured metadata.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters. The description adds no additional meaning beyond the schema's parameter descriptions.

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

Purpose5/5

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

The description 'Create a new estimate in FreeAgent' clearly states the verb 'create' and the resource 'estimate', distinguishing it from sibling tools like freeagent_create_invoice or freeagent_create_bill.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives (e.g., freeagent_update_estimate for modifications, freeagent_mark_estimate_as_sent for sending). No usage context or exclusions provided.

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

freeagent_create_expenseC

Create a new expense in FreeAgent

ParametersJSON Schema
NameRequiredDescriptionDefault
userYesUser URL for the expense owner
categoryYesCategory URL for the expense
dated_onYesDate of the expense (YYYY-MM-DD)
gross_valueYesGross value as a decimal string
currencyNoCurrency code (e.g. GBP, USD)
descriptionNoDescription of the expense
sales_tax_rateNoSales tax rate as a decimal string
projectNoProject URL to associate with
rebill_typeNoRebill type for the expense
receipt_referenceNoReceipt reference for the expense

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits, but it only states 'create a new expense'. It does not mention permissions, idempotency, side effects, or constraints beyond the schema, which is insufficient for a mutation operation.

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

Conciseness2/5

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

The description is concise at one sentence, but it is under-specified. It lacks crucial details that would help an agent use the tool correctly, making it too terse to be truly helpful.

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

Completeness1/5

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

Given the tool has 10 parameters, no output schema, and no annotations, the description is severely lacking. It does not explain return values, error conditions, or integration context, making it inadequate for proper tool invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents each parameter. The description adds no extra meaning or context beyond what the schema provides, so a baseline score of 3 is appropriate.

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

Purpose4/5

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

Description clearly states the verb 'create' and the resource 'expense', making the primary action evident. However, it could be more specific about what exactly is created (e.g., an expense record) and does not distinguish it from sibling tools 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.

Usage Guidelines2/5

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

No guidance provided on when to use this tool versus alternatives like create_bill or create_invoice. There is no mention of prerequisites, typical use cases, or exclusions, leaving the agent without context for decision-making.

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

freeagent_create_invoiceB

Create a new invoice in FreeAgent

ParametersJSON Schema
NameRequiredDescriptionDefault
contactYesContact URL (e.g. https://api.freeagent.com/v2/contacts/123)
dated_onYesInvoice date (YYYY-MM-DD)
payment_terms_in_daysYesPayment terms in days (e.g. 30)
referenceNoInvoice reference
currencyNoCurrency code (e.g. GBP, USD)
exchange_rateNoExchange rate
payment_methodsNoPayment methods
commentsNoComments to appear on the invoice
ec_statusNoEC status for EU VAT
invoice_itemsNoJSON string of array of invoice items. Each item has fields: item_type (Hours/Days/Weeks/Months/Years/Products/Comment/Rebilling), quantity (string), price (string), description (string)

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description bears full burden but only says 'Create a new invoice'. It does not disclose that creating an invoice is a write operation that generates a new resource, nor does it mention any side effects, authentication needs, or rate limits.

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

Conciseness4/5

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

The description is a single sentence, very concise and front-loaded. However, it could benefit from slightly more context without becoming verbose.

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

Completeness2/5

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

Given 10 parameters, no output schema, and no annotations, the description is minimal. It does not explain return values, error conditions, or the format of complex parameters like invoice_items (JSON string). The schema descriptions help but the description adds little.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds no extra meaning beyond what the schema already provides for parameters.

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

Purpose5/5

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

The description clearly states 'Create a new invoice in FreeAgent', using a specific verb (create) and resource (invoice), and it distinguishes from sibling tools like freeagent_create_bill or freeagent_create_credit_note.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, such as creating a bill or credit note. No prerequisites (e.g., contact must exist) or when not to use it are mentioned.

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

freeagent_create_projectC

Create a new project in FreeAgent

ParametersJSON Schema
NameRequiredDescriptionDefault
contactYesContact URL
nameYesProject name
statusYesProject status
budgetYesProject budget
budget_unitsYesBudget units
currencyYesCurrency code
normal_billing_rateNoNormal billing rate
hours_per_dayNoHours per day
billing_periodNoBilling period
is_ir35NoWhether the project is IR35
starts_onNoProject start date (YYYY-MM-DD)
ends_onNoProject end date (YYYY-MM-DD)
uses_project_invoice_sequenceNoWhether to use project invoice sequence

TDQS

C2.9/5.0
Behavior2/5

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

The description only says 'Create a new project', with no disclosure of behavioral traits such as return values, side effects, authentication requirements, or idempotency. With no annotations, the description should provide more context.

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

Conciseness4/5

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

The description is a single concise sentence with no waste. However, it is perhaps too terse given the complexity of the tool.

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

Completeness2/5

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

For a tool with 13 parameters, 6 required, and no output schema or annotations, the description is inadequate. It fails to explain expected behavior, return format, or error conditions, leaving the agent with insufficient context.

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

Parameters3/5

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

The input schema has 100% coverage of parameter descriptions, so the baseline is satisfied. The description adds no extra semantics beyond the schema's parameter descriptions, such as clarifying relationships between parameters or required fields.

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

Purpose4/5

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

The description clearly states the action 'Create' and resource 'project' in 'FreeAgent', which is sufficient to identify the tool's purpose. However, it does not distinguish this create tool from other create tools (e.g., freeagent_create_contact) or from the update tool.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. For example, it does not mention that a contact must exist before creating a project or that updating an existing project should use freeagent_update_project.

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

freeagent_create_taskCreate TaskB

Create a new task in FreeAgent. The project URL is required and passed as a query parameter.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject URL to create the task under (passed as query parameter)
nameYesName of the task
is_billableNoWhether the task is billable
billing_rateNoBilling rate for the task
billing_periodNoBilling period: hour, day, week, month, or year
statusNoTask status: Active, Completed, or Hidden

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only mentions that the project URL is passed as a query parameter, but it does not disclose any side effects, error conditions, or permission requirements. The agent cannot infer the safety or destructive nature of the operation beyond it being a 'create'.

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

Conciseness5/5

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

The description is extremely concise at two sentences, with the primary purpose stated first. No unnecessary words or details are included, and it is easy to scan.

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

Completeness2/5

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

Given 6 parameters, no output schema, and no annotations, the description is insufficiently complete. It does not explain what the tool returns, how to interpret the input fields, or any constraints or defaults. The agent lacks critical context for correct invocation.

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

Parameters3/5

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

The input schema has 100% coverage with descriptions for all 6 parameters. The description adds minimal value by restating that the project parameter is a URL and required, but does not provide additional meaning beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states that the tool creates a new task in FreeAgent. It also specifies that the project URL is required and passed as a query parameter, which differentiates it from other create tools for different entities. The purpose is specific and unambiguous.

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

Usage Guidelines2/5

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

The description does not provide any guidance on when to use this tool versus alternatives such as freeagent_update_task or other create tools. There are no explicit when-to-use or when-not-to-use instructions, leaving the agent to infer usage from the tool name alone.

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

freeagent_create_timeslipCreate TimeslipB

Create a new timeslip in FreeAgent for tracking time against a project task.

ParametersJSON Schema
NameRequiredDescriptionDefault
userYesUser URL
projectYesProject URL
taskYesTask URL
dated_onYesDate for the timeslip (YYYY-MM-DD)
hoursYesNumber of hours as a decimal string
commentNoOptional comment for the timeslip

TDQS

B3.4/5.0
Behavior2/5

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 only states 'create a new timeslip' without disclosing whether the operation is idempotent, what happens on duplicate, permissions needed, or return behavior. Minimal transparency.

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

Conciseness5/5

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

The description is a single, efficient sentence with no wasted words. It is front-loaded with the key action and resource.

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

Completeness2/5

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

For a create tool with 6 parameters and no annotations, the description is too minimal. It lacks information about return value, idempotency, error cases, or prerequisites (e.g., user/project must exist). Not complete enough for an agent to use confidently.

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

Parameters3/5

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

Schema description coverage is 100% with clear descriptions for each parameter (e.g., 'User URL', 'Date for the timeslip (YYYY-MM-DD)'). The tool description adds no extra parameter semantics beyond the schema, meeting the baseline.

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

Purpose5/5

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

The description clearly states the action (create), the resource (timeslip), and the context (tracking time against a project task). It distinguishes this from sibling tools like create_task or create_project.

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

Usage Guidelines3/5

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

The description does not provide explicit guidance on when to use this tool versus alternatives like freeagent_start_timer or freeagent_update_timeslip. The purpose is clear but usage context 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.

freeagent_create_userC

Create a new user in the FreeAgent account

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail address for the new user
first_nameYesFirst name of the user
last_nameYesLast name of the user
roleYesRole of the user in the company
permission_levelNoPermission level from 0 (no access) to 8 (full access)

TDQS

C2.9/5.0
Behavior2/5

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

The description only says 'Create a new user' with no annotations to supplement. It does not disclose behaviors such as whether an invite is sent, duplicate email handling, required caller permissions, or other side effects of this mutation.

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

Conciseness4/5

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

The description is a single sentence with no wasted words. It is efficient, though perhaps too brief for completeness.

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

Completeness2/5

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

For a creation tool with 5 parameters, no output schema, and no annotations, the description lacks important context about responses, error conditions, and post-creation behavior. It is incomplete.

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

Parameters3/5

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

Schema coverage is 100%, so the description does not need to add parameter details. It adds no extra meaning beyond what the schema already provides. Baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states 'Create a new user in the FreeAgent account', using a specific verb and resource. It distinguishes the tool from siblings which create other entities (e.g., bank accounts, contacts) by focusing on 'user'.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like update_user. No context on prerequisites, restrictions, or when not to use it is given.

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

freeagent_delete_bank_accountB

Delete a bank account from FreeAgent

ParametersJSON Schema
NameRequiredDescriptionDefault
bank_account_idYesThe ID of the bank account to delete

TDQS

B3/5.0
Behavior1/5

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

With no annotations, the description must cover behavioral traits. It fails to mention that deletion is irreversible, any permissions needed, or side effects on related data.

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

Conciseness5/5

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

The description is a single clear sentence with no redundancy, effectively communicating the core purpose.

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

Completeness2/5

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

For a destructive operation, essential context like irreversibility, prerequisites, or existence checks is missing. The description is too sparse given the operation's significance.

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

Parameters3/5

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

Schema coverage is 100%, and the parameter description in the schema is adequate. The tool description adds no additional semantic value beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the action (delete) and the resource (bank account). It distinguishes from sibling tools that delete other entities like bills or contacts.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, nor are there any prerequisites or warnings. The description merely states the function without context.

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

freeagent_delete_billB

Delete a bill from FreeAgent

ParametersJSON Schema
NameRequiredDescriptionDefault
bill_idYesThe ID of the bill to delete

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided; the description only states the action without disclosing side effects such as irreversibility, cascading impacts on related records, or authorization requirements.

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

Conciseness4/5

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

Extremely concise single phrase, but it could include a brief note on irreversibility without being wasteful. Still, it is front-loaded and direct.

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

Completeness2/5

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

For a simple delete operation with one parameter and no output schema, the description lacks information on what happens upon success/failure, return values, or error handling.

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

Parameters3/5

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

Schema coverage is 100% and the single parameter 'bill_id' is described in the schema. The description adds no additional semantic meaning beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the action 'Delete' and the resource 'bill', making it distinct from sibling tools like freeagent_create_bill and freeagent_update_bill.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus other delete tools (e.g., delete_invoice) or what conditions must be met (e.g., bill must exist, not linked to transactions).

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

freeagent_delete_contactB

Delete a contact from FreeAgent

ParametersJSON Schema
NameRequiredDescriptionDefault
contact_idYesThe ID of the contact to delete

TDQS

B3.1/5.0
Behavior1/5

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

No annotations are provided, and the description does not disclose any behavioral traits beyond the action, such as reversibility, required permissions, or cascading effects on related entities.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no superfluous words. It efficiently communicates the essential purpose.

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

Completeness3/5

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

For a simple delete operation with one parameter and no output schema, the description is adequate but could be improved by noting that the contact must exist or confirming the deletion effect.

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

Parameters3/5

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

The input schema has 100% description coverage with a clear parameter description for contact_id. The tool description adds no additional meaning beyond what the schema already provides.

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

Purpose5/5

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

The description 'Delete a contact from FreeAgent' clearly states the action (delete) and the resource (contact), distinguishing it from sibling tools like freeagent_delete_bill or freeagent_delete_invoice.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives (e.g., freeagent_update_contact if only modifying). No prerequisites or conditions are mentioned.

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

freeagent_delete_credit_noteB

Delete a credit note from FreeAgent

ParametersJSON Schema
NameRequiredDescriptionDefault
credit_note_idYesThe ID of the credit note to delete

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, and the description fails to disclose critical behavioral traits such as whether deletion is irreversible, impacts on related records, 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.

Conciseness4/5

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

The description is a single sentence with no wasted words. However, it could be slightly more informative while remaining concise.

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

Completeness2/5

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

For a delete operation with no output schema, the description lacks completeness by not confirming what happens on success (e.g., returns nothing or a confirmation) or any side effects.

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

Parameters3/5

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

Schema coverage is 100% because the single parameter has a description in the schema. The tool description adds no extra meaning beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the verb 'Delete' and the resource 'credit note', which is specific and distinct from sibling delete tools for other entities.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, such as prerequisites or conditions for deletion. The description only states what it does.

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

freeagent_delete_estimateB

Delete an estimate from FreeAgent

ParametersJSON Schema
NameRequiredDescriptionDefault
estimate_idYesThe estimate ID

TDQS

B3.3/5.0
Behavior2/5

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

No annotations exist, so the description must disclose behavioral traits. It only states 'delete', which implies a destructive action, but lacks details on side effects (e.g., irreversible deletion), required permissions, or expected response. The agent has limited insight into the tool's impact.

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

Conciseness5/5

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

The description is a single, concise sentence with no extraneous words. It efficiently conveys the core purpose without redundancy.

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

Completeness3/5

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

For a simple delete operation with one parameter and no output schema, the description provides the minimum necessary context. However, it misses details like the return value or confirmation of deletion, which would help the agent understand the result.

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

Parameters3/5

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

Schema description coverage is 100%, and the parameter estimate_id is described in the schema as 'The estimate ID'. The tool description adds no additional semantic information beyond the schema, so a baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'Delete an estimate from FreeAgent', specifying the action (delete) and the resource (estimate). It distinguishes itself from sibling tools like freeagent_create_estimate, freeagent_update_estimate, and freeagent_get_estimate.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., updating or converting an estimate). There are no prerequisites or exclusions mentioned.

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

freeagent_delete_expenseB

Delete an expense from FreeAgent

ParametersJSON Schema
NameRequiredDescriptionDefault
expense_idYesThe ID of the expense to delete

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It only states 'Delete' without addressing irreversibility, side effects, or authorization needs. This is insufficient for a 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.

Conciseness5/5

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

The description is extremely concise—a single sentence that directly states the tool's purpose. There is no extraneous information, 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.

Completeness3/5

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

For a simple delete tool with one parameter and no output schema, the description is minimally adequate. However, additional context (e.g., permanence, required permissions) would improve completeness for an agent without annotations.

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

Parameters3/5

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

The input schema covers 100% of parameters with a description for `expense_id`. The description adds nothing beyond the schema, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description 'Delete an expense from FreeAgent' clearly identifies the action (delete) and the resource (expense). It distinguishes this tool from siblings like `freeagent_delete_bill` or `freeagent_delete_contact` by specifying 'expense'.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., other delete tools) or any prerequisites. The description lacks context such as required permissions or conditions for deletion.

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

freeagent_delete_invoiceB

Delete an invoice from FreeAgent

ParametersJSON Schema
NameRequiredDescriptionDefault
invoice_idYesThe invoice ID

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided. The description does not disclose irreversibility, required permissions, or any side effects, leaving significant 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.

Conciseness5/5

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

One sentence, no wasted words, instantly conveys the tool's purpose.

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

Completeness3/5

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

For a simple 1-param tool, the description is minimally adequate but lacks information on error handling, authorization, or state prerequisites.

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

Parameters3/5

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

Schema coverage is 100% with a single parameter. The description adds no extra meaning beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the action 'Delete' and the resource 'invoice', with a specific verb+resource combination. It distinguishes from sibling delete tools targeting other entities.

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

Usage Guidelines2/5

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

No guidance on when to use delete vs alternative tools like mark_invoice_as_cancelled. No context on prerequisites or when not to use.

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

freeagent_delete_projectB

Delete a project from FreeAgent

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description bears the full burden of disclosing behavioral traits. It only states that the tool deletes a project, without specifying side effects like cascading deletion of associated tasks or timeslips, or any authorization requirements.

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

Conciseness4/5

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

The description is extremely concise, consisting of a single sentence without any filler. However, it could be slightly more informative without sacrificing brevity.

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

Completeness2/5

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

Given the tool's complexity (single parameter, no output schema) and lack of annotations, the description is insufficient. It fails to convey that deletion is irreversible, whether it requires special permissions, or what the result looks like.

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

Parameters3/5

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

The input schema has 100% coverage with a single parameter, project_id, which has a pattern and description. The description adds no additional meaning beyond what the schema already provides, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description 'Delete a project from FreeAgent' includes a specific verb ('Delete') and a clearly identified resource ('project'), which distinguishes it from sibling delete tools for other resources like contacts or invoices.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, nor does it mention any prerequisites, such as requiring the project to exist or that deletion may be irreversible.

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

freeagent_delete_taskDelete TaskB

Delete a task from FreeAgent.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesThe ID of the task to delete

TDQS

B3.1/5.0
Behavior2/5

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 states 'Delete a task' without revealing side effects (e.g., cascading deletions, irreversibility, or impact on related entities). This is insufficient for a destructive operation.

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

Conciseness5/5

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

The description is a single sentence with no redundant information. It is appropriately sized for a simple operation.

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

Completeness3/5

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

For a simple delete with one parameter and no output schema, the description is minimally adequate. However, it lacks context on consequences, error conditions, or idempotency, which affects completeness.

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

Parameters3/5

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

The input schema has 100% coverage with a clear description for the only parameter (task_id). The description adds no additional semantics beyond what the schema provides, so baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states the verb 'Delete' and the resource 'task', making the purpose obvious. However, it does not differentiate from sibling delete tools like freeagent_delete_bill, but the name alone provides sufficient distinction.

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

Usage Guidelines2/5

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

No usage guidelines are provided. There is no indication of when to use this tool versus alternatives, prerequisites (e.g., task existence), or required permissions. The agent receives no context for invocation.

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

freeagent_delete_timeslipDelete TimeslipB

Delete a timeslip from FreeAgent.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeslip_idYesThe timeslip ID

TDQS

B3.3/5.0
Behavior2/5

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

The description simply repeats the core action ('Delete') without elaborating on consequences, such as irreversibility, required permissions, or impact on related data. Since no annotations are provided, the description carries the full burden but adds minimal behavioral context.

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

Conciseness5/5

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

The description is a single, focused sentence with no extraneous words. It is front-loaded and immediately communicates the tool's purpose.

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

Completeness3/5

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

For a simple deletion tool with one parameter and no output schema, the description is minimally adequate but lacks safety context (e.g., irreversibility, confirmation, or side effects). It does not compensate for missing annotations.

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

Parameters3/5

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

The input schema already describes the single parameter (timeslip_id) with full coverage. The description adds no extra meaning beyond what the schema provides, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Delete') and the resource ('a timeslip'), making its purpose unambiguous. It is distinct from sibling tools that delete other entities (e.g., freeagent_delete_bill, freeagent_delete_contact).

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, such as other deletion tools or timeslip management actions. There is no mention of prerequisites, effects, or scenarios where deletion is inappropriate.

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

freeagent_delete_userB

Delete a user from the FreeAgent account

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYesThe ID of the user to delete

TDQS

B3.3/5.0
Behavior2/5

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

Without annotations, the description carries the full burden. It only says 'delete' without mentioning irreversibility, side effects, 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.

Conciseness5/5

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

Single sentence with no redundant words. Efficient and front-loaded.

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

Completeness3/5

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

For a simple delete with one parameter and no output schema, the description is adequate but could mention permanence or prerequisites. Lacks full context.

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

Parameters3/5

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

Schema covers 100% of parameters with description for user_id. Description adds no extra meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the action ('Delete') and the resource ('user') and distinguishes from sibling delete tools for other entities.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives (e.g., update_user, create_user) or any prerequisites like user status before deletion.

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

freeagent_get_balance_sheetB

Get the balance sheet from FreeAgent, optionally as at a specific date

ParametersJSON Schema
NameRequiredDescriptionDefault
as_at_dateNoDate to retrieve the balance sheet as at, in YYYY-MM-DD format

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It only states it retrieves a balance sheet optionally as of a date, but does not disclose authentication needs, rate limits, permissions, or the structure of the response.

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

Conciseness4/5

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

Single sentence is concise and front-loaded with the main purpose. No redundancy, but could benefit from a brief note on the response format.

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

Completeness4/5

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

For a simple read tool with one optional parameter and no output schema, the description is adequately complete. It explains the core functionality and parameter, though lacks response information.

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

Parameters3/5

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

Input schema has 100% coverage for the single parameter, fully describing its purpose and format. Description adds no additional semantic value beyond what schema provides, so baseline 3 applies.

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

Purpose4/5

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

Description clearly states the action 'get' and resource 'balance sheet' from FreeAgent. It specifies an optional date parameter, but does not differentiate from similar financial report tools like freeagent_get_profit_and_loss.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus other financial report tools (e.g., profit and loss, trial balance). No exclusion criteria or context for usage.

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

freeagent_get_bank_accountB

Get a single bank account from FreeAgent by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
bank_account_idYesThe ID of the bank account to retrieve

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose any behavioral traits such as read-only nature, authentication requirements, rate limits, or side effects. For a simple get operation, the description relies on the implicit meaning of 'Get' but lacks explicit transparency.

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

Conciseness5/5

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

The description is a single sentence with no unnecessary words, efficiently conveying the essential information.

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

Completeness4/5

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

For a simple get-by-ID tool with a well-documented schema, the description is mostly complete. It omits details about output format or error conditions, but the lack of an output schema and the tool's simplicity make this acceptable.

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

Parameters3/5

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

Schema coverage is 100%, and the parameter has a description in the schema ('The ID of the bank account to retrieve'). The description adds no new information beyond the schema, so it meets the baseline but does not enhance understanding.

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

Purpose5/5

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

The description clearly states the verb 'Get', the resource 'single bank account', and the scoping 'by ID', which distinguishes it from the sibling tool 'freeagent_list_bank_accounts'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'freeagent_list_bank_accounts' or other get tools. The description only states what it does, not when to use it.

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

freeagent_get_bank_transactionB

Get a single bank transaction from FreeAgent by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
bank_transaction_idYesThe ID of the bank transaction to retrieve

TDQS

B3/5.0
Behavior1/5

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

With no annotations present, the description carries the full burden of behavioral disclosure. It only states the basic read operation without mentioning authentication, rate limits, idempotency, or any side effects, leaving the agent uninformed about crucial behavioral aspects.

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

Conciseness4/5

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

The description is a single sentence that efficiently conveys the core purpose. It is front-loaded and contains no filler, though it could be slightly longer to include usage or behavioral details without being verbose.

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

Completeness3/5

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

For a simple read tool with one parameter and no output schema, the description covers the basic what but omits what the response contains, any error conditions, or permission requirements. It is minimally complete but leaves gaps that a well-informed agent would need.

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

Parameters3/5

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

The input schema already documents the only parameter with a pattern and description. The tool description adds no additional semantic value beyond the schema, which is adequate but not enhanced.

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

Purpose5/5

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

The description clearly states the operation ('Get'), the resource ('a single bank transaction'), the system ('FreeAgent'), and the method ('by ID'). This precisely differentiates it from the sibling 'freeagent_list_bank_transactions' which retrieves multiple transactions.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'freeagent_list_bank_transactions' or other get tools. The description lacks any context about prerequisites, fallback scenarios, or complementary tools.

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

freeagent_get_billA

Get a single bill from FreeAgent by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
bill_idYesThe ID of the bill to retrieve

TDQS

A3.5/5.0
Behavior2/5

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

No annotations exist, so the description must disclose behavioral traits. It only states a read operation but lacks details on authentication needs, error handling (e.g., missing ID), rate limits, or response structure. This is minimal for a mutation-less tool.

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

Conciseness5/5

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

A single sentence with no redundant words, perfectly concise for a simple read operation.

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

Completeness3/5

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

For a single-parameter GET tool with no output schema, the description is adequate but lacks context on prerequisites (authentication), error scenarios, and expected return format. It covers the core action but not completeness.

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

Parameters3/5

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

Schema coverage is 100% with a description for bill_id. The description's 'by ID' adds no new meaning beyond the schema. With high coverage, baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Get' and resource 'a single bill' from FreeAgent by ID, distinguishing it from siblings like freeagent_list_bills (get all) and create/update/delete.

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

Usage Guidelines3/5

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

The description implies usage when you have a specific bill ID, but does not explicitly state when not to use it or mention alternatives like list_bills for fetching multiple bills or search. No exclusions or context provided.

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

freeagent_get_categoryB

Get a single category from FreeAgent by nominal code

ParametersJSON Schema
NameRequiredDescriptionDefault
nominal_codeYesThe nominal code of the category to retrieve

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only states 'Get', implying a read operation, but fails to disclose any behavioral traits such as error handling, authentication requirements, or return format.

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

Conciseness5/5

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

The description is a single, efficient sentence with no unnecessary words. It front-loads the key action and resource.

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

Completeness4/5

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

For a simple get-by-ID tool with one parameter and no output schema, the description is mostly complete. However, it could mention the expected return structure or error behavior, but overall adequate.

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

Parameters3/5

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

Schema coverage is 100%, and the description adds no extra meaning beyond the schema's own description for `nominal_code`. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'Get a single category from FreeAgent by nominal code', which is a specific verb+resource combination. It distinguishes itself from sibling tools like `freeagent_list_categories` by specifying a single category retrieval.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., `freeagent_list_categories`). There is no indication of prerequisites, context, or exclusions.

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

freeagent_get_companyGet CompanyA

Get information about the authenticated FreeAgent company, including name, type, currency, and other settings.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. It only states what the tool does, not any behavioral traits like authentication requirements, error conditions, or rate limits. For a read tool, more context would be helpful.

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

Conciseness5/5

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

The description is a single sentence, 15 words, with no redundancy. It front-loads the purpose and is perfectly concise for the tool's simplicity.

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

Completeness4/5

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

For a zero-parameter tool with no output schema, the description adequately conveys what the tool returns (company info including name, type, currency, settings). It could explicitly state that it returns a single company object, but is generally complete.

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

Parameters4/5

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

There are zero parameters and schema coverage is 100%, so the baseline is 4. The description adds no parameter-specific info, but none is needed. It correctly implies no input is required.

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

Purpose5/5

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

The description clearly states the verb 'Get', the resource 'company', and specifies 'authenticated FreeAgent company', distinguishing it from other get tools. It lists example fields (name, type, currency) which adds specificity.

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

Usage Guidelines3/5

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

The description implies usage for retrieving company info but provides no explicit guidance on when to use vs alternatives or when not to use. Given the tool's simplicity, the lack of exclusions is adequate but not above average.

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

freeagent_get_contactA

Get a single contact from FreeAgent by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
contact_idYesThe ID of the contact to retrieve

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description bears full responsibility. It describes a simple read operation but does not disclose any behavioral traits such as authentication requirements, error conditions, or side effects. The name 'get' implies read-only, but no explicit confirmation.

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

Conciseness5/5

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

The description is a single sentence that conveys the essential information without any extraneous words. It is front-loaded and efficient.

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

Completeness4/5

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

For a simple retrieval tool with one parameter and no output schema, the description is mostly adequate. However, it could be improved by briefly noting that the response will contain the full contact details, but this is not a critical gap.

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

Parameters3/5

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

The input schema has 100% coverage for the contact_id parameter with a basic description. The tool description adds no additional meaning beyond the schema, so it meets the baseline but does not enhance parameter understanding.

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

Purpose5/5

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

The description clearly states the action 'Get', the resource 'a single contact', and the retrieval method 'by ID'. It distinguishes the tool from sibling list tools like freeagent_list_contacts and other get tools for different resources.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives. It implies use when a specific contact_id is known, but lacks guidance on when not to use (e.g., for multiple contacts, use list_contacts). No alternatives are mentioned.

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

freeagent_get_credit_noteA

Get a single credit note from FreeAgent by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
credit_note_idYesThe ID of the credit note to retrieve

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description should disclose behavioral traits. It implies a read-only operation but does not explicitly state side effects, authentication needs, or error handling. Adequate for a simple get operation but could be more transparent.

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

Conciseness5/5

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

The description is a single, clear sentence with no wasted words. It is front-loaded and efficient.

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

Completeness3/5

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

Given the tool's simplicity, the description is mostly adequate but fails to mention the return value or any output details since no output schema exists. Slightly incomplete.

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

Parameters3/5

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

Schema coverage is 100%, and the description does not add new meaning beyond the schema's description of 'credit_note_id'. Baseline of 3 applies.

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

Purpose5/5

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

The description clearly states the verb 'Get', the resource 'credit note', and the specific method 'by ID'. It distinguishes itself from sibling 'get' tools for other resources.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like list_credit_notes or other get tools. It only states the action without context.

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

freeagent_get_current_userA

Get the currently authenticated user

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

Description indicates a read-only operation (get), but with no annotations provided, it carries full burden. It lacks details on authentication requirements, potential failures, or what data is returned. Adequate but minimal.

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

Conciseness5/5

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

Single sentence, no unnecessary words. Front-loaded with verb and resource. Perfectly concise.

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

Completeness3/5

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

For a tool with no parameters and no output schema, the description is adequate but lacks detail on the return value shape. It doesn't explain what fields of the user are returned or the structure. Could be more complete.

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

Parameters4/5

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

No parameters exist, so schema coverage is 100%. Description adds no parameter details, but none are needed. Baseline for zero parameters is 4, as the description correctly implies no input required.

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

Purpose5/5

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

Description clearly states the verb 'Get' and the resource 'the currently authenticated user', which is specific and distinguishes it from sibling tools like freeagent_get_user (which requires a user ID) and freeagent_list_users (which lists all users).

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

Usage Guidelines3/5

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

Description implies use this to retrieve information about the authenticated user, but provides no explicit guidance on when to use vs alternatives, such as freeagent_get_user for other users or freeagent_list_users for a list. No context on prerequisites or use cases.

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

freeagent_get_estimateB

Get a single estimate from FreeAgent by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
estimate_idYesThe estimate ID

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden. It does not disclose behavioral traits such as idempotency, error handling (e.g., what happens if the estimate doesn't exist), or whether the operation is read-only. This is a significant gap for a tool with no annotation support.

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

Conciseness4/5

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

The description is very concise (one sentence of 8 words) and front-loads the key information. However, it could be slightly expanded without losing conciseness.

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

Completeness2/5

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

Given the absence of an output schema and annotations, the description should provide more context about what the response includes, permissions required, or typical usage. It is too minimal for a tool with no other documentation.

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

Parameters3/5

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

Schema description coverage is 100% (the single parameter has a description in the schema). The description adds no additional meaning beyond 'by ID' which is already implied by the parameter name and schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description explicitly states the action (get), resource (estimate), scope (single), and identifier (by ID). It clearly differentiates from sibling tools like freeagent_list_estimates and freeagent_create_estimate.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It does not mention that this tool is for fetching a specific estimate's details while list_estimates is for retrieving multiple estimates.

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

freeagent_get_expenseB

Get a single expense from FreeAgent by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
expense_idYesThe ID of the expense to retrieve

TDQS

B3.1/5.0
Behavior1/5

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

No annotations provided. Description does not disclose any behavioral traits such as error handling, authentication requirements, or rate limits, providing little beyond the tool name.

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

Conciseness5/5

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

Single sentence, no extraneous information, efficiently communicates the essential action.

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

Completeness3/5

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

Adequate for a simple retrieval tool with one parameter, but lacks details about output, error scenarios, and usage context beyond the basic operation.

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

Parameters3/5

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

Schema coverage is 100% with description for expense_id. Tool description adds no additional meaning beyond 'by ID'; schema already explains the parameter fully.

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

Purpose5/5

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

Description clearly states 'Get a single expense from FreeAgent by ID', specifying the verb and resource uniquely among siblings like freeagent_list_expenses and freeagent_create_expense.

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

Usage Guidelines2/5

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

No guidance on when to use this vs. alternative tools, prerequisites, or when not to use it. Description merely states function without context.

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

freeagent_get_invoiceB

Get a single invoice from FreeAgent by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
invoice_idYesThe invoice ID

TDQS

B3.4/5.0
Behavior3/5

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

The description implies a read-only operation via 'Get', but no annotations are provided to confirm non-destructiveness or other behavioral traits. It does not disclose authentication needs, rate limits, or any side effects. For a simple retrieval, the stated behavior is adequate but lacks depth.

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

Conciseness5/5

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

A single, concise sentence that is front-loaded with the essential action and resource. Every word serves a purpose, with no redundancy or unnecessary details.

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

Completeness4/5

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

Given the tool's simplicity (one required parameter, no output schema), the description is complete enough. It specifies the input (ID) and the output (a single invoice). The sibling tools context shows it is part of a consistent pattern, so agents can infer behavior.

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

Parameters3/5

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

The description adds the phrase 'by ID' but does not elaborate on the invoice_id parameter beyond what the schema already provides (e.g., format via pattern). Since schema coverage is 100%, the description contributes minimal additional meaning, matching the baseline of 3.

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

Purpose4/5

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

Clearly states 'Get a single invoice from FreeAgent by ID', which specifies the verb (Get) and resource (a single invoice). It distinguishes from sibling tools like freeagent_list_invoices (which returns multiple) and other get tools for different entities, though it does not explicitly contrast with them.

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

Usage Guidelines2/5

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

Provides no guidance on when to use this tool versus alternatives such as freeagent_list_invoices for batch retrieval or other get tools. No prerequisites or exclusions are mentioned, leaving the agent to infer context from the name and schema alone.

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

freeagent_get_opening_balancesA

Get the opening balances from the FreeAgent balance sheet

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It correctly indicates a read operation but does not disclose edge cases, error conditions, or data format. The minimal description is acceptable for a simple retrieval with no parameters.

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

Conciseness5/5

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

The description is a single, clear sentence with no superfluous words. It is optimally concise and front-loaded with the core action and resource.

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

Completeness4/5

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

Given zero parameters and no output schema, the description provides the essential purpose. It is sufficiently complete for a simple data retrieval tool, though additional context about the meaning of 'opening balances' could be helpful.

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

Parameters4/5

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

The tool has zero parameters, so the schema provides full coverage. The description correctly implies no inputs are needed. Baseline score of 4 applies as no further parameter information is required.

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

Purpose5/5

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

The description explicitly states the action 'Get' and the resource 'opening balances from the FreeAgent balance sheet'. This clearly distinguishes it from sibling tools like 'freeagent_get_balance_sheet' which retrieves the full balance sheet.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'freeagent_get_balance_sheet' or 'freeagent_get_trial_balance'. No context is given about typical use cases (e.g., initial period balances) or when not to use it.

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

freeagent_get_profit_and_lossB

Get the profit and loss summary from FreeAgent with optional date range filtering

ParametersJSON Schema
NameRequiredDescriptionDefault
from_dateNoStart date for the P&L report in YYYY-MM-DD format
to_dateNoEnd date for the P&L report in YYYY-MM-DD format

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, so description must fully convey behavior. It states a read operation but lacks any details about side effects, authorization needs, rate limits, data freshness, or what happens if no date range is provided. For a read-only tool, this is minimally adequate but not transparent.

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

Conciseness5/5

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

Single sentence that is front-loaded with the primary action and resource. No superfluous words or digressions.

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

Completeness3/5

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

The tool is simple with no required parameters and no output schema. The description provides the essential purpose but could be more complete by mentioning what the summary contains (e.g., revenue, expenses, net profit). Still, it's minimally viable.

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

Parameters3/5

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

Schema coverage is 100% with clear descriptions for both parameters. The description reiterates 'optional date range filtering' but adds no new meaning beyond the schema. Baseline score of 3 is appropriate.

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

Purpose5/5

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

Description clearly states the verb 'Get', the resource 'profit and loss summary', and the system 'FreeAgent'. It specifies optional date range filtering, which distinguishes it from sibling tools like 'freeagent_get_balance_sheet' or 'freeagent_get_trial_balance'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. For example, it doesn't explain that this is for income and expense summary, while 'freeagent_get_balance_sheet' is for assets and liabilities. No exclusions or prerequisites mentioned.

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

freeagent_get_projectB

Get a single project from FreeAgent by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It implies a read operation but does not mention error handling (e.g., for invalid IDs), permissions required, or the nature of the response. It is minimally transparent.

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

Conciseness5/5

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

The description is a single, concise sentence with no unnecessary words. It is perfectly front-loaded and efficient.

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

Completeness3/5

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

For a simple get-by-ID tool with one parameter and no output schema, the description is minimally adequate. It provides the essential purpose but lacks details on return value format or error scenarios, which would be helpful for completeness.

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

Parameters3/5

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

Schema coverage is 100% with the parameter description 'The project ID' already present in the schema. The tool description adds no additional meaning beyond what the schema provides, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Get a single project'), the resource ('project'), the source ('from FreeAgent'), and the identifier ('by ID'). It distinguishes from the sibling 'freeagent_list_projects' which retrieves multiple projects.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'freeagent_list_projects' to find the ID first. The description does not mention prerequisites such as needing the project ID from a list operation.

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

freeagent_get_taskGet TaskB

Get a specific task by ID from FreeAgent.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesThe ID of the task to retrieve

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description must disclose behavior. It only states 'Get a task', but does not indicate that the operation is read-only, idempotent, or what the response format is.

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

Conciseness5/5

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

The description is one sentence, 9 words, front-loaded with the essential information. No unnecessary words.

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

Completeness3/5

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

For a simple retrieval with one parameter and no output schema, the description is minimal but adequate. It does not describe return values or error responses, but is sufficient for basic use.

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

Parameters3/5

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

Schema description coverage is 100% for the single parameter, and the tool description adds no additional meaning beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action (get), the resource (task), and the method of identification (by ID). It distinguishes from sibling tools like freeagent_list_tasks or other get_* tools.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., list_tasks). No prerequisites or conditions are mentioned.

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

freeagent_get_tax_timelineGet Tax TimelineA

Get the tax timeline for the company, showing upcoming tax deadlines and obligations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It minimally indicates a read operation returning tax deadlines, but does not disclose data freshness, pagination, or any limitations. It is adequate but not thorough.

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

Conciseness5/5

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

The description is a single sentence that clearly and concisely states the tool's purpose with no unnecessary words.

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

Completeness3/5

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

While the tool has no parameters and no output schema, the description only vaguely mentions 'upcoming tax deadlines and obligations' without specifying the structure or details of the returned data. It is minimally complete for a simple retrieval tool but could be more informative.

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

Parameters4/5

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

There are no parameters, so the baseline is 4. The description does not need to add parameter details as none exist.

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

Purpose5/5

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

The description explicitly states the verb 'get' and the resource 'tax timeline', clearly indicating the tool retrieves upcoming tax deadlines and obligations. It distinguishes itself from sibling tools, none of which target the tax timeline.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, nor are there any prerequisites or context about the company setup. The description lacks any when-to-use or when-not-to-use information.

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

freeagent_get_timeslipGet TimeslipB

Get a single timeslip by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeslip_idYesThe timeslip ID

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are present, so the description must fully convey behavioral traits. It only states the basic function without mentioning authentication requirements, rate limits, error handling, or what happens if 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.

Conciseness4/5

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

The description is very concise with one sentence that uses active voice and gets straight to the point. It could include additional useful details without becoming overly verbose.

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

Completeness3/5

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

For a simple read operation with a single parameter, the description is minimally complete. However, it lacks details about the return value (no output schema) and does not mention error scenarios, which an agent would benefit from.

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

Parameters3/5

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

The schema has 100% description coverage for the only parameter, which already explains the parameter. The description's mention of 'by its ID' aligns with the schema but adds no new semantic meaning. Baseline 3 applies.

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

Purpose5/5

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

The description clearly states the action ('Get'), the resource ('timeslip'), and the method of identification ('by its ID'). It is specific and distinguishes from the sibling 'list_timeslips' tool which retrieves multiple timeslips.

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

Usage Guidelines3/5

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

The description implies when to use the tool (to get a single timeslip by ID) but does not explicitly contrast with alternatives like 'list_timeslips' or mention conditions for use. No when-not guidance is provided.

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

freeagent_get_trial_balanceC

Get the trial balance summary from FreeAgent with optional date range filtering

ParametersJSON Schema
NameRequiredDescriptionDefault
from_dateNoStart date for the trial balance in YYYY-MM-DD format
to_dateNoEnd date for the trial balance in YYYY-MM-DD format

TDQS

C2.7/5.0
Behavior1/5

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 only states 'Get the trial balance summary' and adds optional date range, but it does not disclose behavioral traits such as read-only nature, required permissions, response format, or any side effects. This is insufficient for a tool with no annotations.

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

Conciseness5/5

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

The description is a single sentence with no unnecessary words. It is front-loaded and efficient.

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

Completeness2/5

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

Given no output schema and no annotations, the description is incomplete. It does not explain what the trial balance summary contains, how it differs from the related 'freeagent_get_trial_balance_opening', or any usage constraints. More detail is needed for full contextual completeness.

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

Parameters3/5

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

Schema description coverage is 100%, so each parameter already has a clear description. The description adds the context that these parameters are 'optional date range filtering', which reinforces their purpose. This adds some value but does not go beyond the schema.

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

Purpose4/5

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

The description clearly states the verb 'Get' and the resource 'trial balance summary', distinguishing it from other FreeAgent report tools like balance sheet or profit and loss. However, it does not explicitly differentiate from the related sibling 'freeagent_get_trial_balance_opening'.

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

Usage Guidelines2/5

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

The description mentions optional date range filtering, which gives some context for usage, but it provides no guidance on when to use this tool versus other financial reports (e.g., balance sheet, profit and loss) and no when-not-to-use or alternatives.

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

freeagent_get_trial_balance_openingA

Get the trial balance opening balances from FreeAgent

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It does not disclose any behavioral traits such as whether the data is read-only, if authentication is required, or what the response format 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.

Conciseness5/5

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

The description is a single sentence with no wasted words. It is appropriately sized and front-loaded.

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

Completeness3/5

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

Given the simplicity (no parameters, no output schema), the description is minimally adequate. However, it could explain what 'opening balances' means in accounting or mention that it retrieves all opening balances without filtering.

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

Parameters4/5

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

There are no parameters (0 total, 0 required, 100% schema coverage). With no parameters, baseline is 4; the description does not need to add anything and it does not.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the specific resource 'trial balance opening balances'. It distinguishes from sibling 'freeagent_get_trial_balance' which likely retrieves current period trial balance.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives like 'freeagent_get_trial_balance' or 'freeagent_get_opening_balances'. Usage is implied by the name and description but not clarified.

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

freeagent_get_userA

Get a specific user by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYesThe ID of the user to retrieve

TDQS

A3.7/5.0
Behavior2/5

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

No annotations provided; description only says 'get user by ID'. Does not disclose error handling, permissions, rate limits, or any behavioral traits beyond the basic read operation.

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

Conciseness5/5

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

Single sentence with no redundancy. Front-loaded with the core purpose. Every word earns its place.

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

Completeness3/5

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

Adequate for a simple get operation with one parameter, but lacking return value description (no output schema). Adequate but not rich.

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

Parameters3/5

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

Schema coverage is 100% with parameter description. The tool description adds no extra meaning beyond 'by ID'. Baseline 3 applies.

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

Purpose5/5

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

The description clearly states the action (get), resource (user), and method (by ID). It distinctly separates from sibling tools like freeagent_list_users (list) and freeagent_create_user (create).

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

Usage Guidelines4/5

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

The purpose is clear enough to infer when to use, but no explicit guidance on when not to use or alternatives (e.g., list_users for multiple). Sibling context helps.

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

freeagent_list_bank_accountsA

List bank accounts from FreeAgent with optional view filter

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNoFilter bank accounts by type

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, and the description is minimal. It indicates a read-only operation via 'list' but does not disclose other behavioral traits such as authentication needs, rate limits, pagination, or return format. For a straightforward read tool, this is insufficient.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It effectively communicates the function and filter option.

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

Completeness3/5

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

Given the low complexity (one optional parameter) and no output schema, the description is minimal but lacks details about the response structure (e.g., returns an array of bank account objects). This is a notable gap for completeness.

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

Parameters3/5

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

The schema covers 100% of the parameter ('view') with a description and enum. The description adds no additional meaning beyond what is already in the schema, meeting the baseline for high coverage.

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

Purpose5/5

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

The description clearly states the verb 'list' and resource 'bank accounts from FreeAgent', and mentions the optional view filter. It distinguishes from siblings like 'freeagent_get_bank_account' (single) and 'freeagent_create_bank_account' (write).

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

Usage Guidelines3/5

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

The description implies usage for listing bank accounts with an optional filter but does not explicitly state when to use this tool over alternatives like 'freeagent_get_bank_account' or other list tools. No when-not-to-use guidance is given.

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

freeagent_list_bank_transactionsB

List bank transactions from FreeAgent for a specific bank account

ParametersJSON Schema
NameRequiredDescriptionDefault
bank_accountYesThe full URL of the bank account to list transactions for
from_dateNoStart date for filtering (YYYY-MM-DD)
to_dateNoEnd date for filtering (YYYY-MM-DD)
updated_sinceNoOnly return transactions updated since this ISO 8601 date
viewNoFilter transactions by view

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must cover behavioral traits. It only states the basic action. It does not disclose pagination, rate limits, authentication needs, or what happens when parameters are invalid. For a list operation, it lacks details about response format or potential size limits.

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

Conciseness5/5

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

The description is a single concise sentence that is front-loaded with the key action. No unnecessary words or repetition. It efficiently conveys the core purpose.

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

Completeness3/5

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

Given the lack of output schema and annotations, the description is minimal. It does not explain pagination, default filters, or response structure. For a list tool with multiple optional parameters, additional details like 'Returns a list of transactions' or 'Use from_date/to_date for date range' would improve completeness, but the description is adequate for basic understanding.

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

Parameters3/5

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

Schema coverage is 100%, so the input schema already provides parameter descriptions. The tool description does not add any additional meaning beyond what the schema states. Baseline 3 is appropriate as the schema does the heavy lifting, and the description offers no extra context.

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

Purpose5/5

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

The description clearly states 'List bank transactions from FreeAgent for a specific bank account', which identifies the verb ('List'), resource ('bank transactions'), and scope ('for a specific bank account'). This distinguishes it from siblings like freeagent_get_bank_transaction (single transaction) and freeagent_list_bank_accounts (different resource).

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, such as freeagent_get_bank_transaction for a single transaction. It does not mention prerequisites or conditions for use, leaving the agent to infer from the name and siblings.

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

freeagent_list_billsB

List bills from FreeAgent with optional filtering by view, date range, contact, or project

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNoFilter bills by view
from_dateNoFilter bills from this date (YYYY-MM-DD)
to_dateNoFilter bills to this date (YYYY-MM-DD)
updated_sinceNoOnly return bills updated since this ISO 8601 date
contactNoFilter by contact URL
projectNoFilter by project URL
nested_bill_itemsNoWhether to include nested bill items in the response

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, so the description carries full burden. It only states listing with filters, omitting details on pagination, sorting, default behavior, or error responses.

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

Conciseness5/5

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

Single, front-loaded sentence with no redundant words. Efficiently conveys core functionality.

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

Completeness2/5

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

Given 7 parameters and no output schema/annotations, the description lacks details on return format, pagination, or performance implications, making it incomplete for an AI agent.

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

Parameters3/5

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

Schema coverage is 100% with parameter descriptions. The description adds no extra meaning beyond summarizing the filters, so a baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action (list) and resource (bills) with specific filtering options (view, date range, contact, project), distinguishing it from sibling tools like freeagent_get_bill.

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

Usage Guidelines3/5

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

No explicit instructions on when to use this vs. alternatives like freeagent_get_bill or other list tools, but the description implies its purpose for listing with optional filters.

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

freeagent_list_business_categoriesList Business CategoriesB

List the available business categories for the company. These are used to classify the type of business.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, and the description only mentions listing. It does not disclose any behavioral traits such as authentication requirements, rate limits, or data freshness.

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

Conciseness4/5

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

The description is a single concise sentence with no extraneous information. It is appropriately sized for the tool's simplicity.

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

Completeness4/5

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

Given no output schema and no parameters, the description adequately states what the tool does. However, it does not describe the output format or any nested structures.

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

Parameters4/5

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

With no parameters, schema coverage is 100%. The description does not add meaning beyond the schema, but the baseline for 0 parameters is 4.

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

Purpose4/5

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

Clearly states it lists business categories for classification. However, there is a sibling 'freeagent_list_categories' which may be different, but no distinction is made.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. It simply states what it does, with no context or exclusions.

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

freeagent_list_categoriesC

List all categories from FreeAgent, optionally including sub-accounts

ParametersJSON Schema
NameRequiredDescriptionDefault
sub_accountsNoWhether to include sub-accounts in the response

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits, but it only states the listing action. It omits pagination, permissions, or whether the list includes inactive categories. This is insufficient for a list operation.

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

Conciseness4/5

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

The description is a single efficient sentence, front-loaded with the action. No wasted words, though it could be slightly more specific about the category scope.

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

Completeness3/5

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

For a simple list tool with one optional parameter and no output schema, the description is adequate but lacks context about category types (e.g., nominal codes) and how it differs from the sibling 'freeagent_list_business_categories'. It is minimally complete.

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

Parameters3/5

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

Schema description coverage is 100% (the 'sub_accounts' parameter is documented in the schema). The description's phrase 'optionally including sub-accounts' adds minimal extra meaning beyond the schema's description.

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

Purpose4/5

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

The description clearly states 'List all categories from FreeAgent' with a specific verb and resource. It adds the optional inclusion of sub-accounts, but does not differentiate from the sibling 'freeagent_list_business_categories', which may cause ambiguity.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'freeagent_list_business_categories' or when to set the 'sub_accounts' parameter. The description lacks context for decision-making.

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

freeagent_list_contactsB

List contacts from FreeAgent with optional filtering and sorting

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNoFilter contacts by view
sortNoSort order, e.g. "name" or "-updated_at"
updated_sinceNoOnly return contacts updated since this ISO 8601 date

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description must fully disclose behavioral traits. It only states listing with filtering/sorting, omitting crucial details like whether the operation is read-only, pagination behavior, rate limits, or any side effects. This is insufficient for a list operation.

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

Conciseness4/5

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

The description is a single sentence, concise and front-loaded. However, it could be slightly more informative without sacrificing brevity. Every word is used, but there is room to add value.

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

Completeness2/5

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

Given no output schema, the description should explain what is returned (e.g., list of contact objects, pagination info). It fails to do so, and also lacks details on default behavior or any limits. The tool has only 3 optional params, but the description is incomplete for a list operation.

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

Parameters3/5

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

Schema coverage is 100% and parameter descriptions are already clear. The description's phrase 'optional filtering and sorting' adds minimal context beyond the schema. No additional meaning or examples are provided, so baseline score is appropriate.

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

Purpose5/5

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

Description clearly states the verb 'List' and resource 'contacts' with source 'FreeAgent', and mentions optional filtering/sorting. This distinguishes it from sibling tools focused on single contact actions (create, get, delete, update) and other list tools for different entities.

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

Usage Guidelines3/5

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

The description implies use for listing contacts with filtering, but provides no explicit guidance on when to use this tool versus alternatives like freeagent_get_contact for a single contact or other list tools. No exclusion criteria or context is given.

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

freeagent_list_credit_notesC

List credit notes from FreeAgent with optional filtering and sorting

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNoFilter credit notes by view
updated_sinceNoOnly return credit notes updated since this ISO 8601 date
sortNoSort order, e.g. "created_at" or "-updated_at"
contactNoFilter by contact URL
projectNoFilter by project URL
nested_credit_note_itemsNoWhether to include nested credit note items in the response

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits like read-only nature, pagination, or rate limits. It only states it lists notes with filtering, leaving the agent blind to important behavior.

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

Conciseness4/5

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

The description is a single, efficient sentence that conveys the core purpose without extraneous words. It is front-loaded and clear, though it could benefit from slightly more structure.

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

Completeness2/5

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

With 6 optional parameters, no output schema, and no description of return format (e.g., array of credit note objects) or pagination, the description is incomplete. The agent lacks enough context to fully understand the tool's behavior.

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

Parameters3/5

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

All 6 parameters have descriptions in the input schema, so baseline is 3. The tool description adds no additional meaning beyond the schema, which is adequate but not improved.

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

Purpose4/5

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

The description clearly states the action (list), resource (credit notes), and optional filtering/sorting. It distinguishes from other list tools by specifying the resource, though it does not directly contrast with siblings like freeagent_list_invoices.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, such as freeagent_get_credit_note for a single record or other list tools. No usage context or prerequisites are mentioned.

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

freeagent_list_estimatesB

List estimates from FreeAgent with optional filtering

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNoFilter estimates by view
from_dateNoFilter estimates from this date (YYYY-MM-DD)
to_dateNoFilter estimates to this date (YYYY-MM-DD)
updated_sinceNoOnly return estimates updated since this ISO 8601 date
nested_estimate_itemsNoInclude nested estimate items in the response
contactNoFilter by contact URL
projectNoFilter by project URL

TDQS

B3.1/5.0
Behavior2/5

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 only indicates a read operation ('list') but lacks details on pagination, rate limits, ordering, or any side effects. For a tool with no annotations, this is insufficient.

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

Conciseness4/5

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

The description is a single concise sentence, front-loading the core purpose. However, it is too brief and lacks details that could be included concisely, slightly reducing effectiveness.

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

Completeness2/5

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

Given 7 optional parameters and no output schema or annotations, the description fails to address important aspects like response format, pagination, or default behavior. It is not complete enough for an agent to fully understand the tool's capabilities and constraints.

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

Parameters3/5

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

Schema coverage is 100% with each parameter described in the input schema. The description adds 'optional filtering' which is already implied by optional parameters. No additional semantic value beyond what the schema provides, meeting the baseline for high coverage.

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

Purpose5/5

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

The description clearly states it lists estimates from FreeAgent with optional filtering. It effectively distinguishes from sibling tools like freeagent_get_estimate (single estimate) and freeagent_create_estimate (create), using a specific verb and resource.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives like other list tools or the get_estimate tool. The description does not mention any preconditions or exclusions, leaving the agent without direction on selecting the appropriate tool.

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

freeagent_list_expensesA

List expenses from FreeAgent with optional filtering by view, date range, and project

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNoFilter expenses by view
from_dateNoStart date filter (YYYY-MM-DD)
to_dateNoEnd date filter (YYYY-MM-DD)
updated_sinceNoOnly return expenses updated since this ISO 8601 timestamp
projectNoFilter by project URL

TDQS

A3.6/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It only states it lists expenses with filters, but lacks disclosure of pagination, rate limits, return format, or any side effects. Minimal behavioral context.

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

Conciseness5/5

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

Single sentence, no unnecessary words. Front-loaded with the core action and resource. Efficiently conveys the essential information.

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

Completeness2/5

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

Given 5 optional parameters, no output schema, and no annotations, the description is too brief. It omits important context like output format, pagination, ordering, or any prerequisites.

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

Parameters3/5

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

Schema description coverage is 100%, so each parameter is already documented. The description groups them as 'optional filtering by view, date range, and project' but adds no new meaning or usage context beyond the schema.

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

Purpose5/5

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

Description clearly states the verb (list), resource (expenses), and optional filters (view, date range, project). Distinguishes from sibling tools like freeagent_create_expense or freeagent_get_expense.

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

Usage Guidelines4/5

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

The description implies usage for listing expenses with filters, but does not explicitly state when to use this tool versus alternatives like freeagent_get_expense for single expenses. No exclusions or when-not guidance provided.

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

freeagent_list_invoicesB

List invoices from FreeAgent, optionally filtered by view, sort order, contact, project, or updated date

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNoFilter invoices by status view
sortNoSort order for results
contactNoFilter by contact URL
projectNoFilter by project URL
updated_sinceNoFilter invoices updated since this date (ISO 8601)
nested_invoice_itemsNoWhether to include nested invoice items in the response

TDQS

B3.4/5.0
Behavior2/5

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 not disclose important behavioral traits such as pagination behavior, rate limits, authentication requirements, or what happens with empty results. For a list 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.

Conciseness5/5

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

The description is a single sentence that is front-loaded with the core purpose and includes optional filters efficiently. Every word adds value, with no waste.

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

Completeness2/5

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

Given the tool has 6 parameters and no output schema or annotations, the description is too minimal. It does not explain the output format, pagination, sorting behavior, or error handling. A more complete description would cover these aspects for effective use.

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

Parameters3/5

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

Schema description coverage is 100%, so each parameter already has a description. The tool description adds a brief summary of the filterable fields but does not provide additional meaning beyond the schema, such as default values, dependencies, or format constraints. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'list' and resource 'invoices' from FreeAgent, and explicitly lists the supported filtering options (view, sort order, contact, project, updated date). This makes the tool's purpose distinct from sibling tools like freeagent_get_invoice or other list_* tools.

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

Usage Guidelines3/5

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

The description implies usage for listing invoices with optional filters but does not provide guidance on when to use this tool versus alternatives (e.g., freeagent_get_invoice for a single invoice, or other list tools for different resources). No exclusions or prerequisites are mentioned.

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

freeagent_list_projectsA

List projects from FreeAgent, optionally filtered by view, sort order, or contact

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNoFilter projects by status view
sortNoSort order for results
contactNoFilter by contact URL

TDQS

A3.7/5.0
Behavior3/5

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

No annotations provided. Description implies a read operation but does not explicitly state non-destructive nature or any side effects. Adequate for a simple 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.

Conciseness5/5

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

Single sentence, front-loaded with action and resource, no extraneous words. Highly efficient.

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

Completeness3/5

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

No output schema, so description could explain response format or pagination. It omits return details, making it somewhat incomplete for an agent.

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

Parameters3/5

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

Schema already describes all three parameters with 100% coverage. Description adds that filters are optional, which is useful but not substantial beyond schema.

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

Purpose5/5

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

Description clearly states the verb 'list', resource 'projects', and optional filters. Among sibling list tools, this one is uniquely for projects.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this vs alternatives like list_tasks or list_invoices. The description implies it's for listing projects but lacks context for selection.

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

freeagent_list_tasksList TasksB

List tasks from FreeAgent. Optionally filter by view, project, or updated_since.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNoFilter tasks by view: all, active, completed, or hidden
sortNoSort order for tasks
projectNoProject URL to filter tasks by
updated_sinceNoOnly return tasks updated since this date (ISO 8601)

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided; the description does not disclose read-only nature, auth needs, or other behavioral traits beyond the basic operation.

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

Conciseness5/5

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

Single sentence with front-loaded key information, no wasted words.

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

Completeness2/5

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

Given no output schema, the description should indicate return format (e.g., array of tasks) but does not, leaving the agent uninformed about the response.

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

Parameters3/5

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

Schema covers all parameters with descriptions; the description adds little value and omits the 'sort' parameter from its mention.

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

Purpose5/5

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

The description clearly states 'List tasks from FreeAgent' with optional filters, distinguishing it from sibling list tools for other resources.

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

Usage Guidelines3/5

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

The description implies usage for listing tasks but does not explicitly guide when to use this tool versus alternatives like get_task or other list tools.

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

freeagent_list_timeslipsList TimeslipsB

List timeslips from FreeAgent. Can be filtered by date range, user, task, project, and billing status.

ParametersJSON Schema
NameRequiredDescriptionDefault
from_dateNoStart date filter (YYYY-MM-DD)
to_dateNoEnd date filter (YYYY-MM-DD)
updated_sinceNoOnly return timeslips updated since this timestamp
viewNoFilter by billing/running status
userNoFilter by user URL
taskNoFilter by task URL
projectNoFilter by project URL

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses that the tool lists timeslips and supports filtering, indicating a read-safe operation. However, it does not disclose potential side effects, rate limits, or required permissions. The filtering details add some transparency but are insufficient for a complete behavioral picture.

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

Conciseness5/5

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

The description is extremely concise at two sentences, front-loaded with the main action. Every word contributes value: stating the purpose and listing key filter options. No redundancy or unnecessary text.

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

Completeness2/5

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

Given the 7 parameters, no output schema, and no annotations, the description lacks important contextual details. It does not explain return data structure, pagination behavior, or query limits. For a list tool with many filters, users need to know if results are paginated or if all matching items are returned. This gap affects completeness.

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

Parameters3/5

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

The schema descriptions already cover 100% of parameters with clear explanations (date format, enum values, etc.). The description's summary of filters adds no new semantic information beyond the schema. According to guidelines, with high schema coverage the baseline is 3, and the description does not elevate it.

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

Purpose4/5

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

The description clearly states 'List timeslips from FreeAgent' with a specific verb and resource. It mentions filtering capabilities, distinguishing it from single-entity retrieval tools like freeagent_get_timeslip. However, it could more explicitly differentiate from other list tools (e.g., freeagent_list_tasks) by emphasizing that it retrieves timeslips specifically.

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

Usage Guidelines3/5

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

The description implies usage via 'Can be filtered by...' but provides no explicit guidance on when to use this tool versus alternatives (e.g., freeagent_get_timeslip for a single timeslip). It lacks 'when not to use' or context about pagination or limits. The mention of filters gives some context for appropriate use cases.

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

freeagent_list_usersB

List all users in the FreeAgent account

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNoFilter users by view type

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, and the description gives no behavioral context such as whether results are paginated, ordered, or limited. The tool's read-only nature is implied but not stated.

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

Conciseness5/5

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

The description is a single clear sentence with no extraneous information. It is appropriately sized for the tool's simplicity.

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

Completeness3/5

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

For a simple list tool with one optional parameter, the description is adequate but lacks parameter usage context. Without an output schema, the return format is not described, but the tool's purpose is covered.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description does not add any meaning beyond the schema's parameter documentation, nor does it explain the enum values or their effects.

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

Purpose4/5

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

The description 'List all users in the FreeAgent account' clearly states the action and target. However, the presence of an optional 'view' filter for subsets (e.g., staff, advisors) makes the 'all' slightly imprecise. Still, it effectively distinguishes the tool from siblings like freeagent_get_user.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like freeagent_get_user for a single user or freeagent_create_user. There is no mention of prerequisites, limitations, or exclusion scenarios.

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

freeagent_mark_estimate_as_approvedB

Mark an estimate as approved in FreeAgent

ParametersJSON Schema
NameRequiredDescriptionDefault
estimate_idYesThe estimate ID

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It does not mention whether the action is reversible, any side effects (e.g., notifications, state changes), or required permissions. This is a significant gap for a mutating tool.

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

Conciseness5/5

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

The description is a single sentence with no wasted words. It is appropriately front-loaded and concise.

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

Completeness3/5

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

Given the tool's simplicity (one parameter, no output schema), the minimal description may be barely adequate but lacks behavioral and usage context. More detail on the effects and prerequisites would improve completeness.

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

Parameters3/5

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

Schema description coverage is 100% (the parameter has a description). The tool description adds no further meaning beyond the schema, but the schema itself is adequate. Baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states the action ('Mark') and the resource ('estimate') and the target state ('as approved'). It distinguishes well from sibling tools like freeagent_mark_estimate_as_sent.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool, prerequisites (e.g., estimate must exist, not already approved), or when to prefer alternatives. The description lacks explicit usage context.

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

freeagent_mark_estimate_as_sentB

Mark an estimate as sent in FreeAgent

ParametersJSON Schema
NameRequiredDescriptionDefault
estimate_idYesThe estimate ID

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the burden of disclosure. It only states the action without revealing behavioral details such as whether it sends an email, requires a prior state, or has side effects. This is insufficient for a 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.

Conciseness4/5

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

The description is extremely concise, consisting of one sentence with no unnecessary words. However, it could be slightly improved by adding key behavioral context without increasing length.

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

Completeness2/5

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

For a mutation tool with no annotations or output schema, the description should provide more context about the effect (e.g., status change, email trigger) and prerequisites. The current description is minimal and leaves the agent uncertain about outcomes.

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

Parameters3/5

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

The input schema has 100% description coverage for the single parameter estimate_id, which is already described as 'The estimate ID'. The tool description adds no further context, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description 'Mark an estimate as sent in FreeAgent' clearly specifies the action (mark), resource (estimate), and target state (as sent). It distinguishes from sibling tools like freeagent_mark_estimate_as_approved, which marks a different status.

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

Usage Guidelines3/5

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

The description implies using the tool to change an estimate's status to 'sent', but it does not provide explicit when-to-use or when-not-to-use guidance. It also does not compare with alternatives like sending an invoice via email.

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

freeagent_mark_invoice_as_cancelledC

Cancel an invoice in FreeAgent

ParametersJSON Schema
NameRequiredDescriptionDefault
invoice_idYesThe invoice ID

TDQS

C2.9/5.0
Behavior2/5

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

Without annotations, the description must disclose behavioral traits but fails to. It does not mention whether the action is destructive, requires authentication, or whether it can be undone. The brevity leaves the agent uninformed about side effects.

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

Conciseness4/5

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

The description is a single, front-loaded sentence. It is concise but may be overly brief, lacking important context. It earns a 4 for being succinct.

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

Completeness2/5

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

Given the simplicity (one parameter, no output schema), the description is minimally complete. However, it does not cover preconditions, potential errors, or the effect on invoice status, which are important for correct use among sibling tools.

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

Parameters3/5

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

The parameter has 100% schema coverage with description 'The invoice ID'. The tool description adds no extra meaning beyond that, so a baseline of 3 is appropriate.

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

Purpose4/5

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

The description uses the verb 'Cancel' and resource 'invoice', clearly indicating the action. However, it does not explicitly differentiate from sibling tools like mark_invoice_as_draft or mark_invoice_as_sent, which also change invoice state.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as freeagent_mark_invoice_as_draft, freeagent_mark_invoice_as_sent, or freeagent_delete_invoice. The description lacks context on prerequisites or invoice status requirements.

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

freeagent_mark_invoice_as_draftB

Mark an invoice as draft in FreeAgent

ParametersJSON Schema
NameRequiredDescriptionDefault
invoice_idYesThe invoice ID

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, and the description only states the action without disclosing side effects, required preconditions, or error conditions. The agent is left uninformed about behavioral traits.

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

Conciseness5/5

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

A single clear sentence with no unnecessary words. Perfectly concise and front-loaded.

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

Completeness2/5

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

Despite low complexity, the description lacks prerequisite conditions, return value information, and any contextual richness. With no output schema, more details would help the agent understand the tool's usage.

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

Parameters3/5

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

Schema coverage is 100%, and the parameter description in the schema is basic. The tool description adds no additional semantic meaning beyond what the schema provides, justifying a baseline score of 3.

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

Purpose5/5

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

The description uses a specific verb 'Mark' and resource 'invoice as draft', clearly distinguishing from siblings like 'mark_invoice_as_cancelled' and 'mark_invoice_as_sent'.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool vs alternatives. The description merely states the action, leaving the agent to infer context 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.

freeagent_mark_invoice_as_sentB

Mark an invoice as sent in FreeAgent

ParametersJSON Schema
NameRequiredDescriptionDefault
invoice_idYesThe invoice ID

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral details. It only states the action without explaining any side effects, reversibility, or required conditions (e.g., invoice must be in draft state). Minimal transparency.

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

Conciseness4/5

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

Single sentence, no waste. Concise but lacks necessary detail for a state-changing operation.

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

Completeness2/5

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

Given the simplicity (one param, no output schema), the description should explain what marking as sent entails (e.g., status change, notification). It does not, and sibling tools suggest alternative states, making it incomplete.

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

Parameters3/5

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

Schema covers 100% of parameters with a description for invoice_id. The tool description adds no additional meaning beyond the schema. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Mark an invoice as sent') and the resource ('invoice in FreeAgent'). It distinguishes from sibling tools like freeagent_mark_invoice_as_cancelled, freeagent_mark_invoice_as_draft, and freeagent_send_invoice_email.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like freeagent_send_invoice_email or freeagent_mark_invoice_as_draft. No explicit context about prerequisites or state constraints.

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

freeagent_send_invoice_emailB

Send an invoice by email from FreeAgent

ParametersJSON Schema
NameRequiredDescriptionDefault
invoice_idYesThe invoice ID
toYesRecipient email address
from_emailNoSender email address
subjectNoEmail subject line
bodyNoEmail body text

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description must disclose traits but only says 'Send', omitting whether the invoice status changes, required permissions, or error behaviors.

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

Conciseness4/5

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

Single sentence, front-loaded and no wasted words, though could expand slightly on behavior without losing conciseness.

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

Completeness2/5

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

No output schema, no annotations, and a terse description leaves gaps about return value, error cases, and required steps (e.g., obtaining invoice_id). Incomplete for a 5-parameter tool.

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

Parameters3/5

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

All 5 parameters have basic schema descriptions, but the tool description adds no further semantic context; baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action (Send), resource (invoice), and method (by email), distinguishing it from related tools like mark_invoice_as_sent.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., freeagent_mark_invoice_as_sent), nor prerequisites like invoice status requirements.

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

freeagent_start_timerStart TimerA

Start a running timer on a timeslip. The timeslip will accumulate time until the timer is stopped.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeslip_idYesThe timeslip ID

TDQS

A4.1/5.0
Behavior4/5

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

The description states that the timer will accumulate time until stopped, providing clear behavioral context. However, it does not address what happens if a timer is already running, which is a minor gap.

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

Conciseness5/5

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

The description is concise with two sentences, front-loaded with the action, and contains no unnecessary information.

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

Completeness5/5

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

Given the simplicity of the tool (one parameter, no output schema, single action), the description sufficiently covers its functionality and effect.

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

Parameters3/5

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

The single parameter 'timeslip_id' has a basic schema description, and the tool description does not add additional meaning or context beyond identifying the timeslip.

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

Purpose5/5

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

The description uses a specific verb 'Start' and resource 'timer on a timeslip', clearly distinguishing it from sibling tools like 'freeagent_stop_timer' and 'freeagent_create_timeslip'.

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

Usage Guidelines3/5

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

The description implies usage for starting a timer on an existing timeslip, but it lacks explicit guidance on when to use this tool versus alternatives, such as prerequisites or conditions.

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

freeagent_stop_timerStop TimerB

Stop a running timer on a timeslip.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeslip_idYesThe timeslip ID

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It states it stops a running timer, but does not disclose side effects or consequences (e.g., what happens to the timeslip after stopping). Behavior is simple but not fully transparent.

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

Conciseness4/5

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

The description is a single efficient sentence that front-loads the action. It is concise, but could include slightly more contextual information without becoming verbose.

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

Completeness3/5

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

For a simple tool with one parameter and no output schema, the description is adequate but minimal. It does not mention prerequisites (e.g., timer must be running) or error conditions (e.g., what if no timer is running).

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description does not add any meaning beyond the schema; it only mentions 'timeslip' which is already described in the schema. No extra guidance on parameter format or source.

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

Purpose4/5

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

The description clearly states the action 'stop' and the resource 'running timer on a timeslip', distinguishing it from the sibling tool 'freeagent_start_timer'. However, it could be more specific about what 'stop' entails (e.g., marks the timeslip as stopped).

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives (e.g., freeagent_start_timer). It implies it should be used when a timer is running, but does not mention prerequisites or conditions where it should not be used.

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

freeagent_update_bank_accountB

Update an existing bank account in FreeAgent

ParametersJSON Schema
NameRequiredDescriptionDefault
bank_account_idYesThe ID of the bank account to update
nameNoName for the bank account
bank_nameNoName of the bank
is_primaryNoWhether this is the primary account

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description must fully disclose behavior. It states 'Update' but does not describe side effects (e.g., whether other fields are preserved or reset), idempotency, or response format. This is minimal transparency for a 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.

Conciseness5/5

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

The description is a single, clear sentence with no wasted words. It prioritizes the core purpose and is easy to scan.

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

Completeness3/5

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

The tool has a simple input schema (4 scalar parameters, none nested) and no output schema. The description omits the return value (likely the updated account), but this is acceptable for a basic update operation. Nonetheless, mentioning the return type would improve completeness.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for all 4 parameters. The description adds no extra semantic meaning beyond the schema, matching the baseline score of 3. It doesn't clarify that parameters are optional (except bank_account_id) or that partial updates are supported.

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

Purpose5/5

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

The description explicitly states 'Update an existing bank account in FreeAgent', clearly identifying the action (update), resource (bank account), and context (FreeAgent). This distinguishes it from sibling tools like freeagent_create_bank_account and freeagent_delete_bank_account.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. For example, it doesn't mention that the bank account must already exist (requiring a prior create or get) or that only the fields specified in the input schema are updated. Users must infer usage from context.

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

freeagent_update_billB

Update an existing bill in FreeAgent

ParametersJSON Schema
NameRequiredDescriptionDefault
bill_idYesThe ID of the bill to update
referenceNoBill reference
dated_onNoBill date (YYYY-MM-DD)
due_onNoBill due date (YYYY-MM-DD)
commentsNoComments on the bill

TDQS

B3.4/5.0
Behavior2/5

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 only says 'Update', implying mutation, but fails to disclose side effects, authorization needs, or constraints beyond what the schema shows.

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

Conciseness5/5

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

A single, concise sentence that efficiently conveys the tool's purpose with no wasted words.

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

Completeness2/5

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

Given no output schema and no annotations, the description is incomplete. It does not explain what happens on success/failure, return values, or any additional behavioral details needed for a 5-parameter mutation tool.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds no additional meaning to parameters; it simply restates the tool's purpose without elaborating on parameter specifics.

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

Purpose5/5

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

The description clearly states the verb 'Update' and resource 'existing bill' in FreeAgent. It distinguishes from sibling tools like freeagent_create_bill and freeagent_delete_bill.

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

Usage Guidelines3/5

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

No explicit when-to-use, when-not-to-use, or alternatives. The description implies usage for updating a bill but lacks context like prerequisites or comparison to other tools.

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

freeagent_update_contactC

Update an existing contact in FreeAgent

ParametersJSON Schema
NameRequiredDescriptionDefault
contact_idYesThe ID of the contact to update
first_nameNoContact first name
last_nameNoContact last name
organisation_nameNoOrganisation name
emailNoContact email address
phone_numberNoContact phone number
address1NoAddress line 1
address2NoAddress line 2
address3NoAddress line 3
townNoTown or city
postcodeNoPostal code
countryNoCountry
default_payment_terms_in_daysNoDefault payment terms in days

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, so the description must fully convey behavioral traits. While 'update' implies mutation, it does not specify whether the operation is a full replacement or partial update, nor does it mention permissions, side effects, or idempotency. The description is insufficient for an agent to understand the tool's behavior beyond basic mutability.

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

Conciseness4/5

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

The description is a single concise sentence with no unnecessary words. It is well-structured and front-loaded. However, it could be slightly expanded without adding fluff to improve completeness.

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

Completeness2/5

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

Given the tool has 13 parameters (though only 1 required) and no output schema or annotations, the description should explain how the update works (e.g., partial vs full update) and what happens on success. It is too terse to provide a complete understanding, leaving gaps about behavior and response.

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

Parameters3/5

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

Schema description coverage is 100%, so each parameter already has a human-readable description in the input schema. The tool description adds no additional meaning beyond what the schema provides. Since the schema carries the burden, a score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the verb 'update' and the resource 'contact', making the basic purpose evident. It distinguishes from other update tools (e.g., freeagent_update_invoice) by specifying the entity. However, it lacks additional context about what exactly can be updated, which would enhance clarity.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like freeagent_create_contact or freeagent_delete_contact. It does not state prerequisites (e.g., the contact must exist) or scenarios where this tool is preferred. This omission makes it difficult for an agent to choose correctly.

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

freeagent_update_credit_noteB

Update an existing credit note in FreeAgent

ParametersJSON Schema
NameRequiredDescriptionDefault
credit_note_idYesThe ID of the credit note to update
dated_onNoCredit note date in YYYY-MM-DD format
payment_terms_in_daysNoPayment terms in days
commentsNoComments or notes for the credit note

TDQS

B3/5.0
Behavior2/5

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

No annotations; description only says 'Update' without disclosing mutation details, side effects, auth needs, or required permissions. Minimal behavioral info.

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

Conciseness3/5

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

Single sentence is concise but lacks structure. Could be more informative while remaining brief.

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

Completeness2/5

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

No output schema, no annotations. Description fails to explain partial update behavior, required fields, or what values are mandatory. Inadequate for a 4-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters with descriptions, so baseline is 3. Description adds no further meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb (Update) and resource (an existing credit note in FreeAgent). It distinguishes from sibling tools like create, delete, get.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives (e.g., create or delete). No prerequisites or context provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

freeagent_update_estimateB

Update an existing estimate in FreeAgent

ParametersJSON Schema
NameRequiredDescriptionDefault
estimate_idYesThe estimate ID
dated_onNoEstimate date (YYYY-MM-DD)
payment_terms_in_daysNoPayment terms in days
referenceNoEstimate reference
commentsNoComments on the estimate

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries full burden. It does not disclose if updates are partial, idempotent, or require permissions. For a mutation tool, this is incomplete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no waste, but it is overly minimal given the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 5 parameters and no output schema or annotations. The description does not clarify update behavior (e.g., partial vs full), error scenarios, or required fields beyond the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%; all parameters have descriptions in the schema. The description adds no extra meaning, meeting the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Update') and the resource ('existing estimate in FreeAgent'), distinguishing it from sibling tools like create, get, delete, or mark operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., mark_estimate_as_sent/approved). No prerequisites or context about estimate status are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

freeagent_update_expenseB

Update an existing expense in FreeAgent

ParametersJSON Schema
NameRequiredDescriptionDefault
expense_idYesThe ID of the expense to update
categoryNoCategory URL for the expense
dated_onNoDate of the expense (YYYY-MM-DD)
gross_valueNoGross value as a decimal string
descriptionNoDescription of the expense
sales_tax_rateNoSales tax rate as a decimal string
projectNoProject URL to associate with
receipt_referenceNoReceipt reference for the expense

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden for behavioral disclosure. It only says 'update', but does not explain mutational behavior, idempotency, error handling for missing expenses, 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, which is concise but lacks structure. It is not verbose, but could be considered under-specified rather than efficiently informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 8 parameters, no output schema, and no annotations, the description fails to provide context on how to use the tool effectively, return values, or relationships to other expense operations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers all 8 parameters with descriptions (100% coverage). The tool description adds no additional semantic information beyond what the schema already provides, so baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Update an existing expense in FreeAgent', using a specific verb ('update') and resource ('expense'). This distinguishes it from sibling tools like create_expense and delete_expense.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like create_expense for new expenses or get_expense for retrieval. There is no mention of prerequisites or context for updates.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

freeagent_update_invoiceC

Update an existing invoice in FreeAgent

ParametersJSON Schema
NameRequiredDescriptionDefault
invoice_idYesThe invoice ID
dated_onNoInvoice date (YYYY-MM-DD)
payment_terms_in_daysNoPayment terms in days
referenceNoInvoice reference
currencyNoCurrency code
commentsNoComments to appear on the invoice

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, description only states 'update' implying mutation. No details on permissions, side effects, or error conditions. Schema covers parameter definitions but not behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise single sentence with no extraneous information. Front-loaded verb and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having 6 parameters fully described in schema, the description lacks context on update behavior (e.g., whether it performs a partial update), return values, or error handling. Insufficient for a complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each parameter has a clear description. The tool description adds no extra meaning 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Update' and the resource 'existing invoice in FreeAgent', distinguishing it from sibling tools like create_invoice, delete_invoice, etc. However, it lacks details on scope (e.g., partial vs full update).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., when to update vs recreate invoice). No prerequisites or exclusions mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

freeagent_update_projectC

Update an existing project in FreeAgent

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID
nameNoProject name
statusNoProject status
budgetNoProject budget
budget_unitsNoBudget units
currencyNoCurrency code
normal_billing_rateNoNormal billing rate
hours_per_dayNoHours per day
billing_periodNoBilling period
is_ir35NoWhether the project is IR35
starts_onNoProject start date (YYYY-MM-DD)
ends_onNoProject end date (YYYY-MM-DD)
uses_project_invoice_sequenceNoWhether to use project invoice sequence

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must fully convey behavioral traits. It only indicates that the tool updates, but does not disclose whether the update is partial or full, if there are side effects, permission requirements, or destructive potential. This is insufficient for an agent to understand the implications of invoking it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single-sentence description is extremely concise, begins with the action verb, and contains no extraneous information. Every word serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (13 parameters, no output schema, no annotations), the description is too minimal. It does not explain what the tool returns, error handling, prerequisites, or how updates are applied (e.g., partial vs. full replacement). This leaves the agent with insufficient context to use it effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All 13 parameters have descriptions in the input schema, so schema coverage is 100%. The tool description adds no additional meaning beyond the schema. According to the rubric, baseline is 3 when coverage is high, which is appropriate here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Update', resource 'project', and system 'FreeAgent'. It is not a tautology and distinguishes from sibling 'freeagent_create_project' by specifying 'existing'. However, it does not elaborate on which fields can be updated, which would enhance clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'freeagent_create_project' or 'freeagent_get_project'. The description merely states its function without context for appropriate usage scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

freeagent_update_taskUpdate TaskC

Update an existing task in FreeAgent.

ParametersJSON Schema
NameRequiredDescriptionDefault
task_idYesThe ID of the task to update
nameNoName of the task
is_billableNoWhether the task is billable
billing_rateNoBilling rate for the task
billing_periodNoBilling period: hour, day, week, month, or year
statusNoTask status: Active, Completed, or Hidden

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Update an existing task', failing to disclose effects like whether the update is idempotent, permissions required, or error behaviors (e.g., if task_id is invalid). No annotations exist, so transparency 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no wasted words. It is front-loaded with the purpose, but it could be more structured to include context like required fields or usage notes. Suitable conciseness but minimal content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 parameters, no output schema, and no annotations, the description is inadequate. It does not explain return values, error handling, or prerequisites. The schema is well-documented but the description lacks broader context needed for a mutation tool in a complex system.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with each parameter having a description (e.g., task_id pattern, enum values). The description adds no extra meaning beyond the schema; it simply repeats the tool's purpose. Baseline 3 is appropriate as the schema already documents parameters adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Update an existing task in FreeAgent' clearly specifies the verb (Update) and resource (existing task), making the purpose understandable. However, it does not differentiate from sibling tools like freeagent_update_bill or freeagent_update_project, which are similarly named. The purpose is clear but lacks sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, such as other update tools or create/delete tools. There is no mention of prerequisites, typical use cases, or when not to use it. The agent must infer usage from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

freeagent_update_timeslipUpdate TimeslipB

Update an existing timeslip in FreeAgent.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeslip_idYesThe timeslip ID
dated_onNoDate for the timeslip (YYYY-MM-DD)
hoursNoNumber of hours as a decimal string
commentNoComment for the timeslip
taskNoTask URL

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description must disclose behavioral traits. It only says 'Update', which implies mutation, but fails to mention safety (e.g., reversibility), authorization needs, or consequences of modifying a timeslip.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that directly conveys the tool's purpose without unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite 5 parameters and no output schema or annotations, the description provides minimal context. It does not explain the update behavior (e.g., partial vs full update), error cases, or link to related tools, making it incomplete for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with all 5 parameters having descriptions in the input schema. The tool description adds no additional meaning beyond the schema, meeting the baseline but not compensating for any gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Update' and the resource 'existing timeslip' in FreeAgent, which distinguishes it from sibling tools like freeagent_create_timeslip and freeagent_delete_timeslip.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, such as creating a new timeslip or using other update tools. Prerequisites like requiring an existing timeslip are implied but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

freeagent_update_userC

Update an existing user

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYesThe ID of the user to update
first_nameNoUpdated first name
last_nameNoUpdated last name
roleNoUpdated role of the user
permission_levelNoUpdated permission level from 0 (no access) to 8 (full access)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description should disclose side effects such as mutability, idempotency, or error behavior. It simply states 'Update an existing user' without explaining what happens if the user doesn't exist, if partial updates are allowed, or what the response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence. It is concise and to the point. However, it sacrifices detail for brevity, which is acceptable given the schema coverage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 5 parameters and no output schema, yet the description offers no information about return values, error conditions, or the effect of partial updates. It is incomplete for confident use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is already documented with descriptions. The tool description adds no extra semantic meaning beyond the schema. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Update an existing user' clearly indicates the action (update) and the resource (user). It distinguishes from sibling tools like create_user and delete_user, though it could be more specific about which fields are updated, but the schema already lists them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives (e.g., create_user for new users, delete_user for removal). There is no mention of prerequisites, permissions, or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 76 tool updatesv1.3.0
    • First observedfreeagent_create_bank_account
    • First observedfreeagent_create_bill
    • First observedfreeagent_create_contact
    • First observedfreeagent_create_credit_note
    • First observedfreeagent_create_estimate
    • First observedfreeagent_create_expense
    • First observedfreeagent_create_invoice
    • First observedfreeagent_create_project
    • First observedfreeagent_create_task
    • First observedfreeagent_create_timeslip
    • First observedfreeagent_create_user
    • First observedfreeagent_delete_bank_account
    • First observedfreeagent_delete_bill
    • First observedfreeagent_delete_contact
    • First observedfreeagent_delete_credit_note
    • First observedfreeagent_delete_estimate
    • First observedfreeagent_delete_expense
    • First observedfreeagent_delete_invoice
    • First observedfreeagent_delete_project
    • First observedfreeagent_delete_task
    • First observedfreeagent_delete_timeslip
    • First observedfreeagent_delete_user
    • First observedfreeagent_get_balance_sheet
    • First observedfreeagent_get_bank_account
    • First observedfreeagent_get_bank_transaction
    • First observedfreeagent_get_bill
    • First observedfreeagent_get_category
    • First observedfreeagent_get_company
    • First observedfreeagent_get_contact
    • First observedfreeagent_get_credit_note
    • First observedfreeagent_get_current_user
    • First observedfreeagent_get_estimate
    • First observedfreeagent_get_expense
    • First observedfreeagent_get_invoice
    • First observedfreeagent_get_opening_balances
    • First observedfreeagent_get_profit_and_loss
    • First observedfreeagent_get_project
    • First observedfreeagent_get_task
    • First observedfreeagent_get_tax_timeline
    • First observedfreeagent_get_timeslip
    • First observedfreeagent_get_trial_balance
    • First observedfreeagent_get_trial_balance_opening
    • First observedfreeagent_get_user
    • First observedfreeagent_list_bank_accounts
    • First observedfreeagent_list_bank_transactions
    • First observedfreeagent_list_bills
    • First observedfreeagent_list_business_categories
    • First observedfreeagent_list_categories
    • First observedfreeagent_list_contacts
    • First observedfreeagent_list_credit_notes
    • First observedfreeagent_list_estimates
    • First observedfreeagent_list_expenses
    • First observedfreeagent_list_invoices
    • First observedfreeagent_list_projects
    • First observedfreeagent_list_tasks
    • First observedfreeagent_list_timeslips
    • First observedfreeagent_list_users
    • First observedfreeagent_mark_estimate_as_approved
    • First observedfreeagent_mark_estimate_as_sent
    • First observedfreeagent_mark_invoice_as_cancelled
    • First observedfreeagent_mark_invoice_as_draft
    • First observedfreeagent_mark_invoice_as_sent
    • First observedfreeagent_send_invoice_email
    • First observedfreeagent_start_timer
    • First observedfreeagent_stop_timer
    • First observedfreeagent_update_bank_account
    • First observedfreeagent_update_bill
    • First observedfreeagent_update_contact
    • First observedfreeagent_update_credit_note
    • First observedfreeagent_update_estimate
    • First observedfreeagent_update_expense
    • First observedfreeagent_update_invoice
    • First observedfreeagent_update_project
    • First observedfreeagent_update_task
    • First observedfreeagent_update_timeslip
    • First observedfreeagent_update_user

TDQS

B3.4/5.0

Scored across 76 tools

Disambiguation5/5

Each tool targets a distinct entity and action (create, get, list, update, delete, etc.) with clear naming. Entities like bill, expense, invoice, etc. are well-differentiated, minimizing ambiguity.

Naming Consistency5/5

All tools follow the pattern 'freeagent_verb_noun' with consistent verbs (create, get, list, update, delete) and nouns (bank_account, bill, contact, etc.). Special actions like mark_estimate_as_sent also fit the pattern.

Tool Count4/5

At 76 tools, the count is high but appropriate for a comprehensive integration with FreeAgent, covering many entities and lifecycle operations. It is slightly above the typical range but not excessive for the domain.

Completeness3/5

CRUD operations cover most entities, but notable gaps exist: there is no tool to record a payment against an invoice, mark an invoice as paid, or apply a credit note to an invoice. These are common accounting workflows missing from the surface.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    An MCP server that enables AI agents to interact with QuickBooks Online accounts to manage invoices, customers, payments, and financial reports. It provides 20 tools to automate accounting workflows and retrieve financial data through natural language interfaces.
    -
  • A
    license
    B
    quality
    C
    maintenance
    MCP server to interact with the Cuéntica accounting API, allowing users to manage invoices, expenses, income, clients, providers, and bank accounts via natural language.
    59
    2
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for the FreeAgent accounting API, enabling LLMs to securely access and manage accounting data including contacts, invoices, bills, bank transactions, and more.
    5 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    A Model Context Protocol server for the FreeAgent accounting API, enabling LLMs to manage contacts, invoices, estimates, bills, expenses, timeslips, projects, tasks, bank accounts, and more.
    12 npm
    10
    MIT