elorus-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@elorus-mcpCreate an invoice for Acme Corp for 5 hours of consulting at €150/hour"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
API key — open the Elorus web app → User Profile → API key
Organization ID — open the Elorus web app → Settings → Organization → Organization ID
Install
npx elorus-mcpOr clone and build locally:
git clone https://github.com/your-org/elorus-mcp
cd elorus-mcp
npm install && npm run buildRelated 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-mcpLocal 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 .envVariable | Required | Description |
| Yes | Your Elorus API key |
| Yes | Your Elorus organization ID |
| No | Set to |
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 |
| Search/filter contacts (clients, suppliers, or both) with pagination |
| Fetch a contact by ID |
| Create a client, supplier, or both |
| Update fields on an existing contact |
Invoices
Tool | Description |
| Filter invoices by status, client, date range |
| Fetch an invoice by ID |
| Create a sales invoice with line items and taxes |
| Void an invoice (excluded from financial reports, cannot be edited or paid) |
| Email an invoice to the client |
| Export an invoice as a PDF (returns a download URL) |
Bills (supplier purchase invoices)
Tool | Description |
| Filter supplier bills by supplier, status, or date range |
| Fetch a bill by ID |
| Create a supplier bill with line items and taxes |
| Update fields on an existing bill |
| Void a bill |
Expenses
Tool | Description |
| Filter expense records by supplier, category, or date range |
| Fetch an expense by ID |
| Record a new business expense. Line items use |
| Update fields on an existing expense |
| Attach a file (e.g. a receipt or supplier invoice PDF) to an existing expense, given base64-encoded content |
| Export an expense document as a PDF (returns a download URL) |
Credit notes (issued to clients)
Tool | Description |
| Filter credit notes by client or date range |
| Create a credit note to reduce or cancel an amount owed by a client |
| Apply a credit note against an open invoice |
Supplier credits (received from suppliers)
Tool | Description |
| Filter supplier credits by supplier or date range |
| Record a credit note received from a supplier |
| Apply a supplier credit against an open bill |
Cash receipts (payments received from clients)
Tool | Description |
| Filter by client, invoice, or date range |
| Record a payment received from a client, optionally linked to an invoice |
| Export a cash receipt as a PDF (returns a download URL) |
Cash payments (payments made to suppliers)
Tool | Description |
| Filter by supplier, bill, or date range |
| Record a payment made to a supplier, optionally linked to a bill |
| Update fields (e.g. title/bank reference) on an existing payment |
| Permanently delete a payment made to a supplier |
Products
Tool | Description |
| Search the products/services catalog |
| Fetch a product by ID |
| Add a product or service to the catalog |
| Update fields on an existing product or service |
Notes and discussions
Tool | Description |
| List internal notes on a resource (visible only to organization members) |
| Add an internal note to a resource |
| List client-visible discussion messages on a resource |
| Post a client-visible message on an invoice or cash receipt |
Configuration lookups
Tool | Description |
| List tax rates configured in the organization |
| List document types (required for creating invoices, bills, credit notes, etc.) |
| List units of measurement (e.g. hours, pieces, kg) |
| 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 |
| All contacts (clients and suppliers) |
| All sales invoices, most recent first |
| All cash receipts (payments received from clients) |
| All cash payments (payments made to suppliers) |
| All expense records |
| All supplier bills |
| 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 issuesUse
list_taxes,list_document_types,list_units, andlist_expense_categoriesto 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(orunit_total, depending oncalculator_mode); bill line items also requireexpense_category; expense line items use a different shape:expense_category/amount/descriptionElorus does not provide idempotency keys — query before creating to avoid duplicates
Pagination params:
page(default 1) andpage_size(default 20, max 100)
Available Tools
43 toolsapply_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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The credit note ID to apply | |
| amount | Yes | Amount to apply as a string, e.g. '150.00' (cannot exceed credit note balance) | |
| invoice | Yes | The invoice ID to apply the credit against |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The supplier credit ID to apply | |
| bill | Yes | The bill ID to apply the supplier credit against | |
| amount | Yes | Amount to apply as a string, e.g. '100.00' (cannot exceed supplier credit balance) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The discussion message content | |
| resource_id | Yes | The ID of the resource to attach the discussion to | |
| resource_type | Yes | The type of Elorus resource to post the discussion on |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | The note content | |
| title | No | Short title or subject for the note | |
| resource_id | Yes | The ID of the resource to attach the note to | |
| resource_type | Yes | The type of Elorus resource the note is attached to |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | Product code or SKU for internal reference | |
| unit | No | Unit of measurement ID (obtain from list_units), e.g. hours, pieces, kg | |
| notes | No | Internal notes about this product | |
| taxes | No | Array of tax IDs to apply by default on this product (obtain IDs via list_taxes) | |
| title | Yes | Product or service name | |
| sale_price | No | Default selling price before tax as a string, e.g. '99.99' | |
| description | No | Detailed description of the product or service | |
| purchase_price | No | Default purchase/cost price before tax as a string, e.g. '60.00' |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The Elorus cash receipt ID to export |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The Elorus expense ID to export |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The Elorus invoice ID to export |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The Elorus bill ID |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The Elorus contact ID |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The Elorus expense ID |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The Elorus invoice ID |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The Elorus product ID |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| search | No | Search term for bill number or supplier name | |
| status | No | Filter by bill status | |
| ordering | No | Sort field, e.g. '-date' for newest first | |
| supplier | No | Filter by supplier contact ID | |
| page_size | No | Results per page (default: 20, max: 100) | |
| date_after | No | Filter bills issued on or after this date (YYYY-MM-DD) | |
| date_before | No | Filter bills issued on or before this date (YYYY-MM-DD) | |
| due_date_after | No | Filter by due date on or after (YYYY-MM-DD) | |
| due_date_before | No | Filter by due date on or before (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| bill | No | Filter by linked bill ID | |
| page | No | Page number (default: 1) | |
| ordering | No | Sort field, e.g. '-date' for newest first | |
| supplier | No | Filter by supplier contact ID | |
| page_size | No | Results per page (default: 20, max: 100) | |
| date_after | No | Filter payments on or after this date (YYYY-MM-DD) | |
| date_before | No | Filter payments on or before this date (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| client | No | Filter by client contact ID | |
| invoice | No | Filter by linked invoice ID | |
| ordering | No | Sort field, e.g. '-date' for newest first | |
| page_size | No | Results per page (default: 20, max: 100) | |
| date_after | No | Filter receipts on or after this date (YYYY-MM-DD) | |
| date_before | No | Filter receipts on or before this date (YYYY-MM-DD) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| page_size | No | Results per page (default: 20, max: 100) | |
| resource_id | Yes | The ID of the resource to fetch discussions for | |
| resource_type | Yes | The type of Elorus resource the discussion is attached to |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| search | No | Search term to filter by name, company, email, or VAT number | |
| ordering | No | Field to sort by, e.g. 'company' or '-company' for descending | |
| is_client | No | Filter to contacts marked as clients | |
| page_size | No | Results per page (default: 20, max: 100) | |
| is_supplier | No | Filter to contacts marked as suppliers |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| client | No | Filter by client contact ID | |
| ordering | No | Sort field, e.g. '-date' for newest first | |
| page_size | No | Results per page (default: 20, max: 100) | |
| date_after | No | Filter credit notes issued on or after this date (YYYY-MM-DD) | |
| date_before | No | Filter credit notes issued on or before this date (YYYY-MM-DD) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| page_size | No | Results per page (default: 20, max: 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| page_size | No | Results per page (default: 20, max: 100) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| search | No | Search term for expense description or supplier name | |
| ordering | No | Sort field, e.g. '-date' for newest first | |
| supplier | No | Filter by supplier contact ID | |
| page_size | No | Results per page (default: 20, max: 100) | |
| date_after | No | Filter expenses on or after this date (YYYY-MM-DD) | |
| date_before | No | Filter expenses on or before this date (YYYY-MM-DD) | |
| expense_category | No | Filter by expense category ID (obtain from list_expense_categories) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| client | No | Filter by client contact ID | |
| search | No | Search term for invoice number or client name | |
| status | No | Filter by invoice status | |
| ordering | No | Sort field, e.g. '-date' for newest first | |
| page_size | No | Results per page (default: 20, max: 100) | |
| date_after | No | Filter invoices issued on or after this date (YYYY-MM-DD) | |
| date_before | No | Filter invoices issued on or before this date (YYYY-MM-DD) | |
| due_date_after | No | Filter by due date on or after (YYYY-MM-DD) | |
| due_date_before | No | Filter by due date on or before (YYYY-MM-DD) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| page_size | No | Results per page (default: 20, max: 100) | |
| resource_id | Yes | The ID of the resource to fetch notes for | |
| resource_type | Yes | The type of Elorus resource the note is attached to |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| search | No | Search term to filter by product title, code, or description | |
| ordering | No | Sort field, e.g. 'title' or '-title' for descending | |
| page_size | No | Results per page (default: 20, max: 100) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| ordering | No | Sort field, e.g. '-date' for newest first | |
| supplier | No | Filter by supplier contact ID | |
| page_size | No | Results per page (default: 20, max: 100) | |
| date_after | No | Filter supplier credits on or after this date (YYYY-MM-DD) | |
| date_before | No | Filter supplier credits on or before this date (YYYY-MM-DD) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| page_size | No | Results per page (default: 20, max: 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It 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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1) | |
| page_size | No | Results per page (default: 20, max: 100) |
TDQS
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.
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.
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.
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.
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.
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').
| Name | Required | Description | Default |
|---|---|---|---|
| bill | No | Bill ID to apply this payment against (optional) | |
| date | Yes | Payment date in YYYY-MM-DD format | |
| notes | No | Internal notes about this payment | |
| amount | Yes | Amount paid as a string, e.g. '250.00' | |
| supplier | Yes | Contact ID of the supplier being paid | |
| currency_code | No | ISO 4217 currency code, e.g. 'EUR' (default: organization currency) | |
| exchange_rate | No | Exchange rate to organization base currency as a string, e.g. '1.000000' | |
| payment_method | Yes | Payment method: 1=bank account, 2=cash, 3=cheque, 4=web banking, 5=POS, 6=PayPal, 7=other |
TDQS
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.
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.
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.
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.
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.
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').
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Payment date in YYYY-MM-DD format | |
| notes | No | Internal notes about this payment | |
| amount | Yes | Amount received as a string, e.g. '500.00' | |
| client | Yes | Contact ID of the paying client | |
| invoice | No | Invoice ID to apply this payment against (optional) | |
| currency_code | No | ISO 4217 currency code, e.g. 'EUR' (default: organization currency) | |
| exchange_rate | No | Exchange rate to organization base currency as a string, e.g. '1.000000' | |
| payment_method | Yes | Payment method: 1=bank account, 2=cash, 3=cheque, 4=web banking, 5=POS, 6=PayPal, 7=other |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | CC email addresses | |
| id | Yes | The Elorus invoice ID to send | |
| to | Yes | Recipient email addresses | |
| message | No | Email body text (uses default template if omitted) | |
| subject | No | Email subject line (uses default template if omitted) |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The Elorus bill ID to update | |
| date | No | Bill issue date in YYYY-MM-DD format | |
| notes | No | Internal notes | |
| due_date | No | Payment due date in YYYY-MM-DD format |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The Elorus contact ID to update | |
| No | Primary email address | ||
| notes | No | Internal notes | |
| phone | No | Primary phone number | |
| company | No | Company name | |
| is_client | No | Mark as client | |
| last_name | No | Last name | |
| first_name | No | First name | |
| vat_number | No | VAT / tax registration number | |
| is_supplier | No | Mark as supplier |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The Elorus expense ID to update | |
| date | No | Expense date in YYYY-MM-DD format | |
| notes | No | Internal notes | |
| supplier | No | Supplier contact ID | |
| expense_category | No | Expense category ID (obtain from list_expense_categories) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses 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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The Elorus product ID to update | |
| code | No | Product code or SKU | |
| unit | No | Unit of measurement ID (obtain from list_units) | |
| notes | No | Internal notes | |
| taxes | No | Array of tax IDs (obtain via list_taxes) | |
| title | No | Product or service name | |
| sale_price | No | Default selling price before tax, e.g. '99.99' | |
| description | No | Detailed description | |
| purchase_price | No | Default purchase/cost price before tax, e.g. '60.00' |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The Elorus bill ID to void |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The Elorus invoice ID to void |
TDQS
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.
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.
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.
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.
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.
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.
43 tool updates
v1.0.0- First observed
apply_credit_note - First observed
apply_supplier_credit - First observed
create_bill - First observed
create_client_discussion - First observed
create_contact - First observed
create_credit_note - First observed
create_expense - First observed
create_invoice - First observed
create_private_note - First observed
create_product - First observed
create_supplier_credit - First observed
export_cash_receipt_pdf - First observed
export_expense_pdf - First observed
export_invoice_pdf - First observed
get_bill - First observed
get_contact - First observed
get_expense - First observed
get_invoice - First observed
get_product - First observed
list_bills - First observed
list_cash_payments - First observed
list_cash_receipts - First observed
list_client_discussions - First observed
list_contacts - First observed
list_credit_notes - First observed
list_document_types - First observed
list_expense_categories - First observed
list_expenses - First observed
list_invoices - First observed
list_private_notes - First observed
list_products - First observed
list_supplier_credits - First observed
list_taxes - First observed
list_units - First observed
record_cash_payment - First observed
record_cash_receipt - First observed
send_invoice_email - First observed
update_bill - First observed
update_contact - First observed
update_expense - First observed
update_product - First observed
void_bill - First observed
void_invoice
TDQS
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.
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.
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.
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
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
Invoicing you drive by talking to your AI: log time, raise invoices and track what's owed via MCP.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Hosted MCP server for Mini Accountant: invoices, expenses, customers, analytics, tax estimates.
Connect Exact Online to your AI assistant via MCP. Manage Exact Online with natural language.
Related MCP Servers
AlicenseAqualityDmaintenanceMCP server for e-invoice platforms. Enables natural language querying of invoices, partners, company data, and financial reports.18176MIT- AlicenseAqualityCmaintenanceMCP 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.4MIT
- AlicenseBqualityFmaintenanceMCP server for Invoice Ninja v5 API. Enables AI assistants to manage clients, invoices, quotes, payments, and time tracking through natural language.32222MIT
- AlicenseNot gradedqualityDmaintenanceMCP server enabling AI assistants to manage invoices, contacts, products, and other accounting data through the Bukku API.5MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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