Skip to main content
Glama
VitexSoftware

AbraFlexi MCP Server

AbraFlexi MCP Server

License: MIT Python 3.10+ PyPI version Packaging: deb M8ven Score

A comprehensive Model Context Protocol (MCP) server for AbraFlexi integration using FastMCP and python-abraflexi. This server provides complete access to AbraFlexi REST API functionality through MCP-compatible tools.

Features

68 tools in total, covering the full REST surface exposed by python-abraflexi: dedicated tools for the most common evidences (invoices, contacts, products, bank transactions), plus generic evidence_* tools that work against any AbraFlexi evidence by name.

One server process = one AbraFlexi company. A running server is bound for its whole lifetime to a single company, set via ABRAFLEXI_URL/ABRAFLEXI_COMPANY (see Configuration). Every record any tool returns already belongs to that company - it is not possible to ask this server for another company's data. Call server_info to check which company/URL a running server is bound to; the main record-fetching tools (invoice_issued_get, invoice_received_get, contact_get, product_get, bank_transaction_get, evidence_get, changes_get) also echo it back in a _context block on every response, together with a note clarifying any counterparty fields on the records (e.g. an invoice's nazFirmy is the customer/supplier, not the company that issued/received it).

ℹ️ Server Identity

  • server_info - Report which AbraFlexi company/URL this server session is bound to

📄 Invoice Management

  • invoice_issued_get - Retrieve issued invoices (faktura-vydana)

  • invoice_issued_create - Create new issued invoices

  • invoice_issued_update - Update existing issued invoices

  • invoice_issued_delete - Remove issued invoices

  • invoice_received_get - Retrieve received invoices (faktura-prijata)

  • invoice_received_create - Create new received invoices

💳 Issued Invoice Business Logic

  • invoice_issued_match_payment - Match an invoice against a payment document (Párování plateb)

  • invoice_issued_cash_payment - Pay an invoice in cash (Hotovostní úhrada)

  • invoice_issued_deduct_advance - Deduct an advance invoice (Odpočet záloh a ZDD)

  • invoice_issued_deduct_zdd - Deduct an advance tax document, ZDD (Odpočet záloh a ZDD)

  • invoice_issued_link_zdd - Link a ZDD to an income payment (Vazby ZDD)

  • invoice_issued_unlink_zdd - Remove a ZDD bonding (Vazby ZDD)

  • invoice_issued_overdue_days - Compute days overdue from a due date (pure, no API call)

  • invoice_issued_get_email - Resolve the best recipient email for an invoice

  • invoice_issued_get_recipients - Resolve all recipient emails for an invoice

🏢 Company Management

  • company_create - Found a brand-new AbraFlexi company (accounting unit) - requires server-admin/license REST rights

👥 Contact Management

  • contact_get - Retrieve contacts and companies (adresar)

  • contact_create - Create new contacts

  • contact_update - Update existing contacts

  • contact_delete - Remove contacts

☎️ Contact Convenience Lookups

  • contact_get_notification_email - Best email to notify (primary/purpose-matching contact)

  • contact_get_cell_phone - Cell phone number to use

  • contact_get_any_phone - Any usable phone number (mobile preferred over landline)

  • contact_get_bank_accounts - Registered bank account(s) for a contact

📦 Product Management

  • product_get - Retrieve products from price list (cenik)

  • product_create - Create new products

  • product_update - Update existing products

  • product_delete - Remove products

🏦 Bank Transaction Management

  • bank_transaction_get - Retrieve bank transactions (banka)

  • bank_transaction_create - Create new bank transactions

🔧 Generic Evidence Operations

  • evidence_get - Get records from any evidence (filter, pagination, sorting, relations)

  • evidence_create - Create record in any evidence

  • evidence_update - Update record in any evidence (supports remove_external_ids)

  • evidence_delete - Delete record from any evidence

  • evidence_list - List all available evidences

🧠 Python-abraflexi Bridge

  • abraflexi_client_methods - List public methods of core python-abraflexi clients (ReadOnly, ReadWrite, Changes, Adresar, FakturaVydana)

  • abraflexi_client_call - Invoke a selected public client method with arguments (write methods still respect READ_ONLY)

🔒 Locking, Actions & Batch Operations

  • evidence_lock / evidence_unlock / evidence_lock_for_ucetni - Lock/unlock a record

  • evidence_storno - Cancel (storno) a document record

  • evidence_perform_action - Call a record's dedicated business action (e.g. pay)

  • evidence_mass_update - Update, or act on, every record matching a filter (Dávkové operace)

  • evidence_batch_insert / evidence_batch_update - Insert/update many records in one request

📎 Attachments

  • evidence_attach_file - Attach a local file to any record

  • evidence_list_attachments - List a record's attachments

  • evidence_get_attachment - Get metadata for a single attachment

  • evidence_download_attachment - Download an attachment to a local file

  • evidence_get_attachment_thumbnail - Download an image attachment's thumbnail

  • evidence_delete_attachment - Delete an attachment

🧾 Reports, QR Codes & User Queries

  • evidence_export_report - Export a PDF/XLSX report for a record or evidence listing

  • evidence_get_qr_code - Get a document's payment QR code (file or base64 data URI)

  • call_user_query - Call a saved user-defined query (uživatelský dotaz)

ℹ️ Evidence Metadata & Summation

  • evidence_get_properties - List the fields supported by an evidence

  • evidence_get_reports - List the printable reports available for an evidence

  • evidence_get_relations_list - List the sub-evidences (relations) available for an evidence

  • evidence_get_sum - Get summation (totals) for an evidence

  • evidence_get_record_changes - Get a single record's change history

🏷️ Labels (štítky)

  • evidence_get_labels - Get labels assigned to a record

  • evidence_set_label - Add a label

  • evidence_unset_label - Remove specific label(s)

  • evidence_unset_labels - Remove all labels

🔄 Changes API (company-wide incremental sync)

  • changes_enable / changes_disable - Toggle change tracking

  • changes_status - Check whether change tracking is enabled

  • changes_get - Page through recorded changes since a given version

Related MCP server: wefact-mcp

Installation

Prerequisites

  • Python 3.10 or higher

  • Access to an AbraFlexi server with API enabled

pip install abraflexi-mcp-server

Then run the server:

abraflexi-mcp

Option 2: AppImage (Linux)

Download the self-contained AppImage from the latest release:

chmod +x AbraFlexi-MCP-Server-*-x86_64.AppImage
./AbraFlexi-MCP-Server-*-x86_64.AppImage

No Python or pip required. See AppImage section for details.

Option 3: Install from Source

  1. Clone the repository:

    git clone https://github.com/VitexSoftware/abraflexi-mcp-server.git
    cd abraflexi-mcp-server
  2. Install with uv (recommended):

    uv sync
    uv run python scripts/start_server.py

    Or with pip:

    pip install -e .
    abraflexi-mcp

Cloud Deployment

A testing deployment is available at:

🌐 https://abraflexi.fastmcp.app/mcp

This cloud-hosted instance allows you to test and use the AbraFlexi MCP server without local installation. Configure your MCP client to connect to this endpoint with HTTP transport.

Note: This is a testing deployment. For production use, we recommend self-hosting using one of the installation methods above.

Configuration

Create a .env file or set environment variables:

cp .env.example .env
# Edit .env with your AbraFlexi server details

Configuration

Required Environment Variables

  • ABRAFLEXI_URL - Your AbraFlexi server URL (e.g., https://demo.flexibee.eu:5434)

  • ABRAFLEXI_COMPANY - Company identifier (e.g., demo_de)

Authentication (choose one method)

Method 1: Username/Password (Recommended)

  • ABRAFLEXI_LOGIN - Your AbraFlexi username

  • ABRAFLEXI_PASSWORD - Your AbraFlexi password

Method 2: Session ID

  • ABRAFLEXI_AUTHSESSID - Your AbraFlexi session ID

Optional Configuration

  • READ_ONLY - Set to true, 1, or yes to enable read-only mode (default: true)

  • ABRAFLEXI_TIMEOUT - Request timeout in seconds (default: 300)

Transport Configuration

  • ABRAFLEXI_MCP_TRANSPORT - Transport type: stdio (default) or streamable-http

HTTP Transport Configuration (only used when ABRAFLEXI_MCP_TRANSPORT=streamable-http):

  • ABRAFLEXI_MCP_HOST - Server host (default: 127.0.0.1)

  • ABRAFLEXI_MCP_PORT - Server port (default: 8000)

  • ABRAFLEXI_MCP_STATELESS_HTTP - Stateless mode (default: false)

  • AUTH_TYPE - Must be set to no-auth for streamable-http transport

Usage

Running the Server

With startup script (recommended):

uv run python scripts/start_server.py

Direct execution:

uv run python -m abraflexi_mcp_server.server

CLI help:

abraflexi-mcp --help

Transport Options

The server supports two transport methods:

STDIO Transport (Default)

Standard input/output transport for MCP clients like Claude Desktop:

# Set in .env or environment
ABRAFLEXI_MCP_TRANSPORT=stdio

HTTP Transport

HTTP-based transport for web integrations:

# Set in .env or environment
ABRAFLEXI_MCP_TRANSPORT=streamable-http
ABRAFLEXI_MCP_HOST=127.0.0.1
ABRAFLEXI_MCP_PORT=8000
ABRAFLEXI_MCP_STATELESS_HTTP=false
AUTH_TYPE=no-auth

Testing

Run test suite:

uv run python scripts/test_server.py

Read-Only Mode

When READ_ONLY=true (default), the server will only expose GET operations (retrieve data) and block all create, update, and delete operations. This is useful for:

  • 📊 Monitoring dashboards

  • 🔍 Read-only integrations

  • 🔒 Security-conscious environments

  • 🛡️ Preventing accidental modifications

To enable write operations, set READ_ONLY=false in your .env file.

Example Tool Calls

Get all issued invoices:

invoice_issued_get(limit=10)

Get specific invoice by code:

invoice_issued_get(kod="INV-2024-001")

Count invoices issued in August 2026 (without downloading full records):

invoice_issued_get(
    datum_vystaveni_od="2026-08-01",
    datum_vystaveni_do="2026-08-31",
    detail="id",
    add_row_count=True
)

Create a new contact:

contact_create(
    kod="CUSTOMER01",
    nazev="Example Company s.r.o.",
    email="info@example.com",
    tel="+420123456789"
)

Get products:

product_get(nazev="Widget", limit=5)

Generic evidence query (with pagination/sorting):

evidence_get(
    evidence="faktura-vydana",
    filter_expr="datVyst >= '2024-01-01'",
    order="datVyst",
    order_direction="D",
    limit=20,
    start=0
)

Attach a local file to any record:

evidence_attach_file(evidence="cenik", kod="PRODUCT01", filepath="/path/to/photo.jpg")

Lock an invoice, then export its PDF:

evidence_lock(evidence="faktura-vydana", kod="INV-2024-001")
evidence_export_report(
    evidence="faktura-vydana",
    kod="INV-2024-001",
    output_path="/tmp/invoice.pdf",
    report_name="dodaciList"
)

Mass-update every price-list item from a supplier:

evidence_mass_update(
    evidence="cenik",
    filter_expr="dodavatel = 'code:SUPPLIER01'",
    data={"stitky": "code:VIP"}
)

Incremental sync via the Changes API:

changes_enable()
page = changes_get(start=0, limit=500, evidences=["faktura-vydana"])
# page["changes"], page["next"], page["global_version"]

MCP Integration

This server is designed to work with MCP-compatible clients like Claude Desktop. See MCP_SETUP.md for detailed integration instructions.

OCI Container

The server can be run as an OCI container (Docker/Podman) — no Python installation needed on the host.

Building the image

podman build -t abraflexi-mcp-server -f Containerfile .

Running the container

The image defaults to streamable-http transport on port 8000.

With individual environment variables:

podman run --rm -p 8000:8000 \
  -e ABRAFLEXI_URL=https://demo.flexibee.eu:5434 \
  -e ABRAFLEXI_COMPANY=demo_de \
  -e ABRAFLEXI_LOGIN=winstrom \
  -e ABRAFLEXI_PASSWORD=winstrom \
  abraflexi-mcp-server

With an env file:

podman run --rm -p 8000:8000 --env-file .env abraflexi-mcp-server

Container environment defaults

Variable

Default

ABRAFLEXI_MCP_TRANSPORT

streamable-http

ABRAFLEXI_MCP_HOST

0.0.0.0

ABRAFLEXI_MCP_PORT

8000

READ_ONLY

true

All other configuration variables can be passed as environment variables.

AppImage

A self-contained, single-file Linux executable — no Python, pip, or any other dependency required on the host.

Building the AppImage

bash appimage/build-appimage.sh

The script downloads a portable CPython and appimagetool automatically. The resulting file is placed in build/appimage/:

build/appimage/AbraFlexi-MCP-Server-<version>-x86_64.AppImage

Running the AppImage

The AppImage automatically loads a .env file from the current working directory if one is present.

With a .env file (recommended):

cp .env.example .env
# edit .env with your credentials
./AbraFlexi-MCP-Server-*-x86_64.AppImage

With inline environment variables:

ABRAFLEXI_URL=https://demo.flexibee.eu:5434 \
ABRAFLEXI_COMPANY=demo_de \
ABRAFLEXI_LOGIN=winstrom \
ABRAFLEXI_PASSWORD=winstrom \
./AbraFlexi-MCP-Server-*-x86_64.AppImage

Development

Project Structure

abraflexi-mcp-server/
├── abraflexi_mcp_server/
│   ├── __init__.py
│   └── server.py                  # Main server implementation
├── appimage/
│   ├── AppRun                     # AppImage entry point
│   ├── abraflexi-mcp-server.desktop
│   ├── abraflexi-mcp-server.svg
│   └── build-appimage.sh          # AppImage build script
├── debian/                        # Debian packaging
│   ├── abraflexi-mcp-server.svg   # AppStream stock icon
│   ├── abraflexi-mcp-server.install
│   └── cz.vitexsoftware.abraflexi-mcp-server.metainfo.xml
├── scripts/
│   ├── start_server.py            # Startup script with validation
│   └── test_server.py             # Test script
├── Containerfile                  # OCI container build
├── server.json                    # MCP Registry manifest
├── pyproject.toml                 # Python project configuration
├── setup.py                       # Legacy setuptools configuration
├── requirements.txt               # Dependencies
├── .env.example                   # Environment configuration template
├── .env                           # Your configuration (not in git)
├── .gitignore                     # Git ignore patterns
└── README.md                      # This file

Running Tests

# Test server functionality
uv run python scripts/test_server.py

# Test with specific environment
ABRAFLEXI_URL=https://your-server.com uv run python scripts/test_server.py

Error Handling

The server includes comprehensive error handling:

  • ✅ Authentication errors are clearly reported

  • 🔒 Read-only mode violations are blocked with descriptive messages

  • ✔️ Invalid parameters are validated

  • 🌐 Network and API errors are properly formatted

  • 📝 Detailed logging for troubleshooting

Security Considerations

  • 🔑 Store credentials securely in .env file (never commit to git)

  • 🔒 Enable read-only mode for monitoring-only use cases

  • 🛡️ Use HTTPS for AbraFlexi server connections

  • 🔄 Regularly rotate passwords

  • 📁 Ensure .env file has proper permissions (600)

Troubleshooting

Common Issues

Connection Failed:

  • Verify ABRAFLEXI_URL is correct and accessible

  • Check authentication credentials

  • Ensure AbraFlexi API is enabled

  • Check firewall/network settings

Permission Denied:

  • Verify user has sufficient AbraFlexi permissions

  • Check if read-only mode is enabled when trying to modify data

Tool Not Found:

  • Ensure all dependencies are installed: uv sync

  • Verify Python version compatibility (3.10+)

Debug Mode

Set environment variable for detailed logging:

export DEBUG=1
uv run python scripts/start_server.py

Dependencies

License

This project is licensed under the MIT License.

Acknowledgments

Support

Author

Vítězslav Dvořák


Made with ❤️ for the AbraFlexi and MCP communities

Available Tools

68 tools
abraflexi_client_callA

Call a public python-abraflexi client method through MCP.

This bridge tool is intended for advanced workflows not yet covered by dedicated MCP wrappers.

ParametersJSON Schema
NameRequiredDescriptionDefault
initNoOptional record selector or initial data passed to constructor
methodYesPublic method name on the selected client class
companyNoOptional company override (dbNazev)
evidenceNoEvidence name (used mainly with ReadOnly/ReadWrite)
method_argsNoPositional arguments for the method call
client_classYesOne of ReadOnly, ReadWrite, Changes, Adresar, FakturaVydana
extra_optionsNoAdditional constructor options for the client
method_kwargsNoKeyword arguments for the method call

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not warn that arbitrary client method calls may mutate data, fail unpredictably, or require deep python-abraflexi knowledge. 'Advanced workflows' is only a weak implicit caution.

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

Conciseness5/5

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

Two short sentences, front-loaded with the primary action and followed by usage context. There is no redundant or filler content, and every sentence earns its place.

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

Completeness2/5

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

For a generic bridge tool exposing arbitrary client methods with 8 parameters and no annotations, the description is too sparse. It does not mention how to discover valid method names, refer to the sibling abraflexi_client_methods tool, or warn about the safety implications of dynamic invocation. An output schema exists, but the missing operational guidance is significant.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 8 parameters with meaningful descriptions. The tool description adds no parameter-level detail, but with full schema coverage the baseline of 3 is appropriate.

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

Purpose5/5

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

The description states a specific action ('Call a public python-abraflexi client method through MCP') and names the exact resource type. It also distinguishes itself from the many dedicated sibling tools by positioning itself as a bridge for workflows 'not yet covered by dedicated MCP wrappers'.

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

Usage Guidelines4/5

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

The description clearly says this is for advanced workflows and implicitly routes routine cases to dedicated MCP wrappers. It does not explicitly name an alternative tool or state 'use dedicated wrappers when available', but the intended context is clear enough.

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

abraflexi_client_methodsB

List public python-abraflexi methods available via bridge calls.

ParametersJSON Schema
NameRequiredDescriptionDefault
client_classNoOptional class name to narrow results (ReadOnly, ReadWrite, Changes, Adresar, FakturaVydana)
include_signaturesNoInclude Python signatures and one-line docs

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. The verb 'List' implies a read-only discovery operation, and 'public ... via bridge calls' clarifies scope. However, it does not mention authentication requirements, side effects, or any operational constraints, though for a listing tool these are less critical.

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

Conciseness5/5

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

A single, front-loaded sentence with no filler. Every word earns its place: 'List', 'public', 'python-abraflexi', 'methods', 'via bridge calls'.

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

Completeness4/5

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

The tool is simple, has only two self-explanatory parameters, and an output schema exists, so return values do not need description. The only gap is the missing usage linkage to abraflexi_client_call, but everything needed to invoke the tool correctly is present.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already well-documented. The description adds no parameter-specific meaning, but the baseline of 3 applies because the schema fully compensates.

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

Purpose4/5

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

The description uses a specific verb ('List') and a clear resource ('public python-abraflexi methods available via bridge calls'). It distinguishes itself from the sibling 'abraflexi_client_call' (which invokes a method) by focusing on enumeration, though it does not explicitly name that alternative.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives. An agent must infer that this lists available methods for later use with 'abraflexi_client_call'; the description never states this relationship or any conditions for use.

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

bank_transaction_createB

Create a new bank transaction in AbraFlexi.

ParametersJSON Schema
NameRequiredDescriptionDefault
kodYesTransaction code (unique identifier)
bankaYesBank account reference (e.g., 'code:BANKA-CZK')
firmaNoRelated contact reference (e.g., 'code:CUSTOMER01')
popisNoTransaction description
castkaYesTransaction amount, VAT-exempt (sets sumOsv on an itemless document; use extra_fields for a VAT-split amount or actual polozkyDokladu line items instead)
typ_pohybuNoMovement direction - 'prijem' (income, default) or 'vydej' (expense)prijem
typ_dokladuNoDocument type code (see the typ-banka evidence); defaults to 'STANDARD'STANDARD
extra_fieldsNoAdditional transaction fields
datum_vystaveniYesTransaction date (YYYY-MM-DD format)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure, but it only says 'Create a new bank transaction.' It does not mention mutation side effects, required permissions, validation behavior, reversibility, or that this creates an itemless document as hinted in the castka parameter description.

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

Conciseness4/5

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

The description is a single, clear sentence with no filler or redundant phrasing. It is concise, though arguably undersized for a 9-parameter mutation tool; slightly more context could be added without hurting conciseness.

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

Completeness2/5

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

For a mutation tool with no annotations and a nontrivial 9-parameter schema, the description is too thin. It lacks usage guidance, behavioral context, and operational expectations; the output schema helps with return values but does not compensate for the missing usage and behavior information.

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

Parameters3/5

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

Schema description coverage is 100%, and every parameter has a meaningful description, so the schema already carries the parameter semantics. The tool description adds no additional parameter meaning, which is acceptable under the baseline but provides no extra value.

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

Purpose5/5

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

The description uses a specific verb ('Create') and a specific resource ('bank transaction in AbraFlexi'), clearly identifying the operation. It also distinguishes itself from sibling tools like bank_transaction_get and generic evidence_create by naming the exact resource and action.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives such as evidence_create or bank_transaction_get. The description does not state any exclusions, prerequisites, or routing criteria, leaving the agent to infer usage from the name alone.

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

bank_transaction_getA

Get bank transactions (banka) from AbraFlexi.

These are bank transactions belonging to the AbraFlexi company this server is bound to (see server_info).

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNoList of transaction IDs to retrieve
limitNoMaximum number of results
detailNoDetail level (summary, id, full, custom:field1,field2)summary

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It discloses that results are scoped to the server-bound AbraFlexi company, but it does not explicitly confirm the operation is read-only, discuss missing IDs, or describe pagination behavior. The 'Get' verb and output schema partially compensate.

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

Conciseness5/5

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

The description is two compact sentences with no filler. The primary purpose is front-loaded, and the scope clarifier earns its place by narrowing the data set.

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

Completeness4/5

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

For a simple read operation with no required parameters, a detailed output schema, and fully described parameters, the description is largely sufficient. It names the source and scope and points to server_info; only default behavior when no IDs are supplied remains implicit.

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

Parameters3/5

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

Schema description coverage is 100%, with clear descriptions for ids, limit, and detail. The tool description adds no extra parameter-level nuance, so the baseline score is appropriate.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Get bank transactions (banka) from AbraFlexi.' It clearly distinguishes the tool from siblings like bank_transaction_create and other evidence_get tools by naming the exact resource.

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

Usage Guidelines3/5

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

The scope note about transactions belonging to the bound AbraFlexi company adds context, but there is no explicit guidance on when to prefer this tool over alternatives such as evidence_get, nor are any exclusions stated. Usage must be inferred from the verb and resource.

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

call_user_queryB

Call a saved user-defined query (uzivatelsky dotaz).

ParametersJSON Schema
NameRequiredDescriptionDefault
methodNoHTTP method to use (GET or POST)GET
paramsNoQuery parameters; a list value repeats the parameter in the URL, matching AbraFlexi's N-arity query parameter syntax
query_idYesIdentifier of the saved query

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. 'Call' implies execution, but it does not disclose whether this is a read-only operation, whether it may mutate data (a saved query could invoke actions?), what HTTP method behavior is, or what happens with parameters. The method and params fields hint at HTTP mechanics, but the description itself does not reveal side effects or response shape.

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

Conciseness4/5

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

The description is one short sentence with no waste. It front-loads the core action and resource. It could add a brief consequence or usage note without hurting conciseness, but as-is it is appropriately compact.

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

Completeness3/5

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

An output schema exists, so return values are presumably documented elsewhere. Still, for a tool that executes a saved query with configurable HTTP method and params, an agent would benefit from knowing typical use cases, whether this is safe to call, and how query execution differs from evidence_get. The description is minimally complete but leaves behavioral ambiguity.

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

Parameters3/5

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

Schema description coverage is 100%, so each parameter is documented in the schema. The description adds no parameter-level semantics beyond the schema. With full coverage the baseline is 3; the description does not elevate it by explaining query_id semantics or how params maps to AbraFlexi's N-arity syntax beyond what the parameter description already says.

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

Purpose4/5

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

The description says 'Call a saved user-defined query (uzivatelsky dotaz).' That is a specific verb ('call') with a clear resource ('a saved user-defined query'), and it distinguishes this from generic evidence operations. It could be stronger by clarifying what 'call' returns, but the verb+resource is enough to tell the agent this executes a saved query rather than reading a record.

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

Usage Guidelines3/5

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

No explicit when-to-use or when-not-to-use guidance is provided. However, the description implies it is for executing a saved user-defined query, which is contextually distinct from siblings like evidence_get or abraflexi_client_call. It does not name alternatives or exclusion criteria, so an agent must infer usage from the resource type.

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

changes_disableA

Disable change tracking for the current company (Changes API).

Returns: str: JSON formatted result

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It correctly identifies the operation as a mutation scoped to the current company, but it does not disclose whether existing change-tracking history is preserved or deleted, whether the action is reversible, or whether special permissions are required. For a disable operation, these are significant gaps.

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

Conciseness5/5

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

The description is two short sentences with the action front-loaded and a compact Returns line. Every word earns its place: the verb, resource, scope, API context, and return type are all present with no filler.

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

Completeness3/5

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

An output schema exists, so return values are covered elsewhere, and the zero-parameter surface keeps requirements small. However, with no annotations and no explanation of side effects, reversibility, or relationship to changes_enable, the description leaves important behavioral context missing for a mutating tool. Overall it is minimally viable but not fully complete.

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

Parameters4/5

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

The tool has zero parameters and the input schema is an empty object, so there is nothing for the description to add about parameters. The phrase 'current company' refers to an implicit execution context, not a schema parameter. Per the zero-parameter baseline, this is appropriate.

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

Purpose5/5

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

The description names the verb (Disable), the resource (change tracking), the scope (current company), and the API context (Changes API). This makes it immediately distinguishable from sibling tools like changes_enable, changes_status, and changes_get.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. It does not mention that changes_enable is the inverse operation, nor does it suggest any precondition such as reviewing changes_get before disabling. The list of sibling tools is provided in the context, but the description itself gives no routing information.

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

changes_enableB

Enable change tracking for the current company (Changes API).

Returns: str: JSON formatted result

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only states that it enables change tracking and returns a JSON-formatted string; it does not mention side effects, idempotency, permissions required, or what happens if change tracking is already enabled.

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

Conciseness4/5

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

The description is very brief and front-loaded with the action and resource. The return line is slightly redundant given the output schema exists, but it is not excessive and the overall structure is clean and easy to parse.

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

Completeness3/5

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

For a zero-parameter tool, this is minimally viable, but it leaves gaps around behavioral expectations such as whether enabling is idempotent, whether it requires special permissions, and how it relates to querying or disabling change tracking. These gaps are more notable because no annotations are available.

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

Parameters4/5

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

The tool has zero parameters and the schema confirms an empty properties object, so there are no parameter semantics to document. The baseline of 4 applies because the description is not required to compensate for any parameter-coverage gap.

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

Purpose4/5

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

The description clearly states the specific action ('Enable') and resource ('change tracking for the current company'), and scopes it to the Changes API. It is clear enough to distinguish from siblings like changes_disable and changes_status by the verb, though it does not explicitly call out those alternatives.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus related Change API tools such as changes_disable, changes_status, or changes_get. The intended use is implied by the word 'Enable,' but no conditions, prerequisites, or exclusions are provided.

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

changes_getA

Get a page of company-wide recorded changes (Changes API), for incremental synchronization of external systems.

Changes are scoped to the AbraFlexi company this server is bound to (see server_info).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of changes to return (server default 100, max 1000)
startNoGlobal version to start listing from (inclusive); defaults to the beginning of tracked history
evidencesNoRestrict the listing to these evidence names

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses that changes are scoped to the bound AbraFlexi company and that results are returned as a page, which supports safe usage. It does not explicitly state read-only behavior, authentication needs, rate limits, or what happens at the end of tracked history, though the schema partially covers pagination.

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

Conciseness5/5

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

Two tight sentences with no filler. The core action and purpose are front-loaded, and the scoping clarification is relevant and placed second. Every sentence earns its place.

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

Completeness4/5

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

For a simple paginated read tool with a full output schema and 100% schema description coverage, the description is largely sufficient. It explains the tool's purpose and scoping, but could be more complete by noting how this differs from evidence_get_record_changes and by explicitly confirming the operation is non-mutating.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds the important 'page' and 'incremental synchronization' conceptual framing, but it does not provide additional parameter-level meaning beyond what the schema already documents for limit, start, and evidences.

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

Purpose5/5

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

The description clearly states the operation ('Get') and the resource ('a page of company-wide recorded changes via the Changes API'), and adds the specific purpose of incremental synchronization. This differentiates it from siblings like evidence_get_record_changes, which is scoped to individual records rather than company-wide changes.

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

Usage Guidelines4/5

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

The explicit mention of 'incremental synchronization of external systems' gives clear context for when this tool is the right choice, and the company-wide scope is stated. However, it does not explicitly name alternatives or conditions where a sibling tool like evidence_get_record_changes should be preferred instead.

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

changes_statusA

Check whether change tracking is currently enabled for the current company.

Returns: str: JSON formatted status

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden. It discloses that this is a read-only status check and that it returns a JSON-formatted string. It does not mention error cases or permissions, but for a simple status query with no parameters, the described behavior is transparent enough.

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

Conciseness5/5

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

The description is two concise sentences: the first states the core behavior, and the second gives the return type. There is no wasted wording or unnecessary detail.

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

Completeness5/5

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

For a simple zero-parameter status check, this description is complete. It states what the tool checks, for which scope, and what it returns. The presence of an output schema further covers return-value details, so nothing essential is missing.

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

Parameters4/5

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

The tool has zero parameters, so there is no parameter semantics to document. The schema already reflects this, and the description adds no confusing parameter-related claims.

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

Purpose5/5

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

The description states a specific action ('Check whether') and a specific resource ('change tracking is currently enabled for the current company'). It clearly distinguishes this from sibling tools like changes_enable and changes_disable, whose purposes are evident from their names.

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

Usage Guidelines4/5

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

The description clearly implies the usage scenario: use this when you need to know whether change tracking is enabled for the current company. It does not explicitly name alternatives or exclusions, but the context is clear enough for a zero-parameter status check.

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

company_createA

Create a brand-new AbraFlexi company (accounting unit) at the server root.

Unlike every other *_create tool, this does NOT operate on the company configured via ABRAFLEXI_COMPANY - it calls the server-level "/admin/zalozeni-firmy" endpoint, which requires a REST user with server-admin/license-level rights (not just rights on one company).

ParametersJSON Schema
NameRequiredDescriptionDefault
icNoCompany registration number (ICO) - auto-fills VAT payer status, registered seat and other fields from the ARES registry.
nameYesDisplay name of the new company. The company identifier (dbNazev, used as {company} in later /c/{company}/... calls) is derived from this automatically.
vatidNoVAT ID (DIC), if not auto-filled via ic.
countryNoLegislation - "CZ" or "SK".CZ
org_typeNoOrganization type, e.g. "PODNIKATELE+PU" (double-entry bookkeeping), "PODNIKATELE+DE" (tax records), "NEZISKOVE", "ROZPOCTOVE" for CZ; "PODNIKATELIA+PU" for SK.
use_demoNoSeed the new company with demo data (CZ + PODNIKATELE+PU only).
extra_fieldsNoAny additional query parameters to pass through.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral disclosure burden, and it does so well: it reveals the server-level scope, the specific endpoint called, and the elevated auth requirement beyond single-company rights. It does not mention side effects or failure conditions, but for a create tool with an output schema, this is strong transparency.

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

Conciseness5/5

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

The description is two short paragraphs, front-loaded with the core action before adding the differentiator and permission requirement. Every sentence contributes useful information with no redundant restatement of the tool name or schema contents.

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

Completeness5/5

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

For a server-level creation tool with 7 parameters and no annotations, the description provides the essential operational context: resource, scope, endpoint, and required access level. The output schema covers the return shape, so nothing an agent needs to decide whether to call this tool and invoke it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameter descriptions already explain name, IC, country, org_type, use_demo, and extra_fields. The tool description adds no parameter-specific meaning, which is acceptable under the high-coverage baseline but earns no extra credit.

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

Purpose5/5

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

The first sentence states the exact action and resource: creating a brand-new AbraFlexi company at the server root, with a parenthetical clarifying what an accounting unit is. The second sentence explicitly distinguishes it from every other *_create tool, so an agent can differentiate it from the many create-family siblings without opening their schemas.

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

Usage Guidelines5/5

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

The description explicitly says this tool does NOT operate on the company configured via ABRAFLEXI_COMPANY, which is the key decision boundary. It names the server-level endpoint and the required permission level, giving both when-to-use and when-not-to-use guidance in two sentences.

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

contact_createB

Create a new contact/company in AbraFlexi.

ParametersJSON Schema
NameRequiredDescriptionDefault
kodYesContact code (unique identifier)
telNoPhone number
emailNoEmail address
nazevYesContact name
extra_fieldsNoAdditional contact fields

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations exist, so the description must carry the full burden. It only states the operation type without disclosing side effects, error conditions, authentication needs, or behavior on duplicate codes.

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

Conciseness4/5

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

The description is a single, clear sentence with no wasted words. It is concise, though front-loading the resource type is good.

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

Completeness3/5

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

With an output schema present (not shown) and full schema coverage, the bare description may suffice for simple create operations. However, it omits important context like duplicate handling or required permissions.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are fully documented in the schema. The description adds no extra meaning beyond 'Create' and 'in AbraFlexi', making it neutral.

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

Purpose5/5

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

The description clearly states the action ('Create') and the resource ('a new contact/company in AbraFlexi'). It effectively distinguishes from sibling tools like contact_delete, contact_get, and contact_update.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., bank_transaction_create or invoice_issued_create) or any prerequisites. The agent receives no context for appropriate invocation.

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

contact_deleteC

Delete a contact/company from AbraFlexi.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoContact ID to delete
kodNoContact code to delete (alternative to id)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states 'Delete a contact/company'. It does not disclose permissions, irreversibility, or side effects, making behavioral transparency minimal.

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

Conciseness4/5

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

The description is a single, front-loaded sentence that is concise and directly states the action and resource. However, it lacks structured information, such as usage notes or parameter details.

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

Completeness2/5

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

Given the tool's simplicity and lack of annotations, the description is incomplete. It omits behavioral details, return values (despite an output schema existing but not described), and any context about the effects or limitations of deletion.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond what the schema already provides for the two parameters (id and kod).

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

Purpose5/5

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

The description clearly states the verb 'Delete' and the resource 'contact/company from AbraFlexi'. It distinguishes from sibling tools like contact_create, contact_get, and contact_update by specifying the delete action.

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

Usage Guidelines1/5

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

The description provides no guidance on when to use this tool versus alternatives, nor any context about 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.

contact_getA

Get contacts/companies (adresar) from AbraFlexi.

These are address-book entries (customers, suppliers, other contacts) belonging to the AbraFlexi company this server is bound to (see server_info) - they are business partners of that company, not the company itself.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNoList of contact IDs to retrieve
kodNoContact code to search for
limitNoMaximum number of results
nazevNoContact name to search for (partial match)
detailNoDetail level (summary, id, full, custom:field1,field2)summary

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It usefully reveals that results are scoped to the bound company and excludes the company itself, which is non-obvious. However, it does not explicitly state the read-only nature, side-effect absence, authentication needs, or rate limits, leaving only the 'Get' verb to imply a safe read.

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

Conciseness5/5

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

The description is two sentences with no wasted words. The first sentence states the action and resource, and the second clarifies the data scope and eliminates a common misunderstanding about the company itself. This is efficient, front-loaded, and every sentence earns its place.

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

Completeness4/5

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

Given the tool has a rich input schema with full parameter descriptions and an output schema, the description sufficiently covers the data domain and scope. It even references server_info for additional context about the bound company. An explicit read-only note or alternative-tool routing would improve it, but nothing essential is missing for calling it correctly.

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

Parameters3/5

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

The input schema covers 100% of parameters with meaningful descriptions ('List of contact IDs to retrieve', 'Contact code to search for', 'Maximum number of results', 'Contact name to search for (partial match)', 'Detail level (summary, id, full, custom:field1,field2)'). The description adds no parameter-level detail beyond what the schema already provides, so the baseline 3 is appropriate.

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

Purpose4/5

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

The description opens with 'Get contacts/companies (adresar) from AbraFlexi', clearly identifying a specific verb and resource. It adds valuable scope by explaining these are address-book entries (customers, suppliers, other contacts) and business partners, not the company itself. However, it does not explicitly contrast with sibling contact_get_* tools, so differentiation relies mostly on tool naming.

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

Usage Guidelines4/5

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

The description provides clear context about what the tool is for: retrieving address-book entries belonging to the bound AbraFlexi company, and it points to server_info for company binding context. It does not explicitly state when not to use this tool or name alternative tools, so it falls just short of full routing guidance.

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

contact_get_any_phoneA

Get any usable phone number for a contact, preferring mobile over landline.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoContact ID
kodNoContact code (alternative to id)
purposeNoContact purpose - one of Fak|Obj|Nab|Ppt|Skl|Pok

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden. It discloses the tool's selection behavior: it returns any usable phone number and prefers mobile over landline. This gives meaningful insight into fallback behavior, though it does not mention edge cases like no phone number existing or potential null returns, but the output schema likely covers return shape.

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

Conciseness5/5

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

The description is a single concise sentence that front-loads the core action and then adds the essential preference logic. No words are wasted, and the phrasing is clear and efficient.

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

Completeness4/5

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

For a simple read-style getter, the description covers the essential decision logic: what it returns and which phone type is preferred. Combined with 100% schema coverage and an output schema, this is largely complete. It could be slightly stronger by explicitly contrasting with contact_get_cell_phone, but that gap is minor.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters (id, kod, purpose) are already documented in the schema. The description adds no additional parameter-level meaning, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Get') and resource ('any usable phone number for a contact'), and adds the key discriminator 'preferring mobile over landline,' which distinguishes it from sibling contact_get_cell_phone. The purpose is immediately understandable and unambiguous.

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

Usage Guidelines3/5

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

The description implies when to use this tool: when any phone number is acceptable, with a preference for mobile. However, it does not explicitly name alternatives or state when not to use it, such as when a cell phone specifically is required, leaving some inference to the agent.

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

contact_get_bank_accountsA

Get the bank account(s) registered for a contact.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoContact ID
kodNoContact code (alternative to id)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden of behavioral disclosure. It only says 'Get', which implies a read operation, but it does not disclose what happens when no identifier is supplied, when both id and kod are supplied, or what errors or requirements apply.

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

Conciseness5/5

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

One sentence with zero filler; the resource and scope are front-loaded and clear.

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

Completeness3/5

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

The tool is simple and an output schema exists, so return value documentation is not the description's job. Still, with no annotations and both parameters optional in schema, the description leaves the crucial invocation requirement—how to identify the contact—unstated.

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

Parameters3/5

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

Input schema coverage is 100%, with descriptions for 'Contact ID' and 'Contact code (alternative to id)' already present, so the description need not repeat them. It adds no detail beyond 'registered for a contact'; this meets the baseline but does not clarify parameter selection.

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

Purpose5/5

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

The description names the exact resource (bank accounts) and scope (registered for a contact) with the verb 'Get', making it immediately distinguishable from sibling getters such as contact_get_cell_phone and contact_get_notification_email.

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

Usage Guidelines3/5

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

The intended use is inferable: call this when bank accounts for a contact are needed. However, the description gives no explicit when-to-use guidance, no exclusion conditions, and no pointer to alternative contact-related getters.

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

contact_get_cell_phoneB

Get the cell phone number to use for a contact.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoContact ID
kodNoContact code (alternative to id)
purposeNoContact purpose - one of Fak|Obj|Nab|Ppt|Skl|Pok

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. 'Get' implies a read-only operation and the phrase 'to use' hints at selection logic, but the description does not explain how the number is selected, what happens when no number exists, or any error behavior. For such a simple getter this is acceptable but not rich.

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

Conciseness5/5

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

A single focused sentence with no filler. The action and target are front-loaded, and every word contributes to the meaning.

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

Completeness3/5

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

The schema covers the parameters and an output schema exists, so the description does not need to explain return values. However, the description omits usage context, such as whether id or kod is preferred, how purpose affects the returned number, and how this relates to sibling phone/contact tools. It is minimally sufficient but not complete.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters are already documented. The description adds little beyond the schema; 'to use' loosely maps to the purpose parameter but provides no additional semantic detail about id versus kod or the purpose values.

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

Purpose4/5

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

The description states a specific verb and resource: 'Get the cell phone number' for a contact. It is clear and distinct from sibling tools like contact_get_any_phone or contact_get_notification_email, though it does not explicitly name those alternatives.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus the many related contact tools. An agent cannot tell from the description whether to choose this over contact_get_any_phone, contact_get_notification_email, or contact_get.

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

contact_get_notification_emailA

Get the email address to notify for a contact, preferring a primary/ purpose-matching contact over the address's own email.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoContact ID
kodNoContact code (alternative to id)
purposeNoContact purpose - one of Fak|Obj|Nab|Ppt|Skl|Pok

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals an important selection behavior: preferring a primary/purpose-matching contact over the address's own email. This goes beyond the tool name and gives useful insight into how the result is chosen. It does not detail error behavior or missing-input handling, but the core behavior is transparent.

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

Conciseness5/5

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

The description is a single concise sentence that front-loads the main action and then adds the key selection nuance. Every word earns its place, and there is no redundant filler.

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

Completeness3/5

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

The tool has zero required parameters, and the description does not clarify that at least one of id or kod should be supplied, nor what happens if neither is provided. The output schema exists and parameter schema coverage is high, but the optional-identifier ambiguity leaves a meaningful gap for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters id, kod, and purpose are already adequately documented in the schema. The description adds a slight semantic link by mentioning 'purpose-matching,' which hints at how the purpose parameter is used, but it does not need to restate the schema.

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

Purpose5/5

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

The description clearly states a specific verb and resource: 'Get the email address to notify for a contact.' It also adds a distinguishing behavioral detail about preferring a primary/purpose-matching contact, which differentiates it from sibling tools like contact_get or contact_get_any_phone.

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

Usage Guidelines3/5

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

The description implies when to use the tool ('Get the email address to notify for a contact') but does not explicitly mention alternatives or exclusion conditions, such as when contact_get or contact_get_any_phone would be more appropriate. The usage context is clear but largely implicit.

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

contact_updateB

Update an existing contact/company in AbraFlexi.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoContact ID to update
kodNoContact code to update (alternative to id)
dataNoFields to update

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose any behavioral details such as permissions, partial update behavior, or what happens if the contact does not exist.

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

Conciseness4/5

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

The description is a single concise sentence with no unnecessary words. It directly states the tool's purpose, though it could be slightly more detailed.

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

Completeness2/5

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

While the schema and output schema exist, the description lacks important context about update behavior (e.g., partial vs full replace) and usage scenarios, making it incomplete for an agent.

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

Parameters3/5

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

Schema description coverage is 100%, so the description does not need to add much. However, it provides no additional meaning beyond the schema's parameter descriptions, resulting in a baseline score of 3.

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

Purpose5/5

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

The description clearly states the action ('Update') and the resource ('existing contact/company'), distinguishing it from sibling tools like contact_create, contact_get, and contact_delete.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus contact_create or other alternatives. The description does not mention prerequisites, conditions, or limitations.

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

evidence_attach_fileA

Attach a local file to a record in any AbraFlexi evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoRecord ID to attach the file to
kodNoRecord code to attach the file to (alternative to id)
evidenceYesEvidence name (e.g., 'cenik', 'adresar')
filepathYesPath to the local file to attach (read from this server's filesystem)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It indicates a mutation ('Attach') but does not explain side effects, whether repeated attachments are allowed, permission requirements, record-resolution behavior when both id and kod are supplied, or what happens if neither identifier is provided.

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

Conciseness5/5

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

One sentence containing exactly the core action, target, and scope with no filler. The essential information is front-loaded and every word earns its place.

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

Completeness2/5

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

The description omits a critical precondition: a target record must be identified somehow, but both id and kod are optional in the schema and neither is required. An agent could easily attempt a call with only evidence and filepath, which cannot succeed. The output schema exists, so return-value documentation is not the gap, but record identification guidance is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents every parameter. The description adds little beyond reinforcing 'local file' and 'any evidence'; it does not clarify the relationship or mutual exclusivity of id and kod, but the schema already labels kod as an alternative to id.

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

Purpose5/5

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

The description uses a specific verb and resource: it attaches a local file to a record in any AbraFlexi evidence. It clearly distinguishes this from sibling attachment tools like evidence_get_attachment, evidence_download_attachment, and evidence_delete_attachment by naming the attach action.

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

Usage Guidelines4/5

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

The description gives clear context for when to use the tool: when a local file needs to be attached to a record, across any evidence type. It does not explicitly name alternatives or exclusions, but the attach action uniquely matches this tool among the siblings, so confusion is unlikely.

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

evidence_batch_insertB

Insert multiple records into an evidence in a single request.

ParametersJSON Schema
NameRequiredDescriptionDefault
atomicNoCommit each record independently instead of the whole batch as one all-or-nothing transaction
dry_runNoValidate the batch without persisting anything
recordsYesList of records to insert
evidenceYesEvidence name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only restates the insert operation and does not surface important behaviors such as the atomic/dry_run options, partial-failure semantics, or the default non-atomic commit behavior. The schema defines these flags, but the description itself adds no transparency beyond the obvious write operation.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. It immediately names the verb and resource while conveying the core batching distinction. Every word earns its place.

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

Completeness3/5

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

The schema fully documents all parameters and an output schema exists, so the tool definition is structurally complete. However, the description itself is bare: it offers no usage context, no behavioral guardrails, and no hint about batch limits or error behavior. The overall definition is minimally adequate but leaves the agent to infer when and how this tool should be used.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does not add parameter-specific meaning beyond what the schema already provides: 'multiple records' is consistent with the records field but not more informative than its schema description. No compensation is needed given full coverage.

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

Purpose5/5

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

The description states a concrete action (insert), the object (records), the target (an evidence), and the batch nature (multiple in a single request). This clearly distinguishes it from single-record creation (evidence_create) and batch update (evidence_batch_update).

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives like evidence_create or evidence_batch_update. It does not mention any tradeoffs, limits, or exclusion conditions; the only hint is the word 'multiple,' which implicitly suggests batch use but is never made explicit.

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

evidence_batch_updateC

Update multiple records in an evidence in a single request.

ParametersJSON Schema
NameRequiredDescriptionDefault
atomicNoCommit each record independently instead of the whole batch as one all-or-nothing transaction
dry_runNoValidate the batch without persisting anything
recordsYesList of records to update (each must include 'id' or 'kod')
evidenceYesEvidence name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits itself, but it only says 'update multiple records'. It does not mention all-or-nothing transactionality, independent commits via atomic, validation via dry_run, or partial-failure behavior; those live only in the schema.

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

Conciseness4/5

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

The description is one short sentence with no filler and names the core action up front. It is appropriately concise, though the awkward domain phrasing 'in an evidence' costs a little clarity.

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

Completeness3/5

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

The schema fully documents evidence, records, atomic, and dry_run, and an output schema exists, so the core invocation is covered. The main gaps are usage context and behavioral caveats, which matter for a mutation tool with no annotations and many similar siblings.

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

Parameters3/5

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

Schema description coverage is 100% and each parameter already has a meaningful description, so the tool description does not need to compensate. It adds no parameter-level detail beyond the schema, which sets the baseline at 3.

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

Purpose4/5

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

The description names a specific action ('update') and resource ('multiple records in an evidence') and notes the batch/single-request nature, which separates it from single-record updates and from batch insert. It does not explicitly differentiate from evidence_mass_update or define 'evidence', so it stops short of 5.

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

Usage Guidelines2/5

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

No guidance is given about when to choose this tool over evidence_update, evidence_mass_update, or evidence_batch_insert, and no exclusions or alternatives are stated. 'Single request' faintly implies batch use but leaves the decision to inference.

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

evidence_createB

Create a new record in any AbraFlexi evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRecord data as dictionary
companyNoCompany identifier (dbNazev) to write to instead of the server's default ABRAFLEXI_COMPANY - e.g. to grant a user access by inserting into another company's 'uzivatele' evidence
evidenceYesEvidence name (e.g., 'faktura-vydana', 'adresar', 'cenik')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It only says the tool creates a record, which is nearly a restatement of the tool name. It does not disclose side effects, permissions, whether the operation is reversible, or the cross-company write behavior hinted at by the 'company' parameter. This is a significant gap for a mutating tool.

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

Conciseness5/5

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

The description is a single front-loaded sentence with zero filler. The core action and scope appear immediately, and every word earns its place. It is appropriately sized for a generic create operation.

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

Completeness3/5

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

The description is minimally viable for selecting and invoking the tool, especially because the output schema and fully documented parameters cover return values and arguments. However, it omits useful context such as when to prefer evidence_create over evidence_batch_insert or evidence-specific create tools, and it does not surface the potentially sensitive company override behavior. These are clear gaps, so 3 is appropriate.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already documents 'evidence', 'data', and 'company' with useful context, including the cross-company use case. The tool description adds no parameter-level detail, but it does not need to because the schema carries the explanatory burden. Baseline 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('Create'), a clear resource ('a new record'), and a clear scope ('any AbraFlexi evidence'). This distinguishes it from evidence-specific create tools like invoice_issued_create and from batch creation tools like evidence_batch_insert, because it emphasizes generic single-record creation.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance, no alternatives, and no exclusions. It does not mention that dedicated create tools exist for specific evidences (e.g., contact_create, invoice_issued_create) or that evidence_batch_insert should be used for batch creation. The phrase 'any evidence' implies generality, but the agent is left to infer routing decisions.

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

evidence_deleteB

Delete a record from any AbraFlexi evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoRecord ID to delete
kodNoRecord code to delete (alternative to id)
companyNoCompany identifier (dbNazev) to delete from instead of the server's default ABRAFLEXI_COMPANY
evidenceYesEvidence name (e.g., 'faktura-vydana', 'adresar', 'cenik')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'delete' without noting that deletion is destructive/irreversible, whether permissions are required, or any cascading effects. For a mutating tool this is a notable gap.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. Every word contributes to stating the tool's core purpose.

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

Completeness3/5

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

The parameter schema and output schema carry much of the needed operational detail, making the tool minimally usable. However, the complete absence of deletion semantics and usage guidance leaves an agent uncertain about important selection and safety aspects.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains all four parameters. The description adds only the 'any evidence' scope, which slightly reinforces the evidence parameter but provides no extra operational meaning such as id/kod precedence or company behavior.

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

Purpose4/5

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

The description states a specific verb and resource: 'delete a record from any AbraFlexi evidence.' This is clear and distinct from unrelated tools, but it does not differentiate the generic evidence_delete from specialized sibling deletes like contact_delete, invoice_issued_delete, or product_delete.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this generic delete versus the specialized delete tools, nor are there any exclusions or alternative recommendations. The 'any evidence' phrasing implies broad applicability, but the agent is left to infer routing on its own.

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

evidence_delete_attachmentB

Delete an attachment from a record.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoRecord ID
kodNoRecord code (alternative to id)
evidenceYesEvidence name
attachment_idYesAttachment record identifier to delete

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does state the destructive action ('Delete'), but does not disclose irreversibility, required permissions, side effects, or what happens if the attachment does not exist.

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

Conciseness5/5

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

The description is a single sentence with no filler, front-loading the verb and object. Every word contributes to the meaning, and nothing extraneous is included.

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

Completeness3/5

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

An output schema exists and parameter schemas are complete, so return values and argument meanings are covered. However, for a destructive tool with no annotations, the description lacks important context like irreversibility and record-identification behavior, making it minimally adequate rather than fully complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema itself documents all four parameters. The description adds no extra semantic meaning beyond the schema, which keeps this at the baseline score.

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

Purpose5/5

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

The description uses a specific verb ('Delete') and resource ('an attachment from a record'), clearly distinguishing it from siblings like evidence_delete (deletes the record itself) and evidence_attach_file. Even without naming alternatives, the action and object are unambiguous.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, no prerequisites, and no mention of how the id vs. kod record identifiers should be chosen. The intended usage is only weakly implied by the tool name and one-line description.

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

evidence_download_attachmentC

Download an attachment's raw content to a local file.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoRecord ID
kodNoRecord code (alternative to id)
evidenceYesEvidence name
output_pathYesLocal filesystem path to write the downloaded content to
attachment_idYesAttachment record identifier

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says content is downloaded to a local file; it does not mention whether existing files are overwritten, whether directories are created, whether authentication is required, or any side effects. This is minimal disclosure for a file-writing operation.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no filler. Every word contributes to the core meaning, and it is immediately scannable for an agent.

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

Completeness2/5

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

The description does not explain the relationship between id/kod, evidence, and attachment_id, leaving ambiguity about which identifier identifies the attachment versus the evidence record. It does not mention how the tool behaves when output_path already exists or what the output schema contains. For a 5-parameter tool with no annotations, this is not fully complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents each parameter. The description adds little beyond connecting evidence/attachment_id to the attachment and output_path to the local destination, which is the baseline expectation when schema coverage is complete.

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

Purpose4/5

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

The description states a specific verb ('Download'), a specific resource ('an attachment's raw content'), and a destination ('a local file'). It is clear and reasonably distinct from siblings like evidence_get_attachment_thumbnail, though it does not explicitly differentiate itself from evidence_get_attachment.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives such as evidence_get_attachment or evidence_list_attachments. It does not state prerequisites, exclusions, or conditions that would help an agent choose between this tool and its siblings.

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

evidence_export_reportA

Export a printable report (PDF/XLSX) for a record, or the whole evidence listing, to a local file.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoRecord ID to export a report for; the whole evidence listing is exported if both id and kod are omitted
kodNoRecord code (alternative to id)
evidenceYesEvidence name
output_pathYesLocal filesystem path to write the exported report to
report_langNoReport language ("cs", "sk", "en" or "de")
report_nameNoSpecific report identifier (see evidence_get_reports)
report_signNoWhether to electronically sign the exported PDF
report_formatNo"pdf" or "xls"pdf

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral disclosure burden. It explicitly states that the tool exports a report and writes it to a local file, which is the key side effect. It does not mention overwrite behavior or permissions, but the core side effect and output destination are transparent.

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

Conciseness5/5

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

The description is one focused sentence with no filler. It front-loads the primary action and resource, then specifies formats and scope, making it easy to scan and process.

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

Completeness4/5

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

Given the tool has 8 parameters, a fully described schema, and an output schema, the description is sufficiently complete: it states the purpose, scope, format, and output destination. It does not enumerate parameter rules, but the schema covers those; the only minor gap is lack of explicit cross-reference to evidence_get_reports for report_name.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3 and the schema already documents every parameter. The description adds some high-level meaning by mapping 'record' vs 'whole evidence listing' to the id/kod parameters, but it does not enrich individual parameter semantics beyond what the schema provides.

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

Purpose5/5

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

The description uses a specific verb ('Export') and identifies the resource ('printable report') along with supported formats (PDF/XLSX). It also clearly differentiates the two main invocation modes: a single record or the whole evidence listing. This lets an agent understand exactly what the tool produces without inspecting the schema.

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

Usage Guidelines3/5

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

The description implies when to use the tool: when a printable report file is needed for a record or the full listing. However, it does not explicitly name alternatives, such as evidence_get_reports, or state when not to use this tool. The usage context is clear but exclusions and sibling differentiation are left implicit.

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

evidence_getC

Get records from any AbraFlexi evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNoList of record IDs to retrieve
limitNoMaximum number of results
orderNoColumn name to sort by
startNoZero-based offset of the first record to return (pagination)
detailNoDetail level (summary, id, full, custom:field1,field2)summary
companyNoCompany identifier (dbNazev) to query instead of the server's default ABRAFLEXI_COMPANY - e.g. to read another company's 'uzivatele' (user access) evidence
evidenceYesEvidence name (e.g., 'faktura-vydana', 'adresar', 'cenik')
relationsNoSub-evidences to include in the response (e.g. ['polozkyFaktury'])
filter_exprNoAbraFlexi filter expression
add_row_countNoInclude the total number of matching records in the response
order_directionNo"A" for ascending (default) or "D" for descendingA

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must carry the burden of behavioral disclosure, but it only states the read operation itself. It does not mention pagination behavior, default detail level, cross-company access, or any side effects or guarantees, even though the schema hints these exist.

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

Conciseness4/5

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

The one-sentence description is compact and front-loads the main action ('Get records'). No filler or redundant wording is present; however, the brevity comes at the cost of usage context, so it is good but not excellent.

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

Completeness3/5

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

For a generic 11-parameter reader with a rich schema and an output schema, the description covers the primary purpose and lets the schema handle parameter meaning. It is still incomplete as a standalone guide because it gives no selection criteria against the many sibling tools and no behavioral context, so it is merely adequate.

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

Parameters3/5

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

Schema description coverage is 100%, and each of the 11 parameters, including evidence, ids, limit, detail, and company, already carries a meaningful description. The tool description adds nothing beyond the schema, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description uses a clear verb and resource: 'Get records from any AbraFlexi evidence,' making the tool's core function immediately understandable. It is appropriately broad for a generic evidence reader, but it does not name or distinguish specialized sibling tools such as evidence_get_sum or evidence_get_record_changes, so it stops short of full differentiation.

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

Usage Guidelines2/5

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

No usage guidance is provided beyond the single sentence; there is no statement of when to use evidence_get versus specialized alternatives like evidence_get_sum, evidence_get_labels, or evidence_get_record_changes. The agent must infer selection from tool names alone.

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

evidence_get_attachmentA

Get metadata for a single attachment of a record.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoRecord ID
kodNoRecord code (alternative to id)
evidenceYesEvidence name
attachment_idYesAttachment record identifier

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. 'Get metadata' clearly indicates a read operation that does not return file content, but it discloses nothing about authentication, error behavior, or response characteristics beyond what the output schema already covers.

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

Conciseness5/5

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

One short sentence, front-loaded with the core action and scope, with no filler. It earns its place and leaves the schema to handle details.

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

Completeness4/5

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

For a simple read-metadata operation with a complete input schema and an output schema, the description is mostly sufficient. It could be more complete by naming the sibling for download or list, but nothing required to call the tool correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, and the description adds no parameter-level meaning. The schema already documents evidence and attachment_id as identifiers and id/kod as alternatives, so the baseline of 3 applies.

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

Purpose5/5

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

The description states a specific verb ('Get'), object ('metadata'), and resource ('a single attachment of a record'). The qualifier 'metadata' distinguishes it from content-returning siblings like evidence_download_attachment, and 'single' distinguishes it from evidence_list_attachments.

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

Usage Guidelines3/5

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

The purpose implies use when metadata for one attachment is needed, but the description does not explicitly say when to prefer alternatives or when not to use this tool. No sibling routing or exclusion conditions are given.

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

evidence_get_attachment_thumbnailA

Download the thumbnail of an image attachment to a local file.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoRecord ID
kodNoRecord code (alternative to id)
widthNoRequested thumbnail width in pixels
heightNoRequested thumbnail height in pixels
evidenceYesEvidence name
output_pathYesLocal filesystem path to write the thumbnail to
attachment_idYesAttachment record identifier

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden, and it does state the core behavior: downloading a thumbnail to a local file. However, it does not disclose whether an existing output file is overwritten, whether authentication is required, or what happens when the attachment is not an image.

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

Conciseness5/5

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

One short sentence expresses the full purpose with no filler. The key resource ('thumbnail'), action ('download'), and destination ('local file') are all front-loaded.

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

Completeness4/5

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

Given the schema fully documents the seven parameters and an output schema exists, the description does not need to explain return values. It is slightly light on usage caveats, but for a download operation the combination of description and schema is mostly sufficient.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters. The description adds no parameter-level meaning beyond what the schema provides, which matches the baseline of 3.

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

Purpose5/5

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

The description names a specific verb ('Download'), a specific resource ('thumbnail of an image attachment'), and a destination ('a local file'). This clearly separates it from sibling tools like evidence_get_attachment and evidence_download_attachment, which concern full attachments.

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

Usage Guidelines3/5

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

The phrase 'thumbnail of an image attachment' implies the tool should be used when a smaller preview is needed rather than the full attachment, but it never explicitly mentions alternatives or exclusion conditions. Usage context is implied rather than stated.

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

evidence_get_labelsA

Get all labels (stitky) currently assigned to a record.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoRecord ID
kodNoRecord code (alternative to id)
evidenceYesEvidence name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the transparency burden. 'Get' and 'currently assigned' clearly signal a read operation and current state, but it does not explicitly state non-mutation or mention any access or performance considerations. Simple and accurate, but minimal.

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

Conciseness5/5

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

A single, front-loaded sentence with no wasted words. It states the verb, object, and scope efficiently.

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

Completeness4/5

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

The tool is a simple getter with an output schema that covers return values, so the description does not need to explain those. It is nearly complete, though a brief clarification of how evidence/id/kod jointly identify the record would remove minor ambiguity.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains each parameter. The description does not add meaning about how 'evidence' relates to 'id' or 'kod', beyond referring to 'a record'; it only weakly indicates that a record is being targeted.

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

Purpose5/5

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

The description uses a specific verb ('Get'), resource ('labels'), and scope ('currently assigned to a record'). It is immediately distinguishable from the sibling set/unset label tools, which are mutations.

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

Usage Guidelines3/5

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

The description implies use when you need the current label set on a record, contrasting with sibling tools like evidence_set_label and evidence_unset_label. However, it does not explicitly state when to prefer this over evidence_get or how to choose among the label siblings.

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

evidence_get_propertiesA

Get the list of properties (fields) supported by an evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
evidenceYesEvidence name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral disclosure burden. The word 'Get' clearly signals a read-only operation, but the description does not mention error behavior, permission requirements, or what happens if the requested evidence does not exist. This is adequate for a simple retrieval tool but not rich.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no filler or redundant wording. Every word contributes to identifying the action and the result, making it appropriately concise for a simple read tool.

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

Completeness4/5

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

For a one-parameter read operation with full schema coverage and an output schema present, the description and schema together provide enough to invoke the tool correctly. It falls slightly short of 5 because it offers no behavioral or alternative-routing context, though that is less critical given the tool's simplicity.

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

Parameters3/5

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

Schema description coverage is 100%, with the 'evidence' parameter described as 'Evidence name'. The description adds little beyond the schema, only reinforcing that properties belong to an evidence. It does not clarify whether evidence refers to a record type, a specific record, or a naming convention.

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

Purpose5/5

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

The description uses a concrete verb ('Get') and identifies the exact resource retrieved ('list of properties (fields) supported by an evidence'). This distinguishes it from sibling evidence tools like evidence_get_sum, evidence_get_labels, and evidence_get_record_changes.

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

Usage Guidelines2/5

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

The description gives no explicit guidance on when to use this tool versus the many sibling evidence_get_* tools, nor does it mention any exclusions or alternatives. The only usage signal is the generic 'get properties' wording, which is implied rather than stated.

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

evidence_get_qr_codeA

Get the payment QR code for a document record.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoRecord ID
kodNoRecord code (alternative to id)
sizeNoRequested image size in pixels
evidenceYesEvidence name (e.g., 'faktura-vydana')
output_pathNoIf given, write the PNG to this local path instead of returning it inline as a base64 data URI

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. 'Get' implies a read-only operation, but the description does not explicitly confirm that no data is modified, nor does it mention the side effect of optionally writing a PNG file via output_path (though the schema covers that). It provides basic behavioral transparency but not complete reassurance.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with zero extraneous words. It states the core action and object directly, making it easy to parse.

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

Completeness4/5

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

The tool is relatively simple and the schema covers all parameters and provides an output schema, so a minimal description is acceptable for invocation. The main gap is the absence of usage guidance, which is already penalized under usage_guidelines. For a straightforward getter with full schema support, the description is otherwise complete.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all five parameters and their meanings. The description adds no parameter-specific detail beyond the phrase 'for a document record', which maps naturally to the `evidence` parameter. This meets the baseline for schema-documented parameters.

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

Purpose5/5

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

The description uses a specific verb ('Get') and resource ('payment QR code for a document record'), clearly differentiating it from sibling getters like evidence_get_sum or evidence_get_record_changes. It immediately communicates what the tool produces and for what input context.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as evidence_get or evidence_get_properties. The description lacks any contextual selection criteria or exclusionary information, leaving the agent to infer usage.

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

evidence_get_record_changesB

Get the change history (Prehled zmen zaznamu) of a single record.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoRecord ID
kodNoRecord code (alternative to id)
evidenceYesEvidence name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral disclosure burden. 'Get the change history' clearly implies a read-only retrieval, but it does not mention pagination, ordering, identifier resolution behavior, or whether an empty history yields an error. This is adequate but not deeply transparent.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. The parenthetical translation adds minor value and does not harm clarity. It earns its place by communicating the action and scope efficiently.

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

Completeness2/5

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

The schema requires only 'evidence' and allows id and kod to be null, yet the description insists this tool works on a single record without explaining that one of id or kod must be supplied. This is a significant invocation gap: an agent might call it with only the evidence name and get an ambiguous or failed request. The presence of an output schema does not resolve this selection problem.

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

Parameters3/5

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

Schema description coverage is 100%, so each parameter already has a meaningful description. The tool description adds only the context that the history belongs to a 'single record,' which is useful but does not substantially clarify parameter semantics beyond the schema.

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

Purpose4/5

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

The description states a specific verb ('Get') and resource ('change history of a single record'), making the tool's core function clear. It does not explicitly differentiate from the sibling changes_get, but the phrase 'of a single record' adds useful scoping.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives such as changes_get or evidence_get. There are no conditions, exclusions, or mention of prerequisites, so an agent is left to infer when this is the right choice.

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

evidence_get_relations_listB

Get the list of sub-evidences (relations) available for an evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
evidenceYesEvidence name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. 'Get the list' implies a non-mutating read, and the phrase 'available for an evidence' adds some scoping context, but the description does not clarify whether the tool returns relation names only, what happens for unknown evidence names, or whether any special permissions are needed. It is minimally 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.

Conciseness4/5

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

The description is a single, front-loaded sentence that states the verb and resource immediately. It is concise with no filler, though the parenthetical 'sub-evidences (relations)' could be clearer for an unfamiliar agent.

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

Completeness3/5

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

This is a simple one-parameter tool with an output schema, so the description need not explain return values. However, there are no annotations, no usage guidance, and no clarification of what 'sub-evidences (relations)' means or how the evidence name should be supplied beyond the schema. The description is adequate for a straightforward list operation but leaves contextual gaps.

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

Parameters3/5

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

Schema coverage is 100%: the only parameter, 'evidence', is already described as 'Evidence name' with a required flag. The description adds only that the list is 'for an evidence', which loosely reconnects the parameter to the purpose but does not provide additional meaning such as expected format, examples, or constraints. Baseline 3 is appropriate.

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

Purpose4/5

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

The description names a specific verb ('Get'), a resource ('list of sub-evidences (relations)'), and a scope ('available for an evidence'), so the agent can tell it is a read-oriented listing tool. It is reasonably distinct from sibling evidence_get_* tools because it focuses on relations, though the term 'sub-evidences' is jargon and no explicit sibling differentiation is offered.

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

Usage Guidelines2/5

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

There is no guidance about when to prefer this tool over alternatives such as evidence_get_properties, evidence_get_labels, or evidence_get_reports. The description only states what the tool does, leaving the agent to infer the appropriate use case from the tool name and the word 'available'.

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

evidence_get_reportsB

Get the list of printable reports available for an evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
evidenceYesEvidence name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations supplied, the description carries the burden of safety disclosure; 'Get' reasonably implies a read-only listing operation without side effects. However, it does not explicitly confirm no mutation, permissions, or error behavior, so the disclosure is minimal but acceptable for a get/list tool.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or repetition. It efficiently communicates the exact purpose without wasting tokens.

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

Completeness4/5

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

For a one-parameter tool with an output schema, the description is mostly complete: it states the tool's purpose and the schema already documents the parameter and return shape. It lacks explicit guidance relative to sibling tools, but the operation is simple enough that the minimal description suffices.

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

Parameters3/5

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

The sole parameter 'evidence' is already fully described in the schema with 100% coverage. The description adds no additional parameter meaning beyond what the schema provides, so a baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly names the action ('Get') and the resource ('list of printable reports') for an evidence, making the tool's purpose understandable. It does not explicitly name sibling differentiators like evidence_export_report, but 'list of printable reports' implies a listing rather than an export.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool instead of alternatives such as evidence_export_report or evidence_get_sum. The description only states what the tool does, leaving the choice of tool entirely to inference.

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

evidence_get_sumA

Get summation (totals) for an evidence, optionally filtered.

ParametersJSON Schema
NameRequiredDescriptionDefault
evidenceYesEvidence name
conditionsNoAdditional URL parameters to apply to the request
filter_exprNoAbraFlexi filter expression to scope the summation

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description must carry the behavioral disclosure burden. It communicates a read-only aggregation operation and the existence of optional filters, but does not describe how filters interact, error behavior, or whether the sum is server-computed. This is adequate but thin.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no redundant wording. Every part contributes to defining the operation and its optional filtering behavior.

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

Completeness3/5

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

Given that an output schema exists and all parameters are documented, the description provides the minimal core. Still, it does not clarify when to choose this tool over siblings, how 'conditions' and 'filter_expr' combine, or what kind of totals are returned, leaving moderate gaps for an agent.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already documented in the schema. The description adds only the general notion of optional filtering, not specific parameter semantics, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states a specific verb ('Get'), resource ('evidence'), and operation type ('summation/totals'). This distinguishes it from sibling tools like evidence_get and evidence_get_record_changes, which return records rather than aggregates.

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

Usage Guidelines3/5

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

The phrase 'optionally filtered' implies this tool is for aggregated totals rather than raw records, so usage context is inferable. However, it does not explicitly name alternatives or state when this tool should be preferred over evidence_get or other evidence getters.

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

evidence_listA

List all available AbraFlexi evidences.

Returns: str: JSON formatted list of evidence names

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

The description indicates a read-only operation returning data. No annotations are provided, but the behavior is straightforward. Could explicitly state it is safe and non-destructive.

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

Conciseness5/5

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

The description is two lines, with the purpose front-loaded. It is concise and to the point, with no unnecessary information.

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

Completeness4/5

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

Given no parameters and an existing output schema, the description adequately explains the tool's purpose and return value. Could mention the read-only nature, but overall sufficient.

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

Parameters4/5

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

The tool has no parameters, and the schema coverage is 100% (empty). The description adds no parameter details because none are needed; baseline for 0 params is 4.

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

Purpose5/5

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

The description clearly states it lists all available AbraFlexi evidences, which is a specific verb and resource. It distinguishes from sibling tools that are for specific CRUD operations on individual evidences.

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

Usage Guidelines3/5

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

The description implies usage for listing all evidence names, but does not explicitly state when to use this tool versus alternatives like evidence_get or evidence_create. 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.

evidence_list_attachmentsA

List attachments (prilohy) of a record in any AbraFlexi evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoRecord ID
kodNoRecord code (alternative to id)
evidenceYesEvidence name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only restates the basic action and does not mention that this is a read-only list operation, what the response contains, whether authentication is required, or how the attachments are represented. This is a significant gap for a tool that is part of a large sibling family.

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

Conciseness5/5

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

The description is a single sentence with no filler, and the key information is front-loaded: what the tool does, on what resource, and across what scope. Every word earns its place.

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

Completeness3/5

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

For a simple list tool with an output schema present, the core purpose, scope, and parameter meaning are adequately covered by the description plus schema. However, with no annotations and no behavioral or alternative tool guidance, the agent is left to infer important selection and behavior details in a large sibling family. This is a minimum-viable definition with clear gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents evidence, id, and kod. The description adds only the general context that attachments belong to 'a record' and the Slovak equivalent 'prilohy,' but it does not clarify precedence between id and kod or provide any additional parameter semantics. Baseline 3 is appropriate since the schema does the heavy lifting.

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

Purpose5/5

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

The description states a specific action ('List') and a specific resource ('attachments of a record'), and further clarifies that this applies to 'any AbraFlexi evidence.' This clearly distinguishes it from sibling attachment tools like evidence_get_attachment or evidence_delete_attachment, since the task is explicitly to list rather than fetch, download, or delete.

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

Usage Guidelines3/5

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

The phrase 'of a record in any AbraFlexi evidence' gives useful context for when the tool applies, showing it is generic across evidence types. However, there is no explicit guidance about when to prefer this tool over the many attachment-related siblings, so usage is implied rather than stated.

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

evidence_lockA

Lock a record in any AbraFlexi evidence, preventing further changes until unlocked.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoRecord ID to lock
kodNoRecord code to lock (alternative to id)
evidenceYesEvidence name (e.g., 'faktura-vydana', 'adresar', 'cenik')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden of disclosing behavior. It clearly states the main side effect (changes are prevented) and the release condition (until unlocked). It does not mention permission requirements or what happens on already-locked records, but the core behavioral impact is transparent.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no filler. Every phrase earns its place: the target resource, the scope, and the effect are all communicated efficiently.

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

Completeness4/5

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

Given the simple parameter shape, the output schema, and the presence of siblings like evidence_unlock, the description is nearly complete. It could additionally note that evidence_unlock reverses this operation, but for selecting and invoking the tool, the provided context is adequate.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents 'evidence', 'id', and 'kod' sufficiently. The description adds no parameter-level detail beyond describing the action on 'a record', so it does not elevate the semantics beyond the structured schema.

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

Purpose5/5

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

The description states a specific verb ('Lock'), a clear resource ('a record in any AbraFlexi evidence'), and the intended effect ('preventing further changes until unlocked'). It distinguishes itself from obvious siblings such as evidence_unlock and evidence_lock_for_ucetni by covering any evidence rather than a specialized subset.

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

Usage Guidelines4/5

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

The description makes the core use case clear: use this when a record must be locked against further changes. It implies the complementary operation through 'until unlocked', but it does not explicitly name evidence_unlock or contrast with evidence_lock_for_ucetni, so some usage differentiation is left to inference.

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

evidence_lock_for_ucetniC

Lock a record in any AbraFlexi evidence for the accountant (lock-for-ucetni).

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoRecord ID to lock
kodNoRecord code to lock (alternative to id)
evidenceYesEvidence name (e.g., 'faktura-vydana', 'adresar', 'cenik')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'lock' and 'for the accountant' without explaining what that lock means, whether it is reversible, or what side effects it has on the record.

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

Conciseness5/5

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

The description is a single concise sentence with no filler. It front-loads the core action and scope, and the parenthetical adds the specific operation name efficiently.

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

Completeness2/5

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

The description leaves meaningful gaps: it does not explain the 'lock-for-ucetni' semantics, does not distinguish from evidence_lock, and does not warn that locking a record requires either id or kod despite schema marking both optional. The output schema reduces the need to explain return values, but the usage context is still incomplete.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are individually documented with names and examples. The description adds nothing beyond the schema, which gives a baseline of 3. It does not clarify that id or kod is the actual record identifier, even though both are optional in the schema.

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

Purpose4/5

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

The description states a clear action ('Lock') and a specific resource ('a record in any AbraFlexi evidence'), and the parenthetical identifies the variant as 'lock-for-ucetni'. However, it does not differentiate this tool from the sibling evidence_lock, so an agent cannot tell when to choose one over the other.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as evidence_lock or evidence_unlock. It neither states conditions for use nor mentions any exclusions, leaving the agent to infer the intended scenario.

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

evidence_mass_updateB

Update, or perform an action on, every record of an evidence matching a filter in a single request (Davkove operace).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNoFields to set on every matching record
actionNoIf given, perform this action (e.g. 'lock') on every matching record instead of (or in addition to) updating fields
evidenceYesEvidence name (e.g., 'cenik')
filter_exprYesAbraFlexi filter expression selecting the records to affect

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does disclose mass scope and 'single request' behavior, but it does not mention side effects, reversibility, risks of affecting many records, or how the action and data parameters interact. For a mutation-capable tool, this is a significant transparency gap.

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

Conciseness5/5

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

The description is a single, well-structured sentence with the verb and scope front-loaded. There is no redundant prose, and the parenthetical 'Davkove operace' is minor and not harmful.

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

Completeness3/5

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

The core operation is stated and an output schema exists, but with no annotations and several closely related sibling tools, the description lacks explicit differentiators and expected-effect warnings. It is minimally viable but incomplete for guiding an agent to select this tool over evidence_batch_update or evidence_perform_action.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3 even without additional parameter detail in the description. The description adds no meaningful semantic information beyond mapping 'update/action' to the data/action parameters and 'filter' to filter_expr, so it does not improve on what the schema already documents.

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

Purpose4/5

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

The description clearly states a specific operation: update, or perform an action on, every record of an evidence matching a filter. The phrase 'every record ... matching a filter' conveys the mass scope, which helps distinguish it from single-record tools, but it does not explicitly name or contrast sibling tools like evidence_batch_update or evidence_perform_action.

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

Usage Guidelines3/5

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

The filter-based 'every record' phrasing implies this is for bulk operations on records matching a filter. However, there is no explicit guidance about when to prefer this tool over evidence_batch_update, evidence_perform_action, or evidence_update, so the agent must infer the right usage context.

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

evidence_perform_actionA

Perform a custom business action on a record via its dedicated {id}/{action}.json URL (e.g. paying an invoice), as opposed to the body-level @action attribute used by evidence_lock/evidence_storno/etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoRecord ID to act on
kodNoRecord code to act on (alternative to id)
actionYesAction name (e.g., 'pay')
paramsNoAction parameters
evidenceYesEvidence name (e.g., 'faktura-vydana')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden of behavioral disclosure. It reveals the mechanism (custom action via dedicated URL) but does not disclose side effects, mutation risks, reversibility, authentication needs, or failure behavior. For a tool that can perform arbitrary business actions like payments, this is a significant transparency gap.

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

Conciseness4/5

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

The description is a single sentence that is front-loaded with the core action and includes an example. The contrast clause adds useful differentiation without excessive verbosity, though it could be slightly tightened.

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

Completeness3/5

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

The tool has an output schema and fully documented parameters, which helps completeness. However, with no annotations and no description of side effects or how to distinguish from generic call tools like abraflexi_client_call, the definition leaves an agent without enough behavioral context to safely invoke arbitrary business actions.

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

Parameters3/5

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

Schema descriptions already cover 100% of parameters with useful text like 'Record ID to act on' and 'Action name (e.g., pay)'. The description adds a business example, but does not meaningfully extend parameter understanding beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb and resource: 'Perform a custom business action on a record' via a dedicated {id}/{action}.json URL, with the concrete example 'paying an invoice'. It also explicitly contrasts itself with the body-level @action attribute used by evidence_lock/evidence_storno/etc., which clearly differentiates it from those siblings.

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

Usage Guidelines4/5

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

The description provides an explicit 'as opposed to' exclusion, telling the agent that body-level @action tools like evidence_lock/evidence_storno are not the intended path here. However, it does not address overlapping generic tools in the sibling list such as abraflexi_client_call or call_user_query, leaving some selection ambiguity for an agent.

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

evidence_set_labelA

Add a label to a record, keeping its existing labels.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoRecord ID
kodNoRecord code (alternative to id)
labelYesLabel code to assign (e.g. 'code:VIP')
evidenceYesEvidence name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are present, so the description carries the full behavioral burden. It adds one useful guarantee (existing labels are retained), but it does not disclose mutation side effects, permission requirements, or failure behavior, which matters for a write operation.

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

Conciseness5/5

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

The entire description is one sentence with the action front-loaded and the non-destructive qualifier immediately after. There is no filler or redundant restatement of the tool name.

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

Completeness4/5

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

With an output schema present and all parameters fully described in the input schema, the description covers the core operation and its most important behavioral nuance. Minor gaps remain around identifier selection (id vs kod) and explicit routing to label-removal siblings, but an agent can invoke the tool correctly from this definition.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents evidence, label, id, and kod, including the id/kod alternative. The description merely reuses the words 'label' and 'record' and adds no syntax, constraints, or parameter relationships beyond the schema.

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

Purpose5/5

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

The description uses a specific verb ('Add') with a clear resource ('a label to a record') and, crucially, the qualifier 'keeping its existing labels' distinguishes it from sibling operations such as evidence_unset_label and evidence_unset_labels. It is not a tautology and tells an agent exactly what the tool accomplishes.

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

Usage Guidelines3/5

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

The description implies the intended use: add a label while preserving existing labels. However, it does not explicitly state when not to use it or mention alternatives like evidence_unset_label/evidence_unset_labels, so the agent must infer the route to sibling tools.

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

evidence_stornoC

Cancel (storno) a document record in any AbraFlexi evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoRecord ID to cancel
kodNoRecord code to cancel (alternative to id)
evidenceYesEvidence name (e.g., 'faktura-vydana', 'faktura-prijata')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits on its own. It reveals that the tool mutates state by cancelling a record, but does not mention irreversibility, required permissions, audit/accounting implications, or the effect of cancelling in different evidencies. 'Any evidence' broadens scope but adds no guardrails.

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

Conciseness4/5

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

One short sentence with no filler; the core action and object appear first. It is admirable concise, though the terseness contributes to missing usage guidance.

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

Completeness2/5

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

The presence of an output schema reduces the need to explain return values, but this is a mutating tool with no annotations and multiple was to identify a record (id vs kod). The description does not clarify whether id or kod is required/preferred, what preconditions apply to storno in AbraFlexi, or what success looks like.

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

Parameters3/5

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

The input schema already documents all three parameters (evidence, id, kod) with descriptions and an example evidence name, so schema coverage is 100%. The description adds no additional meaning about how id and kod relate or which identifier should be suppiled.

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

Purpose4/5

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

The description uses a specific verb ('Cancel (storno)') and a defined resource ('document record in any AbraFlexi evidence'), making the action clear. However, it does not explicitly differentiate itself from sibling tools like evidence_delete or evidence_perform_action, relying on the domain-specific term 'storno' to imply distinction.

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

Usage Guidelines2/5

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

No guidance is given for when to use this tool vs evidence_delete, evidence_perform_action, or evidence_uplate. The description only states what the operation does, leaving the agent to infer its place among the siblings.

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

evidence_unlockB

Unlock a record in any AbraFlexi evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoRecord ID to unlock
kodNoRecord code to unlock (alternative to id)
evidenceYesEvidence name (e.g., 'faktura-vydana', 'adresar', 'cenik')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are present, so the description bears the full burden of behavioral disclosure. It only says 'Unlock a record' without explaining effects on locked records, error cases, permissions, or consequences of unlocking. This is minimal but not deceptive; it does not contradict any annotations.

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

Conciseness4/5

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

The description is a single, focused sentence with no filler. It front-loads the core action and resource, though it is so brief that it sacrifices useful behavioral detail.

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

Completeness2/5

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

Despite the output schema and complete parameter schema, the description omits usage context, behavioral side effects, and any relation to lock operations. For a state-change tool with no annotations, this leaves the agent without enough situational understanding.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters like evidence, id, and kod are fully documented in the schema. The description adds no additional parameter nuance, such as how id and kod interact or whether one is preferred, keeping this at the baseline 3.

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

Purpose5/5

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

The description states a specific verb ('Unlock') and resource ('a record in any AbraFlexi evidence'), which cleanly identifies the tool's function. The sibling evidence_lock reinforces the distinction, making it easy to recognize this as the reverse operation.

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

Usage Guidelines2/5

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

No guidance is given about when to unlock a record, how this relates to evidence_lock or evidence_lock_for_ucetni, or whether unlocking requires prior locking. The agent must infer usage context entirely from the name and sibling tools.

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

evidence_unset_labelB

Remove specific label(s) from a record, keeping the rest.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoRecord ID
kodNoRecord code (alternative to id)
evidenceYesEvidence name
labels_to_removeYesLabel code(s) to remove

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does tell the agent that other labels are preserved, which is useful, but it does not disclose permanence, required permissions, behavior with nonexistent labels, or potential side effects. For a mutation tool, this is a significant gap.

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

Conciseness5/5

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

The description is one short, front-loaded sentence with no filler. It communicates the action, object, and key behavior without wasting tokens.

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

Completeness3/5

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

The schema is sufficiently rich and an output schema exists, so an agent can assemble a valid call. However, the definition is not fully self-sufficient because it fails to disambiguate from evidence_unset_labels and lacks behavioral safety context in the absence of annotations.

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

Parameters3/5

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

The schema already documents all 100% of parameters, including the evidence name, record identifiers, and labels_to_remove array, so the baseline is 3. The description adds little beyond the schema's own wording, and that is acceptable given the high schema coverage.

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

Purpose4/5

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

The description states the verb 'Remove', the resource 'specific label(s)', and the scope 'from a record, keeping the rest', which clearly conveys what the tool does. However, it does not differentiate this singular tool from the sibling evidence_unset_labels, which sounds like the same operation.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus alternatives such as evidence_set_label or evidence_unset_labels. The description implies a removal use case but never states conditions, exclusions, or when the plural sibling would be preferred.

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

evidence_unset_labelsB

Remove all labels from a record.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoRecord ID
kodNoRecord code (alternative to id)
evidenceYesEvidence name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It clearly discloses the destructive scope ('all labels'), which is useful, but it does not mention irreversibility, idempotency, or whether permission is required. It is minimally transparent but not misleading.

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

Conciseness5/5

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

A single sentence with the verb and object scope front-loaded; there is no filler or redundant wording.

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

Completeness3/5

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

The tool is simple and has a full input schema and output schema, but the description does not explain how to choose it over the similar single-label sibling or how id/kod relate to the evidence parameter. For such a short mutation tool, additional routing context would be helpful.

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

Parameters3/5

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

Schema description coverage is 100%, with id, kod, and evidence each explained in the schema. The description itself adds no parameter-level meaning, so the baseline of 3 applies.

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

Purpose4/5

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

The description states a specific action—remove—and a clear object scope: all labels on a record. The word 'all' distinguishes it from the sibling evidence_unset_label without naming it, though the description does not explicitly call out the plural-vs-singular contrast.

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

Usage Guidelines2/5

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

No guidance is given on when to choose this tool over evidence_unset_label or evidence_set_label, and no selection criteria or prerequisites are provided. An agent must infer usage from the tool name and sibling list.

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

evidence_updateC

Update a record in any AbraFlexi evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoRecord ID to update
kodNoRecord code to update (alternative to id)
dataNoFields to update as dictionary
companyNoCompany identifier (dbNazev) to write to instead of the server's default ABRAFLEXI_COMPANY
evidenceYesEvidence name (e.g., 'faktura-vydana', 'adresar', 'cenik')
remove_external_idsNoIf given, remove external identifiers starting with this prefix (empty string removes all of them) as part of the update

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Update' correctly implies mutation, but the description does not state whether id and kod are mutually exclusive, what happens when neither is given, whether the write is partial or full-replacement, or whether write access is required. This is comparable to the minimal coverage seen in other bare mutation tools.

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

Conciseness4/5

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

A single front-loaded sentence with zero wasted words; the core operation and scope appear immediately. It is efficient, but arguably under-sized given the tool's six parameters and ambiguous record selectors, so it falls just short of the top score for appropriate sizing.

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

Completeness2/5

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

An output schema exists and the input schema covers all parameters, so return values and parameter semantics are handled elsewhere. However, with no annotations and a minimal description, essential context is missing: how to pick between id and kod, when to prefer this over the many sibling update tools, and what update semantics apply. The description does not compensate for the annotation gap.

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

Parameters3/5

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

Schema description coverage is 100%, so all six parameters are already documented in the schema and the description adds no parameter-level meaning. Per the baseline rule, a 3 is appropriate when the schema does the heavy lifting; the description's silence on parameters costs nothing extra.

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

Purpose4/5

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

States a specific verb and resource: 'Update a record in any AbraFlexi evidence.' The word 'any' signals universal evidence coverage, distinguishing it from per-evidence siblings like invoice_issued_update or contact_update, and the singular 'a record' separates it from evidence_mass_update and evidence_batch_update. However, it never names those siblings explicitly, so differentiation is implicit rather than stated.

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

Usage Guidelines2/5

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

Provides no guidance on when to use this tool versus alternatives. With many update-like siblings (evidence_create, evidence_mass_update, evidence_batch_update, evidence_perform_action, plus per-evidence update tools), the agent gets no routing signal. The description also says nothing about how to choose between the id and kod record selectors.

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

invoice_issued_cash_paymentA

Pay an issued invoice in cash (Hotovostni uhrada).

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoInvoice ID
kodNoInvoice code (alternative to id)
valueYesAmount to pay
extra_fieldsNoOptional payment properties: 'pokladna' (cash register code, default 'code:POKLADNA KC'), 'typDokl' (cash document type code, default 'code:STANDARD'), 'kurzKDatuUhrady' (bool), 'datumUhrady' (default today)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action and payment type; it does not disclose side effects such as creating a cash document, updating the invoice's paid status, posting to a cash register, or any permission requirements. For a financial mutation tool, this is a significant transparency gap.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that conveys the core action and includes the localized term 'Hotovostni uhrada' for additional clarity. There is no redundant or filler content.

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

Completeness3/5

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

The output schema and parameter schema are present and complete, so return values and parameters are covered elsewhere. However, the description does not explain the operational context, prerequisites, or consequences of recording a cash payment, and it does not help the agent choose among the many payment-related sibling tools. For a financial mutation, this leaves meaningful gaps.

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

Parameters3/5

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

The input schema already describes all four parameters, including the optional extra_fields payment properties, so schema coverage is 100%. The tool description adds no additional meaning about how parameters relate to the cash payment behavior, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action ('Pay'), the resource ('an issued invoice'), and the payment method ('in cash'), so an agent can understand what the tool does. However, it does not explicitly contrast itself with sibling payment tools like invoice_issued_match_payment or invoice_issued_deduct_advance, so it falls short of a 5.

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

Usage Guidelines4/5

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

The phrase 'Pay an issued invoice in cash' gives clear context for when to invoke this tool: when a cash payment needs to be recorded against an issued invoice. It does not, however, state when not to use it or mention alternative payment-related tools, so it lacks explicit exclusion guidance.

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

invoice_issued_createC

Create a new issued invoice in AbraFlexi.

ParametersJSON Schema
NameRequiredDescriptionDefault
kodYesInvoice code (unique identifier)
firmaYesCustomer reference (e.g., 'code:CUSTOMER01')
polozkyNoInvoice items/lines
extra_fieldsNoAdditional invoice fields
datum_vystaveniNoIssue date (YYYY-MM-DD format)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior1/5

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

No annotations are provided, and the description fails to disclose any behavioral traits such as required permissions, idempotency, side effects, or error handling. The description is a single line with no behavioral context.

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

Conciseness4/5

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

The description is a single concise sentence with no wasted words. It is front-loaded and directly states the tool's purpose.

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

Completeness2/5

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

Despite having an output schema, the description does not mention return values or side effects. Missing usage context, relationships between parameters (e.g., customer reference), and behavioral guarantees.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond the schema; it does not explain relationships or constraints between parameters.

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

Purpose4/5

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

The description clearly states the action (Create) and resource (issued invoice). It distinguishes from siblings like update/delete, though does not differentiate from other create tools like 'invoice_received_create'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, no prerequisites or context provided. The agent must infer usage from the name alone.

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

invoice_issued_deduct_advanceC

Deduct an advance invoice from a tax document invoice (Odpocet zaloh a ZDD).

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoInvoice ID
kodNoInvoice code (alternative to id)
extra_fieldsNoDeduction properties; 'castkaMen' defaults to the advance invoice's total
advance_invoice_idYesID (or 'code:X') of the advance ('zalohova') invoice being deducted

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of explaining side effects. It only restates the high-level operation and does not disclose whether the deduction is permanent, what it changes on either invoice, or what authorization is required.

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

Conciseness4/5

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

The description is a single compact sentence with the action front-loaded and no filler. The parenthetical Czech term is helpful for domain users but the unexplained 'ZDD' abbreviation slightly reduces standalone clarity.

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

Completeness3/5

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

The schema and output schema cover the parameter mechanics, which lowers the burden on the prose. However, for a mutating accounting operation with no annotations, the description omits when to use it and how it differs from adjacent tools such as invoice_issued_deduct_zdd or invoice_issued_link_zdd.

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

Parameters3/5

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

Schema description coverage is 100%, so parameter mechanics are already well documented. The description adds useful business context around advance_invoice_id and the target invoice, but does not meaningfully expand on what the schema already provides.

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

Purpose4/5

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

The description states a clear action ('Deduct an advance invoice') and the affected resource ('a tax document invoice'), which goes well beyond a tautology. It does not explicitly name a sibling like invoice_issued_deduct_zdd, so some overlap with related invoice actions remains, but the core purpose is unambiguous.

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

Usage Guidelines2/5

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

The description gives no indication of when this tool should be used over alternatives, what prerequisites must hold, or what conditions make an advance invoice deductible. With many closely related invoice tools in the sibling list, the agent must rely on the name and schema alone.

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

invoice_issued_deduct_zddC

Deduct an advance tax document (ZDD) from an issued invoice (Odpocet zaloh a ZDD).

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoInvoice ID
kodNoInvoice code (alternative to id)
extra_fieldsNoDeduction properties; the 'castka*Men' fields default to the ZDD invoice's corresponding totals
zdd_invoice_idYesID (or 'code:X') of the ZDD invoice being deducted

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the core action and does not mention side effects, prerequisites, reversibility, or what happens to the invoice, ZDD, or related records. This is a significant gap for a mutation-like operation.

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

Conciseness4/5

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

The description is a single sentence with no filler, and the key action is front-loaded. The Czech parenthetical adds localization value without bloating the text. It is concise, though it is so brief that it borders on under-specification.

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

Completeness3/5

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

The schema is fully described and an output schema exists, covering parameters and return shape. However, the description lacks behavioral context, usage guidance, and differentiation from similar tools. For a specialized financial operation, this is a minimal viable description, not a complete one.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds no parameter-level detail beyond the schema, but the schema itself already documents id, kod, extra_fields, and zdd_invoice_id with meaningful descriptions. The description neither helps nor hinders here.

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

Purpose4/5

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

The description clearly states a specific action: 'Deduct an advance tax document (ZDD) from an issued invoice'. It names the resource (ZDD) and target (issued invoice), and the Czech parenthetical reinforces the domain term. However, it does not explicitly distinguish itself from the similar sibling invoice_issued_deduct_advance, so it loses the top score.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives like invoice_issued_deduct_advance or invoice_issued_link_zdd is provided. The description only implies the use case by naming the operation, leaving the agent to infer selection criteria from sibling names.

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

invoice_issued_deleteB

Delete an issued invoice from AbraFlexi.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoInvoice ID to delete
kodNoInvoice code to delete (alternative to id)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only states the action without mentioning potential side effects (e.g., irreversible deletion, impact on related records) or required permissions. This leaves the agent uncertain about consequences.

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

Conciseness4/5

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

The description is a single, concise sentence with no fluff. It is front-loaded and efficient. However, it could be slightly improved by adding brief behavioral notes without increasing length significantly.

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

Completeness2/5

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

Given the tool is a simple delete operation, the description omits crucial context: what happens on success/failure, error cases, and whether the action is reversible. An output schema exists but may not be visible; yet the description should still hint at return behavior. Minimal completeness.

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

Parameters3/5

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

Schema coverage is 100%, with both 'id' and 'kod' described adequately. The description adds no extra meaning beyond what the schema already provides. Baseline 3 is appropriate since the description does not enhance parameter understanding.

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

Purpose5/5

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

The description clearly states the action ('Delete'), the resource ('issued invoice'), and the system ('AbraFlexi'). It distinguishes this tool from siblings like 'invoice_issued_create' or 'invoice_issued_get' by specifying the delete operation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives (e.g., 'evidence_delete' or 'product_delete'). It lacks explicit context about prerequisites, such as whether the invoice must exist or if deletion requires authorization.

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

invoice_issued_getA

Get issued invoices (faktura-vydana) from AbraFlexi.

Every invoice returned was issued BY the AbraFlexi company this server is bound to (see server_info) - there is no way to query another company's invoices from this server. The 'nazFirmy'/'firma' fields on each record identify the CUSTOMER/counterparty being invoiced, not the issuer.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNoList of invoice IDs to retrieve
kodNoInvoice code to search for
limitNoMaximum number of results
detailNoDetail level (summary, id, full, custom:field1,field2)summary
filter_exprNoAdditional AbraFlexi filter expression to combine with built-in filters
add_row_countNoInclude the total number of matching records in the response
datum_vystaveni_doNoUpper bound for issue date (YYYY-MM-DD, inclusive)
datum_vystaveni_odNoLower bound for issue date (YYYY-MM-DD, inclusive)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses a key behavioral constraint: only invoices issued by the server-bound company are returned, and it corrects a likely misinterpretation of the nazFirmy/firma fields as issuer rather than customer. This is useful, non-obvious behavioral context.

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

Conciseness5/5

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

The description is compact and front-loaded, with the core purpose in the first sentence. The following sentences earn their place by clarifying scope and field semantics. There is no redundant or filler content.

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

Completeness4/5

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

Given a fully described 8-parameter schema and an output schema, the description adds the most important missing context: the company scope and the meaning of nazFirmy/firma. It is complete enough for correct invocation, though it could optionally point to invoice_received_get for clarity.

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

Parameters3/5

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

Input schema coverage is 100%, so the baseline is 3. The description adds no parameter-specific guidance beyond the schema, such as how ids, kod, and filter_expr interact. The mentions of nazFirmy/firma are about output fields, not parameters.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Get issued invoices (faktura-vydana) from AbraFlexi.' It directly distinguishes issued invoices from received invoices, and the additional context about the issuing company removes ambiguity about scope.

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

Usage Guidelines4/5

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

The description clearly states when this tool is appropriate: to retrieve invoices issued by the bound AbraFlexi company. It also provides an explicit limitation: there is no way to query another company's invoices from this server. It does not explicitly name alternatives like invoice_received_get, but the 'issued invoices' framing makes the boundary clear.

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

invoice_issued_get_emailB

Get the best recipient email address for an issued invoice.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoInvoice ID
kodNoInvoice code (alternative to id)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states only the result semantics and does not explain how 'best' is determined, what happens if no recipient email exists, whether id or kod takes precedence, or any error behavior. It adds little beyond the tool's purpose.

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

Conciseness5/5

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

The description is a single concise sentence with no filler or redundancy. It front-loads the core action and result, and every word contributes to understanding what the tool does.

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

Completeness3/5

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

Given the low complexity, full schema coverage, and presence of an output schema, the description is minimally viable for calling the tool. However, it omits the meaning of 'best', parameter precedence, and any fallback or error behavior, leaving meaningful gaps for an agent deciding how to invoke it robustly.

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

Parameters3/5

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

Schema description coverage is 100%, with both id and kod documented as 'Invoice ID' and 'Invoice code (alternative to id)' respectively. The description adds no additional meaning or guidance about parameter selection, precedence, or mutual exclusivity, so the baseline of 3 is appropriate.

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

Purpose4/5

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

The description uses a specific verb and resource: 'Get the best recipient email address for an issued invoice.' This clearly identifies what the tool returns and distinguishes it from the sibling invoice_issued_get_recipients, which likely returns all recipients rather than a single best email. The word 'best' is somewhat vague but the overall purpose is clear.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as invoice_issued_get_recipients or contact_get_notification_email. The phrase 'for an issued invoice' provides some scope, but no explicit conditions, exclusions, or alternative-selection criteria are given.

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

invoice_issued_get_recipientsA

Get all recipient email addresses for an issued invoice.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoInvoice ID
kodNoInvoice code (alternative to id)
purposeNoContact purpose (Fak|Obj|Nab|Ppt|Skl|Pok); auto-detected if omitted

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are present, so the description carries the burden of behavioral disclosure. 'Get all' conveys a read-only enumeration, but the description does not explain behavior when both id and kod are omitted, authentication requirements, or potential side effects. The output schema covers the return shape, which softens this gap.

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

Conciseness5/5

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

The description is a single concise sentence with no wasted words. 'Get all recipient email addresses for an issued invoice' front-loads the action and resource immediately.

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

Completeness3/5

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

For a simple getter with fully documented optional parameters and an output schema, the description is mostly sufficient. It lacks explicit differentiation from adjacent invoice/contact email tools and provides no behavioral context beyond 'get', so an agent may not know when to prefer this over siblings like invoice_issued_get_email or contact_get_notification_email.

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

Parameters3/5

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

The input schema has 100% coverage with descriptions for id, kod, and purpose, so the description does not need to repeat parameter details. The description adds no extra meaning about how the parameters interact, but the schema already provides adequate baseline information.

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

Purpose4/5

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

The description clearly names a specific action ('get') and a specific resource ('all recipient email addresses for an issued invoice'), so it is not a tautology. It does not explicitly differentiate itself from the similarly named sibling 'invoice_issued_get_email', though the word 'recipients' narrows the meaning.

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

Usage Guidelines3/5

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

The phrase 'for an issued invoice' implies this tool is used when recipient email addresses are needed for an issued invoice. However, it gives no explicit when-to-use/when-not-to-use guidance and does not mention any alternative sibling or prerequisites such as needing an id or kod.

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

invoice_issued_match_paymentB

Match an issued invoice against a payment document (Parovani plateb).

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoInvoice ID
kodNoInvoice code (alternative to id)
zbytekNoHow to handle any remainder - one of ne|zauctovat|ignorovat| castecnaUhrada|castecnaUhradaNeboZauctovat|castecnaUhradaNeboIgnorovatignorovat
overpay_toNoDocument type code to use for an overpayment, if any
payment_idYesID (or 'code:X') of the paying document
payment_evidenceNoEvidence of the paying document ('banka', 'interni-doklad' or 'pokladni-pohyb')banka

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of explaining side effects. It implies a mutating 'match' operation but does not disclose whether the payment is consumed, how remainder/overpayment is handled, or what state changes occur on the invoice or payment document.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no filler or redundant wording. It earns its place, though it is brief enough that some behavioral context is left for other dimensions.

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

Completeness2/5

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

With six parameters, no annotations, and a nuanced matching workflow involving remainders and overpayments, the one-sentence description is not complete enough for an agent to invoke the tool safely. The output schema exists, so return values are not a gap, but mutation behavior and alternative routing are missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all six parameters, including zbytek, overpay_to, payment_evidence, and payment_id. The description adds no extra parameter-level meaning, so it meets the baseline but does not exceed it.

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

Purpose5/5

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

The description states a specific action ('Match an issued invoice against a payment document') and identifies the exact resource pairing, with the Czech term 'Parovani plateb' reinforcing the domain. This clearly separates it from sibling tools like invoice_issued_cash_payment or invoice_issued_deduct_advance, which handle different payment-related operations.

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

Usage Guidelines2/5

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

The description gives no guidance on when to choose this tool over alternatives and does not state prerequisites or exclusions. An agent must infer use from the tool name alone, and there is no mention of related matching or remainder-handling flows.

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

invoice_issued_overdue_daysA

Get the number of days an invoice is overdue by, given its due date. Pure date arithmetic - does not contact AbraFlexi.

ParametersJSON Schema
NameRequiredDescriptionDefault
due_dateYesDue date as an ISO 'YYYY-MM-DD' string

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly discloses that the tool performs local date arithmetic and has no external side effects, which is valuable transparency. It does not mention edge cases like future due dates or timezone handling, but for a simple date-difference calculation this is adequate.

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

Conciseness5/5

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

The description is two short sentences with no filler. The core purpose is front-loaded, and the important behavioral trait ('does not contact AbraFlexi') is placed in the second sentence where it reinforces rather than obscures the purpose.

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

Completeness5/5

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

Given the tool's low complexity, a single documented parameter, and an existing output schema, the description covers everything needed to invoke it correctly. It states the input, the computation, and the lack of external side effects, so no critical context is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description only says 'given its due date' and adds no additional meaning beyond the schema's ISO 'YYYY-MM-DD' string description. The schema already carries the parameter semantics.

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

Purpose5/5

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

The description starts with a specific verb and resource: 'Get the number of days an invoice is overdue by, given its due date.' It clearly identifies the output (overdue days) and the input (due date), and the 'pure date arithmetic' clause distinguishes it from sibling tools that interact with the AbraFlexi API.

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

Usage Guidelines3/5

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

The description gives useful context by stating this is pure date arithmetic and does not contact AbraFlexi, which implies it is appropriate for offline or quick calculations. However, it does not explicitly state when to prefer this tool over alternatives or when not to use it, leaving the usage guidance mostly implied.

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

invoice_issued_updateB

Update an existing issued invoice in AbraFlexi.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoInvoice ID to update
kodNoInvoice code to update (alternative to id)
dataNoFields to update

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description bears the full burden of behavioral disclosure. It merely states 'update' without explaining whether the update is partial or full, what authentication is needed, or what the side effects are. The existence of an output schema is not mentioned.

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

Conciseness4/5

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

The description is extremely concise and front-loaded, delivering the core purpose in a single sentence without any fluff. However, it may be overly minimal, sacrificing helpful details that would justify a higher score in other dimensions.

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

Completeness2/5

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

Given the three parameters, an output schema, and no annotations, the description is insufficient. It does not explain how to identify the invoice, what fields can be updated, or what the response will contain, leaving the AI agent with significant ambiguity.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds no extra meaning beyond what the schema provides; it does not clarify the relationship between 'id' and 'kod' or what fields 'data' should contain.

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

Purpose5/5

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

The description clearly states the verb 'update' and the resource 'existing issued invoice', making the tool's purpose unambiguous. It is specific enough to distinguish from sibling tools like create, delete, or get.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as creating or deleting invoices. It lacks any context about prerequisites or when updates are appropriate.

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

invoice_received_createC

Create a new received invoice in AbraFlexi.

ParametersJSON Schema
NameRequiredDescriptionDefault
kodYesInvoice code (unique identifier)
firmaYesSupplier reference (e.g., 'code:SUPPLIER01')
polozkyNoInvoice items/lines
extra_fieldsNoAdditional invoice fields
datum_vystaveniNoIssue date (YYYY-MM-DD format)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action without detailing side effects (e.g., whether the creation triggers validations, returns the object, or requires specific permissions).

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no wasted words. It is concise, though it could provide a bit more context without becoming too long.

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

Completeness2/5

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

Despite good schema coverage and an output schema, the description lacks contextual completeness. It does not mention the return value (output schema exists) or provide any integration context, which is important for a creation tool.

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

Parameters3/5

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

Schema coverage is 100%, so each parameter has a description in the schema. The tool description adds no additional meaning beyond the schema, making it adequate but not enhancing understanding.

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

Purpose4/5

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

The description clearly states the action ('Create') and the resource ('received invoice in AbraFlexi'). However, it does not differentiate from sibling tools like invoice_issued_create, making the purpose clear but not uniquely distinguishing.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., invoice_issued_create or bank_transaction_create). The description does not mention any prerequisites or scenarios where this tool is appropriate.

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

invoice_received_getA

Get received invoices (faktura-prijata) from AbraFlexi.

Every invoice returned was received BY the AbraFlexi company this server is bound to (see server_info) - there is no way to query another company's received invoices from this server. The 'nazFirmy'/'firma' fields on each record identify the SUPPLIER/counterparty who issued the invoice, not the receiving company.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNoList of invoice IDs to retrieve
kodNoInvoice code to search for
limitNoMaximum number of results
detailNoDetail level (summary, id, full, custom:field1,field2)summary

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses a critical and non-obvious behavior: the 'nazFirmy'/'firma' fields identify the supplier/counterparty, not the receiving company, and the result set is restricted to the bound company. This addresses the most likely misinterpretations for a read operation.

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

Conciseness5/5

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

The description is two purposeful sentences with no fluff. The first sentence immediately states the verb and resource, and the second efficiently packs the important scope caveat and field semantics. Every sentence earns its place.

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

Completeness4/5

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

For a read-only retrieval tool with a fully documented input schema and an output schema, the description covers the non-obvious traps: company binding and field interpretation. It does not discuss combinations of ids/kod, but those are optional and schema-documented, so no critical invocation knowledge appears missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3; all four parameters are already documented with descriptions in the input schema. The description adds no parameter-specific guidance and does not clarify how ids and kod interact or whether they can be combined.

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

Purpose5/5

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

The description states the specific verb 'Get' and resource 'received invoices' from AbraFlexi, including the Czech evidence name '(faktura-prijata)'. It removes ambiguity about directionality by clarifying these are invoices received BY the bound company, distinguishing it from sibling tools like invoice_issued_get.

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

Usage Guidelines4/5

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

The description gives clear usage context: results are scoped to the AbraFlexi company bound to the server, and querying another company's received invoices from this server is impossible. It does not explicitly name alternatives such as invoice_issued_get, but the scope and exclusion are clearly communicated.

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

product_createB

Create a new product in AbraFlexi.

ParametersJSON Schema
NameRequiredDescriptionDefault
kodYesProduct code (unique identifier)
cenaNoProduct price
nazevYesProduct name
extra_fieldsNoAdditional product fields

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits. It only repeats the creation action, omitting details about idempotency, side effects, permissions, or error conditions.

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

Conciseness4/5

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

The description is very concise (one sentence). It is front-loaded and to the point, though it could include more detail without becoming verbose.

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

Completeness2/5

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

Given the lack of annotations and the need for usage guidance, the description is incomplete. It does not cover when to use or potential pitfalls, essential for a tool of this complexity.

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

Parameters3/5

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

All parameters are described in the schema (100% coverage). The description adds no additional meaning beyond the schema, so baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states the action ('Create a new product') and the target system ('AbraFlexi'). It is specific and distinguishes from sibling tools like product_update or product_delete.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., product_update). The description does not specify prerequisites or context for invocation.

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

product_deleteB

Delete a product from AbraFlexi.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoProduct ID to delete
kodNoProduct code to delete (alternative to id)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It only states 'Delete', implying irreversibility, but lacks details on soft delete, permissions, cascading effects, or output behavior. The output schema is not referenced.

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

Conciseness5/5

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

Single sentence, zero wasted words. Clearly front-loaded with the action and resource.

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

Completeness3/5

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

Though output schema exists, the description fails to mention any return value or confirmation. For a deletion tool, this is minimal but acceptable. No discussion of error conditions or side effects.

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

Parameters3/5

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

Schema coverage is 100% so the description adds no extra meaning beyond parameter names and descriptions. It doesn't clarify when to use id versus kod, but the schema already provides minimal descriptions.

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

Purpose5/5

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

The description clearly states the specific action ('Delete') and resource ('a product from AbraFlexi'). It effectively distinguishes from sibling tools like contact_delete or evidence_delete by naming the exact resource.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like product_update or product_get. No prerequisites or context for safe deletion are provided.

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

product_getA

Get products (cenik) from AbraFlexi.

These are price-list entries belonging to the AbraFlexi company this server is bound to (see server_info).

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNoList of product IDs to retrieve
kodNoProduct code to search for
limitNoMaximum number of results
nazevNoProduct name to search for (partial match)
detailNoDetail level (summary, id, full, custom:field1,field2)summary

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It adds meaningful behavioral context by explaining that products are cenik (price-list) entries and belong to the specific company the server is bound to. However, it does not disclose default retrieval behavior (e.g., what happens when no ids/kod/nazev are given) or pagination details, though the schema partially covers this.

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

Conciseness5/5

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

The description is two short sentences with no filler. It front-loads the primary action ('Get products') and uses the second sentence to provide essential scoping and semantic clarification without redundancy.

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

Completeness4/5

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

For a simple getter with a rich input schema and an output schema, the description covers the most important contextual details: what the resource is, its domain meaning, and its scope. The only minor gap is explicit guidance on when to choose this tool over the generic evidence_get, but the naming and 'price-list entry' framing largely resolve that.

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

Parameters3/5

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

The input schema has 100% description coverage, so the baseline is 3. The description does not add any parameter-specific meaning beyond the schema, but given the thorough schema descriptions, no extra compensation is needed.

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

Purpose5/5

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

The description states a specific verb and resource: 'Get products (cenik) from AbraFlexi.' It also clarifies the domain meaning ('price-list entries') and scopes the data to the bound company, which distinguishes it clearly from generic siblings like evidence_get and from mutation tools like product_create.

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

Usage Guidelines3/5

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

The description implies usage by declaring it retrieves products and scoping them to the bound company, but it does not explicitly name alternatives or state when not to use this tool versus evidence_get or product-related mutations. The reference to server_info gives some context, but no exclusionary guidance is provided.

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

product_updateB

Update an existing product in AbraFlexi.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoProduct ID to update
kodNoProduct code to update (alternative to id)
dataNoFields to update

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility. It only states 'Update an existing product' without disclosing behavioral traits such as what happens if the product is not found, whether updates are partial or full, or any 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.

Conciseness4/5

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

The description is a single short sentence, efficient and to the point. However, it could include slightly more information without becoming verbose.

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

Completeness2/5

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

Given the tool's simplicity and the presence of an output schema, the description is too minimal. It does not clarify the relationship between id and kod, how the data parameter should be structured, or what the response looks like.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond what the schema already provides for parameters (id, kod, data).

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

Purpose5/5

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

The description clearly states the verb 'update' and the resource 'existing product' in 'AbraFlexi', distinguishing it from sibling tools like product_create (create) and product_delete (delete). It is specific and unambiguous.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like product_create or product_get. It does not mention prerequisites (e.g., the product must exist) or any exclusions.

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

server_infoA

Report which AbraFlexi company/instance this MCP server session is bound to.

This server is bound to exactly one AbraFlexi company for its whole process lifetime (configured via ABRAFLEXI_URL/ABRAFLEXI_COMPANY). Every other tool's results already belong to this company by construction. Call this tool first whenever the identity of "the company" matters to the request (e.g. "how many invoices did company X issue"), instead of trying to infer it from record fields such as an invoice's customer/supplier name.

Returns: str: JSON object with abraflexi_url, company, and read_only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden and does so effectively. It discloses the one-company-per-process-lifetime binding, the relevant environment variables (ABRAFLEXI_URL/ABRAFLEXI_COMPANY), and the fact that all other tools' results already belong to that company. It also signals read-only behavior through the 'Report' verb and the 'read_only' field.

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

Conciseness5/5

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

The description is front-loaded with the purpose, followed by binding context, usage guidance, and return format in three compact paragraphs. Each sentence carries distinct information: identity, configuration, relationship to other tools, when to call, and output contents.

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

Completeness5/5

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

For a zero-parameter informational tool, the description is complete: it says what it returns (abraflexi_url, company, read_only), when to call it, and why the concept matters. Nothing an agent would need to invoke it correctly is missing.

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

Parameters4/5

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

The tool has zero parameters, and the empty input schema already makes that obvious, so the baseline is 4. The description adds useful context about the configuration variables and the returned fields, though no parameter-specific explanation is needed.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Report which AbraFlexi company/instance this MCP server session is bound to.' It further distinguishes the tool from siblings by explaining the server is bound to exactly one company for its whole lifetime, which no other listed tool appears to cover.

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

Usage Guidelines5/5

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

It explicitly instructs 'Call this tool first whenever the identity of "the company" matters to the request' and steers away from the alternative of inferring it from record fields such as an invoice's customer/supplier name. This provides clear when-to-use and when-not-to-use guidance.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 53 tool updatesv1.5.0
    • Addedabraflexi_client_call
    • Addedabraflexi_client_methods
    • Changedbank_transaction_create9 fields changed
      • changedInput schema / properties / banka / description
        Previous value: -"Bank account reference (e.g., 'code:BANK01')"New value: +"Bank account reference (e.g., 'code:BANKA-CZK')"
      • changedInput schema / properties / castka / description
        Previous value: -"Transaction amount"New value: +"Transaction amount, VAT-exempt (sets sumOsv on an\nitemless document; use extra_fields for a VAT-split amount\nor actual polozkyDokladu line items instead)"
      • removedInput schema / properties / datum
        Removed value: -{
        -  "description": "Transaction date (YYYY-MM-DD format)",
        -  "type": "string"
        -}
      • addedInput schema / properties / datum_vystaveni
        Added value: +{
        +  "description": "Transaction date (YYYY-MM-DD format)",
        +  "type": "string"
        +}
      • addedInput schema / properties / firma
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Related contact reference (e.g., 'code:CUSTOMER01')"
        +}
      • addedInput schema / properties / kod
        Added value: +{
        +  "description": "Transaction code (unique identifier)",
        +  "type": "string"
        +}
      • addedInput schema / properties / typ_dokladu
        Added value: +{
        +  "default": "STANDARD",
        +  "description": "Document type code (see the typ-banka evidence);\ndefaults to 'STANDARD'",
        +  "type": "string"
        +}
      • addedInput schema / properties / typ_pohybu
        Added value: +{
        +  "default": "prijem",
        +  "description": "Movement direction - 'prijem' (income, default) or\n'vydej' (expense)",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "banka",
        -  "datum",
        -  "castka"
        -]New value: +[
        +  "kod",
        +  "banka",
        +  "datum_vystaveni",
        +  "castka"
        +]
    • Addedcall_user_query
    • Addedchanges_disable
    • Addedchanges_enable
    • Addedchanges_get
    • Addedchanges_status
    • Addedcompany_create
    • Addedcontact_get_any_phone
    • Addedcontact_get_bank_accounts
    • Addedcontact_get_cell_phone
    • Addedcontact_get_notification_email
    • Addedevidence_attach_file
    • Addedevidence_batch_insert
    • Addedevidence_batch_update
    • Changedevidence_create1 field changed
      • addedInput schema / properties / company
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Company identifier (dbNazev) to write to instead of the\nserver's default ABRAFLEXI_COMPANY - e.g. to grant a user\naccess by inserting into another company's 'uzivatele' evidence"
        +}
    • Changedevidence_delete1 field changed
      • addedInput schema / properties / company
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Company identifier (dbNazev) to delete from instead of the\nserver's default ABRAFLEXI_COMPANY"
        +}
    • Addedevidence_delete_attachment
    • Addedevidence_download_attachment
    • Addedevidence_export_report
    • Changedevidence_get6 fields changed
      • addedInput schema / properties / add_row_count
        Added value: +{
        +  "default": false,
        +  "description": "Include the total number of matching records in the response",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / company
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Company identifier (dbNazev) to query instead of the\nserver's default ABRAFLEXI_COMPANY - e.g. to read another\ncompany's 'uzivatele' (user access) evidence"
        +}
      • addedInput schema / properties / order
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Column name to sort by"
        +}
      • addedInput schema / properties / order_direction
        Added value: +{
        +  "default": "A",
        +  "description": "\"A\" for ascending (default) or \"D\" for descending",
        +  "type": "string"
        +}
      • addedInput schema / properties / relations
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Sub-evidences to include in the response (e.g. ['polozkyFaktury'])"
        +}
      • addedInput schema / properties / start
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Zero-based offset of the first record to return (pagination)"
        +}
    • Addedevidence_get_attachment
    • Addedevidence_get_attachment_thumbnail
    • Addedevidence_get_labels
    • Addedevidence_get_properties
    • Addedevidence_get_qr_code
    • Addedevidence_get_record_changes
    • Addedevidence_get_relations_list
    • Addedevidence_get_reports
    • Addedevidence_get_sum
    • Addedevidence_list_attachments
    • Addedevidence_lock
    • Addedevidence_lock_for_ucetni
    • Addedevidence_mass_update
    • Addedevidence_perform_action
    • Addedevidence_set_label
    • Addedevidence_storno
    • Addedevidence_unlock
    • Addedevidence_unset_label
    • Addedevidence_unset_labels
    • Changedevidence_update2 fields changed
      • addedInput schema / properties / company
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Company identifier (dbNazev) to write to instead of the\nserver's default ABRAFLEXI_COMPANY"
        +}
      • addedInput schema / properties / remove_external_ids
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "If given, remove external identifiers starting\nwith this prefix (empty string removes all of them) as part of\nthe update"
        +}
    • Addedinvoice_issued_cash_payment
    • Addedinvoice_issued_deduct_advance
    • Addedinvoice_issued_deduct_zdd
    • Changedinvoice_issued_get4 fields changed
      • addedInput schema / properties / add_row_count
        Added value: +{
        +  "default": false,
        +  "description": "Include the total number of matching records in the response",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / datum_vystaveni_do
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Upper bound for issue date (YYYY-MM-DD, inclusive)"
        +}
      • addedInput schema / properties / datum_vystaveni_od
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Lower bound for issue date (YYYY-MM-DD, inclusive)"
        +}
      • addedInput schema / properties / filter_expr
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Additional AbraFlexi filter expression to combine with built-in filters"
        +}
    • Addedinvoice_issued_get_email
    • Addedinvoice_issued_get_recipients
    • Addedinvoice_issued_link_zdd
    • Addedinvoice_issued_match_payment
    • Addedinvoice_issued_overdue_days
    • Addedinvoice_issued_unlink_zdd
    • Addedserver_info
  2. 21 tool updatesv1.0.1
    • First observedbank_transaction_create
    • First observedbank_transaction_get
    • First observedcontact_create
    • First observedcontact_delete
    • First observedcontact_get
    • First observedcontact_update
    • First observedevidence_create
    • First observedevidence_delete
    • First observedevidence_get
    • First observedevidence_list
    • First observedevidence_update
    • First observedinvoice_issued_create
    • First observedinvoice_issued_delete
    • First observedinvoice_issued_get
    • First observedinvoice_issued_update
    • First observedinvoice_received_create
    • First observedinvoice_received_get
    • First observedproduct_create
    • First observedproduct_delete
    • First observedproduct_get
    • First observedproduct_update

TDQS

B3.2/5.0
Disambiguation3/5

Some tools are clearly distinct, but there is meaningful overlap: evidence_get and the specific invoice_issued_get/contact_get/product_get wrappers cover the same ground, and invoice_issued_get_recipients vs invoice_issued_get_email as well as contact_get_cell_phone vs contact_get_any_phone are easily confused. The descriptions help, but an agent could reasonably select the wrong tool in several cases.

Naming Consistency4/5

The dominant verb_noun pattern is consistent and readable, e.g. evidence_create, contact_update, invoice_issued_delete, changes_enable. Minor deviations such as server_info, abraflexi_client_methods, and abraflexi_client_call, plus singular/plural label variants, keep it from being a perfect 5.

Tool Count2/5

68 tools is far above the 25+ threshold for a heavy toolset. While AbraFlexi is a broad ERP system, the surface is inflated by generic evidence_* tools coexisting with many specific wrappers and by numerous highly specialized invoice_issued_* actions that could reasonably be grouped or delegated to evidence_perform_action.

Completeness4/5

The toolset covers contact, product, invoice, bank, evidence, attachment, label, change-tracking, locking, storno, mass operations, reporting, QR codes, and user queries, which is quite thorough. Minor gaps like missing dedicated invoice_received_update/delete or bank_transaction_update/delete are workaroundable via the generic evidence_update/evidence_delete tools.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    MCP server to interact with the Cuéntica accounting API, allowing users to manage invoices, expenses, income, clients, providers, and bank accounts via natural language.
    59
    2
    MIT
  • A
    license
    C
    quality
    C
    maintenance
    Enables natural language interaction with the WeFact invoicing platform, allowing users to manage debtors, invoices, products, subscriptions, and perform various administrative tasks via MCP-compatible clients.
    18
    1
    AGPL 3.0
  • A
    license
    A
    quality
    B
    maintenance
    MCP server for the Elorus invoicing and accounting platform, enabling AI assistants to create invoices, manage contacts, and query financial data through natural language.
    43
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Model Context Protocol (MCP) server for SuperFaktura invoicing system. Enables AI assistants to interact with SuperFaktura API for managing invoices, clients, and expenses.
    Apache 2.0

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/VitexSoftware/mcp-server-abraflexi'

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