Skip to main content
Glama
nikan

elorus-mcp

by nikan

elorus-mcp

MCP server for the Elorus invoicing and accounting platform. Enables AI assistants to create invoices, manage contacts, and query financial data through natural language.

Setup

Prerequisites

  • Node.js 20+

  • An Elorus account with an API key and organization ID

Getting your credentials

  1. API key — open the Elorus web app → User Profile → API key

  2. Organization ID — open the Elorus web app → Settings → Organization → Organization ID

Install

npx elorus-mcp

Or clone and build locally:

git clone https://github.com/your-org/elorus-mcp
cd elorus-mcp
npm install && npm run build

Related MCP server: mcp-ai-fiskalizacija

Claude Desktop configuration

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "elorus": {
      "command": "npx",
      "args": ["elorus-mcp"],
      "env": {
        "ELORUS_API_KEY": "your-api-key",
        "ELORUS_ORG_ID": "your-org-id"
      }
    }
  }
}

Claude Code configuration

claude mcp add elorus -e ELORUS_API_KEY=your-api-key -e ELORUS_ORG_ID=your-org-id -- npx elorus-mcp

Local development

For local development, npm start loads environment variables from a .env file (via node --env-file) instead of requiring them to be passed inline. Copy .env.example to .env and fill in your credentials:

cp .env.example .env

Variable

Required

Description

ELORUS_API_KEY

Yes

Your Elorus API key

ELORUS_ORG_ID

Yes

Your Elorus organization ID

ELORUS_DEMO

No

Set to 1 to send X-Elorus-Demo: 1 on all requests (targets Elorus's demo/sandbox environment)

Note: if the server is launched by an MCP client config (e.g. Claude Desktop/Code) with its own env block, that env block takes precedence and .env is not read — only npm start invokes node --env-file=.env. Keep credentials in one place to avoid the two silently diverging.

Available tools

Contacts

Tool

Description

list_contacts

Search/filter contacts (clients, suppliers, or both) with pagination

get_contact

Fetch a contact by ID

create_contact

Create a client, supplier, or both

update_contact

Update fields on an existing contact

Invoices

Tool

Description

list_invoices

Filter invoices by status, client, date range

get_invoice

Fetch an invoice by ID

create_invoice

Create a sales invoice with line items and taxes

void_invoice

Void an invoice (excluded from financial reports, cannot be edited or paid)

send_invoice_email

Email an invoice to the client

export_invoice_pdf

Export an invoice as a PDF (returns a download URL)

Bills (supplier purchase invoices)

Tool

Description

list_bills

Filter supplier bills by supplier, status, or date range

get_bill

Fetch a bill by ID

create_bill

Create a supplier bill with line items and taxes

update_bill

Update fields on an existing bill

void_bill

Void a bill

Expenses

Tool

Description

list_expenses

Filter expense records by supplier, category, or date range

get_expense

Fetch an expense by ID

create_expense

Record a new business expense. Line items use expense_category/amount/description (not the invoice-style title/quantity/unit_value)

update_expense

Update fields on an existing expense

add_expense_attachment

Attach a file (e.g. a receipt or supplier invoice PDF) to an existing expense, given base64-encoded content

export_expense_pdf

Export an expense document as a PDF (returns a download URL)

Credit notes (issued to clients)

Tool

Description

list_credit_notes

Filter credit notes by client or date range

create_credit_note

Create a credit note to reduce or cancel an amount owed by a client

apply_credit_note

Apply a credit note against an open invoice

Supplier credits (received from suppliers)

Tool

Description

list_supplier_credits

Filter supplier credits by supplier or date range

create_supplier_credit

Record a credit note received from a supplier

apply_supplier_credit

Apply a supplier credit against an open bill

Cash receipts (payments received from clients)

Tool

Description

list_cash_receipts

Filter by client, invoice, or date range

record_cash_receipt

Record a payment received from a client, optionally linked to an invoice

export_cash_receipt_pdf

Export a cash receipt as a PDF (returns a download URL)

Cash payments (payments made to suppliers)

Tool

Description

list_cash_payments

Filter by supplier, bill, or date range

record_cash_payment

Record a payment made to a supplier, optionally linked to a bill

update_cash_payment

Update fields (e.g. title/bank reference) on an existing payment

delete_cash_payment

Permanently delete a payment made to a supplier

Products

Tool

Description

list_products

Search the products/services catalog

get_product

Fetch a product by ID

create_product

Add a product or service to the catalog

update_product

Update fields on an existing product or service

Notes and discussions

Tool

Description

list_private_notes

List internal notes on a resource (visible only to organization members)

create_private_note

Add an internal note to a resource

list_client_discussions

List client-visible discussion messages on a resource

create_client_discussion

Post a client-visible message on an invoice or cash receipt

Configuration lookups

Tool

Description

list_taxes

List tax rates configured in the organization

list_document_types

List document types (required for creating invoices, bills, credit notes, etc.)

list_units

List units of measurement (e.g. hours, pieces, kg)

list_expense_categories

List expense categories

MCP Resources

Read-only resources that return up to 100 of the most recent records as JSON, without needing a tool call:

Resource URI

Description

elorus://contacts

All contacts (clients and suppliers)

elorus://invoices

All sales invoices, most recent first

elorus://cashreceipts

All cash receipts (payments received from clients)

elorus://cashpayments

All cash payments (payments made to suppliers)

elorus://expenses

All expense records

elorus://bills

All supplier bills

elorus://products

All products and services in the catalog

Example prompts

  • "Create an invoice for Acme Corp for 5 hours of consulting at €150/hour with 24% VAT"

  • "What invoices are overdue this month?"

  • "Look up the contact for Elorus FC and show their details"

  • "Add a new product called 'Website Design' at €800 with standard VAT"

  • "Record a €45 office supplies expense from Staples"

  • "What bills are overdue from our suppliers?"

  • "Apply this credit note to invoice #1042"

Notes

  • All monetary values are strings (e.g. "1500.00") to avoid floating-point precision issues

  • Use list_taxes, list_document_types, list_units, and list_expense_categories to look up valid IDs before creating invoices, bills, expenses, credit notes, or products (bills don't use a document type — only invoices, credit notes, and estimates do)

  • Invoice/credit-note/supplier-credit line items use title/quantity/unit_value (or unit_total, depending on calculator_mode); bill line items also require expense_category; expense line items use a different shape: expense_category/amount/description

  • Elorus does not provide idempotency keys — query before creating to avoid duplicates

  • Pagination params: page (default 1) and page_size (default 20, max 100)

Available Tools

43 tools
apply_credit_noteA

Apply a credit note against an open invoice to reduce the amount owed. The credit note and invoice must belong to the same client.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe credit note ID to apply
amountYesAmount to apply as a string, e.g. '150.00' (cannot exceed credit note balance)
invoiceYesThe invoice ID to apply the credit against

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 for behavioral disclosure. It states the action (apply credit) but does not detail side effects, reversibility, permission requirements, or what happens to the invoice status. For a mutation tool, this is insufficient 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 two concise sentences with no wasted words. It front-loads the action and includes the critical constraint, making it efficient for quick assessment.

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 simple tool with 3 parameters and no annotations, the description provides the essential purpose and a constraint. However, it lacks details about post-application state (e.g., invoice status change, partial vs full apply) and does not explain the return behavior (no output schema). It is minimally adequate but could be more 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%, so the schema already documents all three parameters. The description does not add parameter-specific details beyond the schema; the only added context is the client-matching constraint, which is not parameter-level. 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 ('apply a credit note against an open invoice to reduce the amount owed') and identifies both resources (credit note, invoice) with a specific constraint (same client). This distinguishes it from sibling tools like 'apply_supplier_credit' and '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 Guidelines4/5

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

The description provides a clear constraint ('must belong to the same client'), which helps the agent know when the tool is valid. However, it does not explicitly state when to use this tool over alternatives or mention 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.

apply_supplier_creditB

Apply a supplier credit against an open bill to reduce the amount owed to the supplier.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe supplier credit ID to apply
billYesThe bill ID to apply the supplier credit against
amountYesAmount to apply as a string, e.g. '100.00' (cannot exceed supplier credit balance)

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 full burden. It mentions 'against an open bill' and 'reduce amount owed', implying a mutation, but lacks details on side effects, prerequisites, reversibility, or required permissions. Insufficient for a write operation.

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

Conciseness5/5

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

Single sentence, 14 words, no redundancy. Information is front-loaded and directly addresses the tool's function.

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 3-parameter tool with no output schema, the description is mostly adequate but lacks prerequisites (e.g., having a valid supplier credit) and post-conditions. Without annotations, more behavioral context 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 parameter descriptions, so the baseline is 3. The description does not add additional meaning beyond the schema; it only contextualizes the overall operation.

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 (apply), the resource (supplier credit), and the purpose (reduce amount owed). It is specific and avoids vagueness, but does not differentiate from the sibling 'apply_credit_note' 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 explicit guidance on when to use this tool versus alternatives like 'apply_credit_note' or 'record_cash_payment'. The description only states what the tool does, not the context of use.

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

create_billC

Create a supplier bill (purchase invoice). Use list_taxes and list_document_types to obtain valid IDs before calling this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 carries the full burden of behavioral disclosure. It only says 'Create a supplier bill', implying a mutation, but lacks details on permissions, idempotency, side effects, or what happens on success/failure.

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 two sentences, front-loading the purpose and adding relevant guidance. It is concise with no wasted words, but lacks necessary details 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?

Given zero parameters and no output schema, the description is very thin. A creation tool typically needs to specify required inputs, return values, and error conditions. The description only hints at prerequisites but does not provide a complete understanding.

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

Parameters2/5

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

Schema coverage is 100% due to zero parameters, so baseline is 3. However, the description mentions using 'list_taxes' and 'list_document_types' to get IDs, suggesting required parameters that are missing from the schema. This contradiction reduces clarity and adds misleading information.

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 supplier bill (purchase invoice)', which is a specific verb+resource and distinguishes it from siblings like 'create_invoice' or 'create_credit_note'. However, the empty input schema contradicts the implication that parameters like tax and document type IDs are needed.

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 advises using 'list_taxes' and 'list_document_types' to obtain valid IDs before calling this tool, providing some prerequisite guidance. But it does not explicitly state when to use this tool versus alternatives like 'update_bill' or 'void_bill'.

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

create_client_discussionA

Post a client-visible message on an Elorus resource (invoice or cash receipt). The client can see this message in their client portal.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesThe discussion message content
resource_idYesThe ID of the resource to attach the discussion to
resource_typeYesThe type of Elorus resource to post the discussion on

TDQS

A3.7/5.0
Behavior3/5

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

No annotations provided. Description indicates this is a write operation (creates a discussion) but does not disclose any behavioral traits such as permissions required, reversibility, or side effects on the resource.

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 with no redundancy. Front-loaded with key information. Every word adds value.

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 return value is unknown. Description covers basic purpose and visibility but omits error conditions, success indicators, and any behavioral details like rate limits or idempotency.

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 parameters. Description adds context that body is client-visible, but this is already implied by the tool name and overall description. 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?

Description clearly states the action 'post a client-visible message' on specific resources (invoice or cash receipt), with explicit client visibility. This differentiates it from sibling tools like create_private_note.

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 client-facing communication but does not explicitly state when to use this tool versus alternatives like create_private_note. No guidance on exclusions or prerequisites.

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

create_contactB

Create a new contact (client, supplier, or both). Requires either 'company' (for businesses) or at least one of 'first_name'/'last_name' (for individuals).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 fully disclose behavioral traits. It only mentions required fields but does not describe side effects, permissions, error handling, or what happens if both company and personal names are provided.

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 purpose and followed by essential requirements.

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 empty input schema and lack of output schema, the description is insufficient. It mentions required fields but omits types, constraints, and any details about the created contact's return value or behavior.

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

Parameters1/5

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

The input schema defines zero properties, but the description implies parameters ('company', 'first_name', 'last_name'). This contradiction undermines the tool's usability. The description adds meaning but conflicts with 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 'Create' and the resource 'contact', specifying the subtypes (client, supplier, or both). This distinguishes it from sibling tools like update_contact or list_contacts.

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 provides explicit requirements for required fields ('company' or at least one of 'first_name'/'last_name'), guiding the agent on when and how to use the tool. However, it does not mention when not to use it or compare to alternative tools.

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

create_credit_noteA

Create a credit note to reduce or cancel an amount owed by a client. Use list_taxes and list_document_types to obtain valid IDs before calling this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/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 describes the basic action but does not disclose behavioral traits such as whether the tool is destructive, side effects, required fields, or what the response looks like. More depth is needed.

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, front-loaded with purpose, and a second sentence providing immediate next steps. 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 tool with no parameters and no output schema, the description is fairly complete but lacks clarification on the absence of parameters and does not hint at return values. The mention of IDs without corresponding schema properties creates confusion.

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

Parameters2/5

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

The input schema has zero properties, yet the description mentions obtaining IDs from list_taxes and list_document_types, implying parameters exist. This is misleading. Since schema coverage is 100%, the description should not suggest parameters that are not present.

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 'Create', the resource 'credit note', and the purpose 'to reduce or cancel an amount owed by a client'. It distinguishes from sibling tools like 'apply_credit_note' and 'create_invoice'.

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 provides explicit prerequisite guidance: 'Use list_taxes and list_document_types to obtain valid IDs before calling this tool.' However, it does not explicitly state when not to use it or mention alternatives among siblings.

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

create_expenseB

Record a new business expense. Use list_taxes, list_document_types, and list_expense_categories to obtain valid IDs before calling this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided; description does not disclose behavioral traits like side effects, authentication, or rate limits. Implies creation without stating if it's destructive or requires permissions. The empty input schema contradicts the implication of needed 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?

Two concise sentences: one for purpose, one for prerequisite. 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?

Missing details on return value, error handling, and what happens with IDs. No output schema. For a create tool, the description should indicate what is returned. The empty schema also suggests incomplete 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?

Input schema is empty (0 params, 100% coverage trivially). Description implies parameters (IDs) are required but does not name them or specify format, adding some value beyond the empty 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 states the tool records a new business expense. This is specific but does not differentiate from sibling create tools like create_bill. It clearly identifies the resource.

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?

Provides explicit prerequisite: use list_taxes, list_document_types, and list_expense_categories to get IDs before calling. Does not mention when not to use it or alternatives.

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

create_invoiceA

Create a new sales invoice. Monetary values must be strings (e.g. '1500.00') to avoid floating-point issues. Use list_taxes and list_document_types to obtain valid IDs before calling this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description adds some behavioral context: monetary values must be strings to avoid floating-point issues. However, it does not disclose other critical behaviors (e.g., required fields, side effects, authorization needs).

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 three clear, purposeful sentences with no redundancy. It front-loads the core action, then provides a data type tip and a prerequisite instruction efficiently.

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 complexity of a create tool (likely many parameters, side effects, and no output schema), the description is too brief. It lacks details on required fields, return values, error states, and other critical context.

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 input schema has 0 parameters, so the description carries the full burden. It implies parameters for monetary values and IDs from list_taxes/list_document_types, adding meaning beyond the schema. But it does not explicitly list all expected 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 the tool's action: 'Create a new sales invoice.' It uses a specific verb and resource, and is distinct from sibling tools like create_bill and 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 Guidelines4/5

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

The description advises using list_taxes and list_document_types to obtain valid IDs before calling, which provides clear prerequisite context. However, it does not explicitly state when not to use this tool or compare with siblings.

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

create_private_noteA

Add an internal (private) note to an Elorus resource. Notes are visible only to organization members, not to clients.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesThe note content
titleNoShort title or subject for the note
resource_idYesThe ID of the resource to attach the note to
resource_typeYesThe type of Elorus resource the note is attached to

TDQS

A3.7/5.0
Behavior3/5

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

No annotations exist, so description must carry burden. It discloses that notes are visible only to organization members, which is key behavioral info. Missing details on idempotency, limits, or side effects beyond visibility.

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, front-loaded with purpose and key behavioral trait. No redundant or extra information. Every sentence adds value.

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?

Simple tool without output schema; description covers basic purpose and visibility. Lacks context on relation to list_private_notes, error conditions, or authentication. Adequate but not comprehensive.

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. Description adds no extra semantics beyond the schema for parameters. The description does not elaborate on parameter usage or format.

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 verb (Add) and resource (internal note to Elorus resource) with explicit visibility distinction from client-facing notes. Differentiates from sibling tools like create_client_discussion.

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?

Implies usage via visibility (internal vs client) but no explicit when-to-use or when-not-to-use guidance. No alternatives mentioned beyond implied contrast.

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

create_productB

Create a new product or service in the catalog. Monetary values must be strings (e.g. '99.99') to avoid floating-point issues.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeNoProduct code or SKU for internal reference
unitNoUnit of measurement ID (obtain from list_units), e.g. hours, pieces, kg
notesNoInternal notes about this product
taxesNoArray of tax IDs to apply by default on this product (obtain IDs via list_taxes)
titleYesProduct or service name
sale_priceNoDefault selling price before tax as a string, e.g. '99.99'
descriptionNoDetailed description of the product or service
purchase_priceNoDefault purchase/cost price before tax as a string, e.g. '60.00'

TDQS

B3.4/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. Only mentions monetary string requirement; lacks info on side effects, permissions, idempotency, or return behavior.

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 concise sentences: first states purpose, second provides a critical formatting note. No unnecessary words.

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?

Adequate for a creation tool with 8 parameters; thorough schema descriptions compensate. Lacks a note on what the response contains (e.g., created product ID), but not critical.

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. Description reinforces schema for sale_price/purchase_price but adds no new semantic meaning beyond what's already 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 specifies verb 'Create' and resource 'product or service in the catalog', distinguishing it from sibling tools like create_bill, create_invoice, etc.

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; no prerequisites or context provided for invocation.

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

create_supplier_creditA

Record a credit note received from a supplier (e.g. a refund or price correction on a bill). Use list_taxes and list_document_types to obtain valid IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided, so description carries burden. It clarifies the action (recording a credit note) but lacks details on side effects, return value, or authentication requirements. Minimal but clear for a zero-parameter 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?

Two sentences, front-loaded with verb and resource, no unnecessary words. Every sentence earns its place.

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 parameters and no output schema, description is nearly complete. It explains the tool's purpose and provides prerequisite hints. Could mention return values (e.g., the created credit ID) but sufficient for a simple creation tool.

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 in schema, so baseline is 4. Description adds value by referencing the need for valid tax and document type IDs, which implies implicit dependencies. Does not repeat 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?

Specific verb ('Record') and resource ('credit note received from a supplier') with clear examples (refund, price correction). Distinguishes from siblings like create_credit_note (for customers) and apply_supplier_credit (applying existing credit).

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 mentions using list_taxes and list_document_types to obtain valid IDs, providing actionable guidance. However, does not explicitly differentiate from other similar creation tools like create_credit_note.

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

export_cash_receipt_pdfB

Export a cash receipt as a PDF. Returns a download URL for the generated PDF file.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe Elorus cash receipt ID to export

TDQS

B3.2/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 fully disclose behavior. It only states it returns a download URL, without mentioning if the operation is read-only, whether the URL is temporary, synchronicity, or any side effects. 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, front-loaded sentence with no wasted words. However, 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.

Completeness3/5

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

With one simple parameter and no output schema, the description is adequate but minimal. It does not explain the download URL's nature (e.g., expiry, authentication), nor any constraints on the cash receipt state.

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% (one parameter 'id' with clear description). The tool description adds no additional 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.

Purpose5/5

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

The description clearly states the tool exports a cash receipt as PDF and returns a download URL, with specific verb 'export' and resource 'cash receipt'. It is distinct from sibling tools like export_expense_pdf and export_invoice_pdf.

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, no prerequisites stated (e.g., receipt must exist or not be voided), and no exclusions mentioned. The presence of sibling tools without differentiation leaves the agent without context for selection.

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

export_expense_pdfA

Export an expense document as a PDF. Returns a download URL for the generated PDF file.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe Elorus expense ID to export

TDQS

A3.6/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 states the output (download URL) but lacks details on side effects, permissions, or synchronous/asynchronous behavior. For a simple export, this 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.

Conciseness5/5

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

The description is two sentences with no extraneous information. Every word contributes value, making it concise and front-loaded.

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 a single parameter, no output schema, and no annotations, the description covers purpose and output adequately. It lacks mention of potential latency or file size limits but is mostly complete for a straightforward export.

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. The description adds no extra meaning beyond what the schema already provides ('The Elorus expense ID to export'), so 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 uses a specific verb 'Export' and resource 'expense document as a PDF', clearly distinguishing it from sibling PDF export tools like export_cash_receipt_pdf and export_invoice_pdf by specifying the document type.

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 (for exporting expense PDFs) but provides no explicit guidance on when not to use or alternatives among similar export tools. Sibling names exist but are not referenced.

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

export_invoice_pdfA

Export an invoice as a PDF. Returns a download URL for the generated PDF file.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe Elorus invoice ID to export

TDQS

A3.5/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It mentions the outcome (download URL) but does not disclose side effects (e.g., whether invoice is marked as exported, any time limits on URL, or authorization needs). Minimal but not contradictory.

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 with no redundancy. Front-loaded with purpose. Every word adds value.

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?

Tool is simple with one parameter. Description covers purpose and output format, but lacks context on when export is appropriate, file retention, or expiration of URL. No output schema, so description partially compensates but could be more 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 coverage is 100% with descriptive parameter name and description. The description adds no additional meaning beyond 'export an invoice' which restates 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?

The description clearly states the action (Export an invoice as a PDF) and the result (Returns a download URL). It distinguishes from sibling PDF export tools for other resources like cash receipts and expenses.

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, prerequisites (e.g., invoice must exist, be finalized), or when not to use. No alternatives mentioned despite sibling tools for other document types.

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

get_billA

Fetch a single supplier bill by its Elorus ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe Elorus bill ID

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, and the description does not disclose behavioral traits such as read-only nature, performance, or prerequisites. For a simple fetch, it is 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?

One sentence of 10 words, front-loaded with key information, no redundancy.

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 one parameter, the description sufficiently explains what the tool does. It could specify return format but is adequate for a simple retrieval.

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 baseline is 3. The description confirms the parameter's purpose but adds no additional meaning beyond the schema's 'The Elorus bill ID'.

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 'Fetch' and resource 'single supplier bill' with a clear identifier 'by its Elorus ID'. It distinguishes from siblings like 'list_bills' (multiple) and 'create_bill' (different action).

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 fetching a single bill by ID, which is clear from context. However, it does not explicitly mention when to use alternatives like 'list_bills' for multiple bills.

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

get_contactB

Fetch a single contact by its Elorus ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe Elorus contact ID

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 'Fetch a single contact' but does not disclose any behavioral traits such as whether it is idempotent, what happens on error, or any 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?

The description is a single, clear sentence with no redundancy. It is front-loaded and to the point.

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 parameter, no output schema, no annotations), the description is mostly adequate. However, it lacks any mention of return format or error handling, which are minor omissions for a straightforward fetch 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 description coverage is 100% with one parameter 'id' adequately described. The 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.

Purpose5/5

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

The description clearly states the verb 'Fetch', the resource 'contact', and the identifier method 'by its Elorus ID'. This distinguishes it from sibling tools like list_contacts, create_contact, and update_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?

The description provides no guidance on when to use this tool versus alternatives like list_contacts. There are no prerequisites, exclusions, or context for choosing this over similar tools.

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

get_expenseA

Fetch a single expense record by its Elorus ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe Elorus expense ID

TDQS

A4/5.0
Behavior3/5

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

No annotations provided. Description implies read operation ('Fetch') but does not explicitly state idempotency, permissions, or side effects. Adequate for a simple get-by-ID 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, no redundant words, front-loaded with verb 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?

Tool is simple (1 param, no output schema). Description covers purpose and key constraint. Could mention return format or error cases, but not strictly necessary.

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 'The Elorus expense ID'. Description adds no extra meaning beyond schema. Baseline score 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?

Description clearly states verb 'Fetch', resource 'expense record', and scope 'single... by its Elorus ID'. Distinct from siblings like list_expenses or 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 Guidelines4/5

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

Implicitly clear: use when you have a specific ID and need a single record. Lacks explicit exclusions or alternatives, but context from name and siblings suffices.

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

get_invoiceB

Fetch a single invoice by its Elorus ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe Elorus invoice ID

TDQS

B3.3/5.0
Behavior2/5

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

No annotations exist, and the description does not disclose any behavioral traits such as authorization requirements, side effects, or error handling for missing invoices.

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. Every word contributes meaning.

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 fetch operation with one required parameter and no output schema, the description is adequate. However, it lacks context on expected behavior (e.g., what if the invoice does not exist?).

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 clear description for the id parameter. The tool description adds no additional meaning beyond what the schema provides, warranting 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 clearly states 'Fetch a single invoice by its Elorus ID', using a specific verb and resource identifier. This distinguishes it from sibling tools like list_invoices or create_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?

No guidance is provided on when to use this tool versus alternatives (e.g., list_invoices). No context on prerequisites or limitations.

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

get_productA

Fetch a single product or service by its Elorus ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe Elorus product ID

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the full burden. It indicates a read operation ('Fetch'), but does not disclose potential behaviors like caching, error handling on not found, or authentication requirements. This is 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?

The description is a single sentence with no wasted words. It captures all essential information efficiently.

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 fetch tool with one parameter and no output schema, the description covers the basic purpose and key identifier. It could mention the return format or error states, but overall it is fairly complete for its simplicity.

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 description adds meaning beyond the schema by specifying that the id is an 'Elorus ID', clarifying the type of identifier. The schema only says 'The Elorus product ID' but the description reinforces this.

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 'Fetch', the resource 'product or service', and the unique identifier 'by its Elorus ID'. This distinguishes it from sibling tools like list_products and create_product.

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 provide guidance on when to use this tool versus alternatives. It is implied that you use it to retrieve a single product, but no direct comparison 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.

list_billsA

List supplier bills (purchase invoices). Returns paginated results. Filter by supplier, status, or date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)
searchNoSearch term for bill number or supplier name
statusNoFilter by bill status
orderingNoSort field, e.g. '-date' for newest first
supplierNoFilter by supplier contact ID
page_sizeNoResults per page (default: 20, max: 100)
date_afterNoFilter bills issued on or after this date (YYYY-MM-DD)
date_beforeNoFilter bills issued on or before this date (YYYY-MM-DD)
due_date_afterNoFilter by due date on or after (YYYY-MM-DD)
due_date_beforeNoFilter by due date on or before (YYYY-MM-DD)

TDQS

A3.6/5.0
Behavior3/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 discloses pagination and filtering but does not mention rate limits, whether the operation is read-only (though implied), default behavior without parameters, or potential side effects. This is 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.

Conciseness4/5

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

The description is concise at 34 words, effectively conveying the core functionality. It is front-loaded with the primary action and purpose. While brief, it does not waste words, though a bit more detail for a 10-parameter tool might be warranted.

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 10 parameters, no output schema, and no annotations, the description covers main filter types and pagination but omits details on sorting (ordering parameter), search behavior, and specific pagination parameters (page, page_size). It is partially complete but has gaps.

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 each parameter having a description. The tool description adds only general categories (supplier, status, date range) without further nuance, which meets the baseline expectation but does not exceed it.

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 tool lists supplier bills/purchase invoices, distinguishing it from siblings like get_bill, create_bill, and other list tools. It specifies pagination and filtering capabilities, making the purpose unambiguous.

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 mentions filtering by supplier, status, or date range, giving context on when to use filters. However, it does not provide explicit when-not-to-use guidance or alternatives, such as when to use get_bill for a single bill instead.

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

list_cash_paymentsA

List payments made to suppliers. Returns paginated results. Filter by supplier, bill, or date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
billNoFilter by linked bill ID
pageNoPage number (default: 1)
orderingNoSort field, e.g. '-date' for newest first
supplierNoFilter by supplier contact ID
page_sizeNoResults per page (default: 20, max: 100)
date_afterNoFilter payments on or after this date (YYYY-MM-DD)
date_beforeNoFilter payments on or before this date (YYYY-MM-DD)

TDQS

A3.7/5.0
Behavior3/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 discloses pagination behavior but does not explicitly state that it is read-only or require special permissions. For a straightforward list tool, this is adequate but could be improved by mentioning that no data is modified.

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 with two sentences. It front-loads the purpose and immediately follows with key features (pagination and filters). Every word adds value.

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

Completeness3/5

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

The description covers the core purpose, pagination, and filter options. However, no output schema exists, and the description does not explain the return fields or how to navigate pagination beyond basic parameters. For a list tool with 7 parameters, slightly more detail on response structure 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 each parameter already described. The description adds a summary of filter options but does not provide additional meaning beyond what the schema offers. Baseline 3 applies because the schema covers the parameters well.

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 'List payments made to suppliers', which is a specific verb+resource. The name and description clearly distinguish from siblings like record_cash_payment (create) and list_cash_receipts (customer receipts).

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 mentions pagination and three filter options, providing useful context for when to use the tool. However, it does not explicitly state when not to use it or compare with alternatives like list_bills or list_cash_receipts, leaving some guidance implicit.

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

list_cash_receiptsA

List payments received from clients. Returns paginated results. Filter by client, invoice, or date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)
clientNoFilter by client contact ID
invoiceNoFilter by linked invoice ID
orderingNoSort field, e.g. '-date' for newest first
page_sizeNoResults per page (default: 20, max: 100)
date_afterNoFilter receipts on or after this date (YYYY-MM-DD)
date_beforeNoFilter receipts on or before this date (YYYY-MM-DD)

TDQS

A4/5.0
Behavior3/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 states that results are paginated and filterable, which are key behavioral traits. However, it does not explicitly confirm the operation is read-only or mention other traits like sorting defaults or response structure, leaving gaps in 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 two sentences long, front-loads the purpose, and contains no extraneous information. Every word serves a function, achieving maximum conciseness without sacrificing clarity.

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 has 7 parameters, no output schema, and no annotations, the description covers the core purpose, pagination, and filtering. It is complete for a simple list operation, though it could mention that the response contains cash receipt objects or default sorting. Overall, it provides adequate 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% description coverage, so the baseline is 3. The description adds value by summarizing filterable fields ('client, invoice, or date range'), but it does not mention pagination parameters (page, page_size) or the ordering parameter, which are part of the schema. Thus, the description adds marginal value over 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 'List payments received from clients,' which is a specific verb+resource. It distinguishes from the sibling tool 'list_cash_payments' by specifying 'from clients,' implying inbound payments. This effectively differentiates the tool from its counterpart.

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 provides clear context on when to use the tool: for listing payments received from clients with pagination and filtering. However, it lacks explicit exclusions or alternatives, such as noting that 'list_cash_payments' is for payments to clients. This leaves some ambiguity for the agent.

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

list_client_discussionsA

List client-visible discussion messages attached to an Elorus resource. These are visible to both the organization and the client.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)
page_sizeNoResults per page (default: 20, max: 100)
resource_idYesThe ID of the resource to fetch discussions for
resource_typeYesThe type of Elorus resource the discussion is attached to

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided. The description adds that discussions are visible to both organization and client, but lacks details on pagination, rate limits, or other 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?

Two sentences, concise, front-loaded with the main action. No wasted words.

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?

No output schema, but the description covers purpose and key visibility context. For a simple listing tool, it is mostly complete, though a note about return format could help.

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. The description adds context about resource attachment but no parameter-specific 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 verb 'list' and the resource 'client-visible discussion messages attached to an Elorus resource', distinguishing it from private notes. It provides specific scope.

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 this tool is for client-visible discussions, contrasting with siblings like list_private_notes, but does not explicitly state when to use or avoid this tool.

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

list_contactsA

List and search contacts (clients, suppliers, or both). Returns paginated results with count and pagination links.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)
searchNoSearch term to filter by name, company, email, or VAT number
orderingNoField to sort by, e.g. 'company' or '-company' for descending
is_clientNoFilter to contacts marked as clients
page_sizeNoResults per page (default: 20, max: 100)
is_supplierNoFilter to contacts marked as suppliers

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It discloses pagination (count and links) but does not mention read-only nature, rate limits, or other behavioral traits. Adequate but not comprehensive.

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 extraneous words. Front-loaded with key purpose and returns. 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 tool with no output schema, the description explains the return format (paginated results with count and links). It covers primary use case but lacks details on defaults or edge cases. Sufficiently 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%, and the description adds no additional parameter details beyond what the schema already provides. 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?

Description clearly states the tool lists and searches contacts, specifying types (clients, suppliers, or both), distinguishing it from single-contact tools like get_contact. Also mentions pagination.

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 or when-not-to-use guidance, but context implies it's for retrieving multiple contacts with optional filtering. Sibling tools provide contrast but no direct alternatives called out.

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

list_credit_notesA

List credit notes issued to clients. Returns paginated results. Filter by client or date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)
clientNoFilter by client contact ID
orderingNoSort field, e.g. '-date' for newest first
page_sizeNoResults per page (default: 20, max: 100)
date_afterNoFilter credit notes issued on or after this date (YYYY-MM-DD)
date_beforeNoFilter credit notes issued on or before this date (YYYY-MM-DD)

TDQS

A3.7/5.0
Behavior3/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 states the tool returns paginated results and filters, but does not explicitly disclose it is a read-only (safe) operation or mention any side effects. Adequate 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?

Two sentences: first states purpose, second adds key details (pagination, filters). No superfluous text, 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?

Covers purpose, pagination, and filtering. However, with no output schema, the description could mention response fields or ordering default. Adequate but not fully complete for a tool with 6 parameters.

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 parameters are fully described. The description adds a summary of filtering options (client, date range) and pagination, but no new semantic 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 (list), the resource (credit notes), and mentions pagination and filtering. It distinguishes from siblings like 'create_credit_note' and 'apply_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 Guidelines3/5

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

No explicit when-to-use or when-not-to-use compared to alternatives. Usage is implied by the name and description, but no guidance on when to use this versus other list tools like 'list_bills'.

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

list_document_typesA

List all document types available in this organization. Returns document type IDs and names required when creating invoices, bills, and other documents.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)
page_sizeNoResults per page (default: 20, max: 100)

TDQS

A4.1/5.0
Behavior3/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 states the return value includes IDs and names, but does not discuss pagination behavior, latency, or authentication requirements. Adequate for a simple 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?

Two concise sentences, no wasted words. The purpose is front-loaded, and the additional context about usage is given efficiently.

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?

As a listing tool with no output schema, the description adequately explains the return value and its purpose (IDs and names for creating documents). Given the tool's simplicity, this is sufficient for the agent to understand what it does and why it is useful.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented. The description does not add further meaning to the parameters beyond their schema definitions. 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 'List', the resource 'document types', the scope 'in this organization', and the output 'IDs and names required when creating invoices, bills, and other documents'. It distinguishes from sibling tools like create_invoice that need the document type IDs.

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 when to use the tool: before creating documents that require a document type ID. It does not explicitly state when not to use it or mention alternatives, but the context makes it clear.

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

list_expense_categoriesA

List all expense categories configured in this organization. Returns category IDs and names used when creating expenses.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)
page_sizeNoResults per page (default: 20, max: 100)

TDQS

A3.6/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 disclose behavioral traits. It mentions the return values (IDs and names) but does not describe pagination behavior, ordering, rate limits, or potential error conditions. The schema covers parameters but not runtime behavior.

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

Conciseness5/5

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

The description is two sentences, clearly stating the tool's purpose and what it returns. No unnecessary words.

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 list tool with optional pagination parameters and no output schema, the description adequately covers purpose and return value. It could mention pagination explicitly, but the schema covers it.

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

Parameters3/5

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

Schema description coverage is 100%, so the description does not need to add much parameter info. It adds context that categories are used when creating expenses, which is useful but does not alter parameter semantics.

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 tool lists all expense categories in the organization and specifies that it returns category IDs and names used when creating expenses. This clearly differentiates it from sibling tools like list_expenses or 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 Guidelines3/5

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

The description implies the tool is used to obtain category IDs for creating expenses, but does not explicitly state when to use it versus alternatives, nor does it mention prerequisites 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.

list_expensesA

List expense records. Returns paginated results. Filter by supplier, category, or date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)
searchNoSearch term for expense description or supplier name
orderingNoSort field, e.g. '-date' for newest first
supplierNoFilter by supplier contact ID
page_sizeNoResults per page (default: 20, max: 100)
date_afterNoFilter expenses on or after this date (YYYY-MM-DD)
date_beforeNoFilter expenses on or before this date (YYYY-MM-DD)
expense_categoryNoFilter by expense category ID (obtain from list_expense_categories)

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description must convey behavior. It states 'Returns paginated results' but does not explicitly confirm read-only or mention auth/rate limits. It is adequate but lacks full 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?

Two concise sentences with key info front-loaded. No redundancy.

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?

The description covers pagination and filter options. No output schema, but the tool is straightforward. Could mention default ordering or that results are read-only, but still complete enough.

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 summarizes filters but does not add new semantics beyond the schema 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 clearly states the verb 'list' and resource 'expense records', and includes pagination and filtering options. It distinguishes from sibling tools like list_bills and list_invoices by specifying 'supplier, category, or date range' filters.

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 when to use the tool (listing expenses with filters) but does not explicitly mention when not to use alternatives like get_expense for single records or create_expense for adding.

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

list_invoicesB

List and filter sales invoices. Returns paginated results with count and pagination links.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)
clientNoFilter by client contact ID
searchNoSearch term for invoice number or client name
statusNoFilter by invoice status
orderingNoSort field, e.g. '-date' for newest first
page_sizeNoResults per page (default: 20, max: 100)
date_afterNoFilter invoices issued on or after this date (YYYY-MM-DD)
date_beforeNoFilter invoices issued on or before this date (YYYY-MM-DD)
due_date_afterNoFilter by due date on or after (YYYY-MM-DD)
due_date_beforeNoFilter by due date on or before (YYYY-MM-DD)

TDQS

B3.4/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. Only mentions pagination and filtering, lacking details on rate limits, authorization, data freshness, or side effects of the 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.

Conciseness5/5

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

Two concise sentences, front-loaded with purpose and behavior. No extraneous 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?

Given the tool is a list/filter operation with no output schema, the description adequately mentions paginated results with count and links. It could be more explicit about the response structure but is fairly 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 coverage is 100% (all parameters have descriptions). The description adds no additional meaning 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?

Clearly states the verb 'List and filter' and the resource 'sales invoices'. Also mentions pagination behavior. Distinguishes from siblings like 'get_invoice' (single invoice) and 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 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. With many sibling list tools, the description should provide selection criteria but does not.

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

list_private_notesA

List internal (private) notes attached to an Elorus resource (invoice, contact, payment, etc.). Notes are visible only to organization members.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)
page_sizeNoResults per page (default: 20, max: 100)
resource_idYesThe ID of the resource to fetch notes for
resource_typeYesThe type of Elorus resource the note is attached to

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden. It discloses that notes are visible only to organization members, adding context about visibility. However, it does not mention pagination behavior or potential rate limits, though the schema covers pagination fields.

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

Conciseness5/5

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

The description is two sentences long, front-loaded with the action and resource, and contains no redundant or unnecessary 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?

Given no output schema, the description adequately describes what the tool does and adds context about visibility. It covers the input parameters (via schema) but does not specify return field details or ordering. For a paginated list tool, this is mostly sufficient.

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 additional meaning to parameters beyond what the schema provides (e.g., resource_type and resource_id are listed but not explained further).

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 tool lists internal (private) notes attached to an Elorus resource, with a specific verb and resource type. It distinguishes from the sibling tool 'create_private_note' by indicating the action is listing, not creating.

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 the tool should be used when needing private notes for a resource, but it does not explicitly state when not to use it or provide alternatives. There are no sibling list-note tools, so differentiation from other list tools (e.g., list_invoices) is not addressed.

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

list_productsB

List and search products and services from the catalog. Returns paginated results.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)
searchNoSearch term to filter by product title, code, or description
orderingNoSort field, e.g. 'title' or '-title' for descending
page_sizeNoResults per page (default: 20, max: 100)

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided. Lacks disclosure of read-only nature, rate limits, pagination details beyond returning paginated results, or any 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.

Conciseness5/5

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

Single sentence, front-loads key info, no wasted 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?

Adequate for a simple list tool with full schema coverage. Mentions pagination. Lacks details on search behavior or ordering beyond 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%, so baseline 3. Description adds no extra meaning beyond what 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?

Clearly states action (list and search), resource (products and services from catalog), and result (paginated). Differentiates from sibling tools like create_product or get_product.

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 vs other list/search tools (e.g., list_bills, list_contacts). No when-not-to-use or alternative suggestions.

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

list_supplier_creditsA

List supplier credit notes (credits received from suppliers). Returns paginated results. Filter by supplier or date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)
orderingNoSort field, e.g. '-date' for newest first
supplierNoFilter by supplier contact ID
page_sizeNoResults per page (default: 20, max: 100)
date_afterNoFilter supplier credits on or after this date (YYYY-MM-DD)
date_beforeNoFilter supplier credits on or before this date (YYYY-MM-DD)

TDQS

A3.8/5.0
Behavior3/5

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

No annotations, so description carries burden. States pagination and filtering, implying read-only safety, but lacks explicit auth needs or rate limits. Adequate but not rich.

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

Conciseness5/5

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

Two sentences, front-loaded with core purpose, no filler words.

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?

Covers main behaviors: pagination and filtering. With 6 params and no output schema, slightly more details on default ordering could help, but still mostly 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%, so baseline is 3. Description summarizes filter options but adds no deeper 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?

Clearly states verb 'List', resource 'supplier credit notes', and context 'credits received from suppliers'. Distinguishes from sibling 'list_credit_notes' likely for customer credits.

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?

Mentions filtering by supplier or date range but no explicit when-to-use vs alternatives. With many list siblings, more guidance would improve selection.

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

list_taxesA

List all tax rates configured in this organization. Returns tax IDs and rates needed when creating invoices, products, and expenses.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)
page_sizeNoResults per page (default: 20, max: 100)

TDQS

A4/5.0
Behavior3/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 correctly indicates a read operation (list) and mentions return values (IDs and rates). However, it does not disclose pagination behavior or that it returns all tax rates without filters, which could be inferred from the schema but not explicitly 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?

Two sentences with no wasted words. The verb and resource appear first, and every sentence provides 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?

Given the tool's simplicity (2 optional params, no output schema), the description adequately explains the return values and usage context. It could mention that results are paginated, but the schema already covers that.

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 both parameters (page and page_size) with full descriptions. The description does not add parameter-specific semantics beyond the schema, so it meets the baseline expectation.

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 all tax rates configured in the organization, using the specific verb 'List' and resource 'tax rates'. It distinguishes itself from sibling tools like 'list_invoices' or 'list_products' by focusing on a unique entity.

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 specifies that the returned tax IDs and rates are needed when creating invoices, products, and expenses, providing clear use-case context. It does not explicitly state when not to use the tool, but the purpose is distinct enough that no alternative is implied.

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

list_unitsA

List all units of measurement configured in this organization. Returns unit IDs and names used when creating products (e.g. hours, pieces, kg).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default: 1)
page_sizeNoResults per page (default: 20, max: 100)

TDQS

A4/5.0
Behavior3/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. It states the tool returns IDs and names, but does not mention pagination behavior (though parameters indicate pagination). This 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?

Two sentences, front-loaded with the core purpose, and no superfluous information. Every sentence contributes value.

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 list tool, the description covers what it does and what it returns. The lack of an output schema is compensated by mentioning return fields. Missing pagination mention is minor.

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

Parameters3/5

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

Schema coverage is 100%, with both parameters described in the schema. The description adds no additional meaning beyond what the schema already provides, so 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 'List' and the resource 'units of measurement', with specific context that it returns IDs and names used for creating products. There are no sibling unit-listing tools, so it is well-differentiated.

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 context (for creating products), but does not explicitly state when to use this tool versus alternatives. Since there are no other unit-listing tools, the guidance is adequate but could be more explicit.

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

record_cash_paymentB

Record a payment made to a supplier. Optionally links the payment to a specific bill. Monetary amounts must be strings (e.g. '250.00').

ParametersJSON Schema
NameRequiredDescriptionDefault
billNoBill ID to apply this payment against (optional)
dateYesPayment date in YYYY-MM-DD format
notesNoInternal notes about this payment
amountYesAmount paid as a string, e.g. '250.00'
supplierYesContact ID of the supplier being paid
currency_codeNoISO 4217 currency code, e.g. 'EUR' (default: organization currency)
exchange_rateNoExchange rate to organization base currency as a string, e.g. '1.000000'
payment_methodYesPayment method: 1=bank account, 2=cash, 3=cheque, 4=web banking, 5=POS, 6=PayPal, 7=other

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 must disclose behavioral traits. It only states the action and that amounts are strings, but does not mention side effects (e.g., whether a bill's status changes), required permissions, or response 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?

Two concise sentences with essential information front-loaded. Every word earns its place.

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

Completeness2/5

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

For a tool with 8 parameters, 4 required, no output schema, and no annotations, the description lacks context on default behaviors (e.g., currency default), output, and error conditions. It is insufficient for complete 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 description coverage is 100%, providing baseline adequacy. The description adds no extra meaning beyond the schema, aside from reinforcing the amount format, which is redundant.

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 records a payment to a supplier, optionally linking to a specific bill. This distinguishes it from sibling tools like record_cash_receipt (customer receipts) and apply_credit_note (credit to invoices).

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 supplier payments, but lacks explicit guidance on when to use this tool versus alternatives such as apply_credit_note or create_expense. 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.

record_cash_receiptA

Record a payment received from a client. Optionally links the payment to a specific invoice. Monetary amounts must be strings (e.g. '500.00').

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesPayment date in YYYY-MM-DD format
notesNoInternal notes about this payment
amountYesAmount received as a string, e.g. '500.00'
clientYesContact ID of the paying client
invoiceNoInvoice ID to apply this payment against (optional)
currency_codeNoISO 4217 currency code, e.g. 'EUR' (default: organization currency)
exchange_rateNoExchange rate to organization base currency as a string, e.g. '1.000000'
payment_methodYesPayment method: 1=bank account, 2=cash, 3=cheque, 4=web banking, 5=POS, 6=PayPal, 7=other

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses that amounts must be strings and that invoice linking is optional, but does not describe side effects, return values, or constraints like duplicate detection.

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 concise sentences with no unnecessary words. The core action and key constraint are front-loaded, making it efficient for an agent to parse.

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 core action is clear, there is no output schema and no annotations. The description does not explain what the tool returns (e.g., receipt ID), how errors are handled, or mention any prerequisites (e.g., client must exist). For a tool with 8 parameters, more context would be beneficial.

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 schema already documents parameters. The description adds only that amounts must be strings, which is redundant with the schema. No additional meaning beyond the schema is provided.

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 'Record a payment received from a client' and mentions optional invoice linking. This distinguishes it from sibling tools like record_cash_payment (likely supplier-side) and provides a specific verb-resource pairing.

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 client payment recording but offers no comparison to record_cash_payment or other transaction tools. Usage context is implied but not explicit.

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

send_invoice_emailA

Email an invoice to the client. Uses the organization's default email template unless overridden.

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoCC email addresses
idYesThe Elorus invoice ID to send
toYesRecipient email addresses
messageNoEmail body text (uses default template if omitted)
subjectNoEmail subject line (uses default template if omitted)

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 only states that an email is sent with optional overrides. It does not disclose behavioral aspects like whether the invoice status changes, if the action is reversible, delivery confirmation, rate limits, or authorization requirements. This is insufficient for a mutating action.

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 that states the core action and key behavior (template override). Every word earns its place, with no redundancy or unnecessary details.

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 has 5 parameters and no output schema, the description adequately explains the main function and template override. However, it lacks context on constraints (e.g., invoice must be finalized, email configuration required) and does not describe what happens after sending. It is adequate but could be more thorough.

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 parameter descriptions in the schema. The description adds value by explaining that 'message' and 'subject' override the default template, which is not in the schema. This gives semantic context beyond the basic field 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 clearly states the action ('Email an invoice') and the resource ('to the client'), distinguishing it from sibling tools that deal with creating, listing, or exporting invoices. No sibling tool has 'email' in its name, so purpose is unambiguous.

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

Usage Guidelines3/5

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

The description mentions using the default template unless overridden, giving some usage context. However, it does not specify when to use this tool versus alternatives like export_invoice_pdf, nor does it mention prerequisites such as invoice status or required permissions. Guidance is minimal.

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

update_billB

Update fields on an existing bill. Only provided fields are changed (PATCH semantics).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe Elorus bill ID to update
dateNoBill issue date in YYYY-MM-DD format
notesNoInternal notes
due_dateNoPayment due date 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?

With no annotations, the description carries full burden for behavioral traits; it only mentions PATCH semantics but omits details on idempotency, 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 front-loading the action and resource, then specifying PATCH semantics with no wasted 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?

Input is well-documented via schema, but no output schema or description of return value; for a mutation tool, missing response behavior.

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

Parameters3/5

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

Schema coverage is 100%, so the schema documents each parameter; the description adds the PATCH behavior context but does not elaborate 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 verb 'Update' and the resource 'bill', and specifies PATCH semantics, distinguishing it from create_bill and void_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 alternatives like create_bill or void_bill; no context for prerequisites or success conditions.

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

update_contactB

Update fields on an existing contact. Only provided fields are changed (PATCH semantics).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe Elorus contact ID to update
emailNoPrimary email address
notesNoInternal notes
phoneNoPrimary phone number
companyNoCompany name
is_clientNoMark as client
last_nameNoLast name
first_nameNoFirst name
vat_numberNoVAT / tax registration number
is_supplierNoMark as supplier

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, so description must cover behavioral traits. It mentions PATCH semantics but lacks disclosure on error handling, idempotency, or field restrictions. 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?

Single sentence with no wasted words, front-loaded with purpose. Excellent 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?

Tool has 10 parameters and no output schema, but description is very short. Does not explain return value, error behavior, or other context needed for correct 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% so baseline is 3. Description adds general PATCH behavior but no additional parameter-specific meaning beyond schema 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 clearly states the verb 'update' and resource 'existing contact', and specifies PATCH semantics, which distinguishes it from create_contact and get_contact.

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 the contact must exist but does not explicitly state when to use this tool vs other update tools or when not to use it. No exclusions or alternatives mentioned.

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

update_expenseA

Update fields on an existing expense. Only provided fields are changed (PATCH semantics).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe Elorus expense ID to update
dateNoExpense date in YYYY-MM-DD format
notesNoInternal notes
supplierNoSupplier contact ID
expense_categoryNoExpense category ID (obtain from list_expense_categories)

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses PATCH semantics (only provided fields are changed), which is a key behavioral trait. However, it does not mention authorization requirements, error handling, or 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.

Conciseness5/5

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

The description is extremely concise with two sentences that front-load the core purpose and behavioral detail. Every word adds value.

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 update tool with no output schema, the description omits what the response looks like (e.g., updated expense object, success status). The provided context is adequate but not fully 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%, so the schema already describes each parameter. The description adds 'PATCH semantics' but does not further clarify parameter usage beyond what the schema provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool updates an existing expense and specifies PATCH semantics (only provided fields change). It is distinct from create_expense, get_expense, list_expenses, etc., which are sibling 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 implicitly indicates when to use (to update an existing expense) but does not provide explicit guidance on when not to use or mention alternatives. The PATCH semantics hint at usage but lack full context.

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

update_productA

Update fields on an existing product or service. Only provided fields are changed (PATCH semantics).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe Elorus product ID to update
codeNoProduct code or SKU
unitNoUnit of measurement ID (obtain from list_units)
notesNoInternal notes
taxesNoArray of tax IDs (obtain via list_taxes)
titleNoProduct or service name
sale_priceNoDefault selling price before tax, e.g. '99.99'
descriptionNoDetailed description
purchase_priceNoDefault purchase/cost price before tax, e.g. '60.00'

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It discloses PATCH semantics (only provided fields change), which is key behavioral info. It lacks details on error handling, authorization, or response format, but for a simple update tool, it's adequate.

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 fluff, clearly front-loaded with 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?

Given no output schema and moderate complexity (9 params, 1 required), the description is adequate but lacks details on return values or usage examples. It covers the core behavior but could be more 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%, and the description does not add extra meaning beyond what is already in the schema. The general PATCH note is relevant but not per-parameter. 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 it updates an existing product or service, using specific verb 'Update' and resource 'product or service'. It distinguishes from siblings like create_product, get_product, and list_products.

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 when to use the tool (to update existing products) but does not explicitly mention when not to use it or name alternatives like create_product for new products. However, the context is clear.

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

void_billA

Void a supplier bill. A voided bill is excluded from financial reports and cannot be paid.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe Elorus bill ID to void

TDQS

A3.8/5.0
Behavior3/5

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

No annotations; description adds some behavior (excluded from reports, cannot be paid) but lacks details on reversibility, dependencies, or 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.

Conciseness5/5

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

Two concise sentences, front-loaded with action and effect, no wasted words.

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 void operation with one parameter, description is fairly complete. Could mention state requirements (e.g., bill must be unpaid).

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%, parameter description is adequate. Description does not add additional 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 action (void) and resource (supplier bill), and explains the effect (excluded from reports, cannot be paid). Differentiated from sibling tools like void_invoice.

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 or alternatives. Implies voiding bill is final but doesn't 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.

void_invoiceA

Void an invoice. A voided invoice cannot be edited or paid and is excluded from financial reports.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe Elorus invoice ID to void

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses key consequences (cannot be edited/paid, financial report exclusion). However, it does not mention irreversibility 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?

Two sentences, no waste. Front-loaded with action, then consequences. Every sentence earns its place.

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 single parameter, description covers purpose and consequences. Lacks mention of irreversibility or error handling, but sufficient for a simple void 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 a clear parameter description. The tool description adds no additional semantic value beyond the schema's 'The Elorus invoice ID to void'.

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 (void an invoice) and its effects (cannot be edited/paid, excluded from reports). However, it does not explicitly differentiate from sibling tools like void_bill, relying on context.

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 (e.g., updating or deleting an invoice). The description does not specify prerequisites or exclusion criteria.

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. Dates show when Glama detected each change.

  1. 43 tool updatesv1.0.0
    • First observedapply_credit_note
    • First observedapply_supplier_credit
    • First observedcreate_bill
    • First observedcreate_client_discussion
    • First observedcreate_contact
    • First observedcreate_credit_note
    • First observedcreate_expense
    • First observedcreate_invoice
    • First observedcreate_private_note
    • First observedcreate_product
    • First observedcreate_supplier_credit
    • First observedexport_cash_receipt_pdf
    • First observedexport_expense_pdf
    • First observedexport_invoice_pdf
    • First observedget_bill
    • First observedget_contact
    • First observedget_expense
    • First observedget_invoice
    • First observedget_product
    • First observedlist_bills
    • First observedlist_cash_payments
    • First observedlist_cash_receipts
    • First observedlist_client_discussions
    • First observedlist_contacts
    • First observedlist_credit_notes
    • First observedlist_document_types
    • First observedlist_expense_categories
    • First observedlist_expenses
    • First observedlist_invoices
    • First observedlist_private_notes
    • First observedlist_products
    • First observedlist_supplier_credits
    • First observedlist_taxes
    • First observedlist_units
    • First observedrecord_cash_payment
    • First observedrecord_cash_receipt
    • First observedsend_invoice_email
    • First observedupdate_bill
    • First observedupdate_contact
    • First observedupdate_expense
    • First observedupdate_product
    • First observedvoid_bill
    • First observedvoid_invoice

TDQS

A3.7/5.0
Disambiguation5/5

Each tool targets a specific entity and action, with clear distinctions between similar tools (e.g., list_cash_payments vs list_cash_receipts, list_client_discussions vs list_private_notes). No two tools appear to have overlapping purposes.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., create_invoice, list_contacts, update_bill). Variations like apply_credit_note or void_invoice still adhere to the same structure.

Tool Count3/5

With 43 tools, the server covers a comprehensive accounting domain, but the count exceeds the typical well-scoped range (3-15). While each tool is justified, the sheer number may overwhelm agents or indicate that some operations could be combined.

Completeness4/5

The tool surface covers core CRUD for invoices, bills, contacts, expenses, and products, with additional actions like void, export, and apply credits. However, some entities (credit notes, supplier credits, cash receipts/payments) lack dedicated get tools, and there are no delete tools (void is used as an alternative). The gaps are minor and do not severely hinder workflows.

Maintenance

ActivityStale
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server for e-invoice platforms. Enables natural language querying of invoices, partners, company data, and financial reports.
    18
    17
    6
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    MCP server for creating and fiscalizing invoices via solo.com.hr API. Enables AI agents to generate invoices, retrieve invoice details, list invoices, and check next invoice number.
    4
    MIT
  • A
    license
    B
    quality
    F
    maintenance
    MCP server for Invoice Ninja v5 API. Enables AI assistants to manage clients, invoices, quotes, payments, and time tracking through natural language.
    32
    22
    2
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nikan/elorus-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server