Skip to main content
Glama

Saldeo MCP by usefulapi

Server Details

Read SaldeoSMART companies, contractors, documents, invoices, bank statements and employees.

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
m190/usefulapi-mcp
GitHub Stars
0

TDQS

A3.7/5.0

Scored across 10 tools

Disambiguation3/5

The list-ids then get-by-ids pattern is clearly explained, but document and invoice tools overlap because documents include invoice types while separate invoice tools exist. An agent may hesitate between saldeo_list_document_ids, saldeo_list_invoice_ids, saldeo_list_invoices, and saldeo_search_documents for invoice retrieval.

Naming Consistency5/5

All tools use the same saldeo_ prefix followed by a consistent snake_case verb_noun pattern such as list_companies, get_documents_by_ids, and search_documents. There are no mixed conventions or vague names.

Tool Count5/5

Ten tools is well-scoped for a domain connector covering companies, contractors, employees, bank statements, documents, and invoices. Each tool corresponds to a meaningful API operation without excessive fragmentation.

Completeness3/5

The surface covers read/retrieval workflows well, including listing, ID retrieval, and full-record fetching for key entities. However, there are no create, update, delete, or other lifecycle operations, and several entities only have list endpoints without dedicated detail lookup.

Available Tools

10 tools
saldeo_get_documents_by_idsA
Read-only
Inspect

Get full documents of one company by id, per type (use the groups from saldeo_list_document_ids; at most 200 ids per call). Saldeo: POST /api/xml/3.1/document/listbyid.

NameRequiredDescriptionDefault
limitNoEntries per list in the reply, 1-1000 (default 50). The reply's "paging" says how many exist and the next offset.
offsetNoSkip this many entries of each list (default 0); use paging.next_offset from the previous reply.
ordersNoORDER ids.
writingsNoWRITING ids.
contractsNoCONTRACT ids.
invoices_costNoINVOICE_COST ids (cost invoices).
invoices_saleNoINVOICE_SALE ids (sales invoices).
other_documentsNoOTHER_DOCUMENT ids.
invoices_internalNoINVOICE_INTERNAL ids.
invoices_materialNoINVOICE_MATERIAL ids.
company_program_idYesThe company's COMPANY_PROGRAM_ID, as returned by saldeo_list_companies.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds only the per-type 200-id batching constraint; it says nothing about what 'full documents' contain or how paging behaves, leaving that to 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.

Conciseness5/5

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

One compact sentence with the guidance front-loaded and the underlying endpoint appended as a trailing reference. No filler.

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 an 11-parameter read-only fetch with no output schema, the description establishes the id source, the per-type grouping and the batch cap. The only gap is a hint of what the returned 'full documents' look like, which a caller must infer.

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 every type array and the paging parameters are already documented. The description reinforces the 200-per-call cap and the 'per type' semantics, but adds little else 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?

States a concrete verb and resource ('Get full documents of one company by id, per type') and names the sibling that provides the ids. The 'full documents' vs id-list contrast implicitly separates it from saldeo_list_document_ids, but it never explicitly distinguishes it from saldeo_get_invoices_by_ids.

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

Usage Guidelines4/5

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

Tells the agent where the ids come from ('use the groups from saldeo_list_document_ids') and gives a hard operational limit (at most 200 ids per call). It stops short of saying when to prefer this over saldeo_get_invoices_by_ids or saldeo_search_documents.

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

saldeo_get_invoices_by_idsA
Read-only
Inspect

Get full invoices of one company by id (ids from saldeo_list_invoice_ids; at most 200 per call). Saldeo: POST /api/xml/3.0/invoice/listbyid.

NameRequiredDescriptionDefault
limitNoEntries per list in the reply, 1-1000 (default 50). The reply's "paging" says how many exist and the next offset.
offsetNoSkip this many entries of each list (default 0); use paging.next_offset from the previous reply.
invoicesNoINVOICE_ID values.
pre_invoicesNoPRE_INVOICE_ID values.
company_program_idYesThe company's COMPANY_PROGRAM_ID, as returned by saldeo_list_companies.
corrective_invoicesNoCORRECTIVE_INVOICE_ID values.
corrective_pre_invoicesNoCORRECTIVE_PRE_INVOICE_ID values.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered; the description adds the 200-id cap and the underlying POST endpoint, plus that full (not partial) invoice objects come back. It says nothing about behavior for ids that don't exist or belong to another company, which is the main unknown for a batch-by-id fetch.

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 compact sentences, front-loaded with the verb and scope, followed by the id source and the batch cap. The trailing endpoint reference is the only arguable overhead and is short enough not to hurt.

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 7-parameter read-only fetch with full schema coverage and no output schema, the description covers scope, id provenance, and batching. It could go further by sketching the returned invoice structure or confirming paging behavior of the reply, but nothing critical 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%, with per-parameter descriptions for invoices, pre_invoices, corrective variants, limit and offset, so the schema does the heavy lifting. The description only reinforces the id source and the 200-item ceiling already encoded as maxItems, adding no new parameter meaning.

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 ('Get full invoices'), the scope ('of one company'), and the id source, which separates it from the sibling saldeo_list_invoice_ids that only returns ids. It does not explicitly distinguish itself from saldeo_list_invoices, so the boundary with that sibling is left implicit.

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?

It gives a prerequisite chain ('ids from saldeo_list_invoice_ids') and a hard batching constraint ('at most 200 per call'), which is useful operational context. However, there is no statement of when to prefer this over saldeo_list_invoices or what to do when a batch exceeds 200.

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

saldeo_list_bank_statementsA
Read-only
Inspect

List the bank statements of one company with their entries, contractors and links. Saldeo: GET /api/xml/3.0/bank_statement/list.

NameRequiredDescriptionDefault
limitNoEntries per list in the reply, 1-1000 (default 50). The reply's "paging" says how many exist and the next offset.
offsetNoSkip this many entries of each list (default 0); use paging.next_offset from the previous reply.
company_program_idYesThe company's COMPANY_PROGRAM_ID, as returned by saldeo_list_companies.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds value by disclosing that each statement carries related entries, contractors and links, but says nothing about volume, paging behavior, or ordering beyond what the schema covers.

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?

Two short sentences, front-loaded with the action and resource, followed by the endpoint reference. No filler, though the raw endpoint path is of marginal value to an agent.

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 list tool with no output schema, the description tells the agent what content comes back (statements plus nested entries/contractors/links), and pagination is fully specified in the schema. Sufficient to call correctly, with only ordering/response-shape niceties 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 limit, offset and company_program_id are fully documented in the schema. The description only reinforces the company scoping ('of one company') and adds no syntax or format detail beyond the schema baseline.

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+resource ('List the bank statements of one company') and enumerates the included data (entries, contractors, links). The resource is clearly distinct from siblings like saldeo_list_invoices or saldeo_list_documents, though no sibling is named explicitly.

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

Usage Guidelines3/5

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

Usage is only implied: a required company_program_id signals that this lists statements for a single company. There is no explicit when-to-use, when-not, or pointer to an alternative tool for other bank-statement needs.

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

saldeo_list_companiesA
Read-only
Inspect

List the companies (clients) the Saldeo user can see: COMPANY_PROGRAM_ID (needed by every other tool), COMPANY_ID, names, VAT number, address, bank accounts. Start here. Saldeo: GET /api/xml/3.0/company/list.

NameRequiredDescriptionDefault
limitNoEntries per list in the reply, 1-1000 (default 100). The reply's "paging" says how many exist and the next offset.
offsetNoSkip this many entries of each list (default 0); use paging.next_offset from the previous reply.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety traits are covered. The description adds useful scope behavior — companies "the Saldeo user can see" — and lists the returned fields, including the critical COMPANY_PROGRAM_ID dependency.

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: it leads with what is listed, then key returned fields, then "Start here," then the underlying endpoint. Every sentence carries useful routing or output information.

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

Completeness5/5

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

For a simple read-only listing tool, the description supplies the essential output fields and the dependency signal around COMPANY_PROGRAM_ID. Pagination details are handled by the schema, and no output schema is needed given the explicit field list.

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 limit and offset parameters are already fully documented in the schema. The description does not add further parameter meaning beyond the schema baseline.

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

Purpose5/5

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

States a specific verb and resource — list companies/clients visible to the Saldeo user — and explains the key returned identifier, COMPANY_PROGRAM_ID, which is needed by every other tool. This distinguishes it from sibling tools and makes the tool's role unmistakable.

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 "Start here" gives explicit first-step guidance, and "needed by every other tool" clarifies why an agent should call this before dependent tools. It does not name alternatives or exclusions, but there is no directly competing company-listing sibling.

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

saldeo_list_contractorsA
Read-only
Inspect

List the contractors (suppliers and customers) of one company: names, VAT number (NIP), address, bank accounts, e-mails, payment days. Saldeo: GET /api/xml/3.0/contractor/list.

NameRequiredDescriptionDefault
limitNoEntries per list in the reply, 1-1000 (default 50). The reply's "paging" says how many exist and the next offset.
offsetNoSkip this many entries of each list (default 0); use paging.next_offset from the previous reply.
company_program_idYesThe company's COMPANY_PROGRAM_ID, as returned by saldeo_list_companies.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the upstream endpoint reference and a summary of returned fields, but says nothing about volume, ordering, or pagination behavior (which lives only in the schema).

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

Conciseness4/5

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

Two compact sentences, front-loaded with the purpose and scoped to one company. The trailing endpoint citation ('GET /api/xml/3.0/contractor/list') is developer reference rather than agent-facing guidance, but it is short and costs little.

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 no output schema, the description usefully lists the fields the reply contains (names, NIP, address, bank accounts, e-mails, payment days), which is the main thing an agent needs to know. Pagination details are covered by the schema; only ordering and result-size expectations 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 company_program_id, limit and offset are fully documented in the schema, including the paging.next_offset hint. The description adds nothing parameter-specific, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb (List) and resource (contractors = suppliers and customers) scoped to one company, and enumerates the returned fields. This clearly distinguishes it from siblings like saldeo_list_companies, though it never names an alternative explicitly.

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

Usage Guidelines3/5

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

Usage is only implied: the agent infers you list contractors for a given company_program_id. There is no explicit statement of when to prefer this over saldeo_search_documents or saldeo_list_companies, and no prerequisites or exclusions are given.

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

saldeo_list_document_idsA
Read-only
Inspect

List the ids of all documents of one company in one month folder, grouped by type (contracts, cost/sale/internal/material invoices, orders, writings, other). Feed the ids to saldeo_get_documents_by_ids. Saldeo: POST /api/xml/3.0/document/getidlist.

NameRequiredDescriptionDefault
yearYesYear of the Saldeo folder (the month the document is booked in), e.g. 2026.
limitNoEntries per list in the reply, 1-1000 (default 500). The reply's "paging" says how many exist and the next offset.
monthYesMonth of the Saldeo folder, 1-12.
offsetNoSkip this many entries of each list (default 0); use paging.next_offset from the previous reply.
company_program_idYesThe company's COMPANY_PROGRAM_ID, as returned by saldeo_list_companies.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered; the description adds output-shape information (ids grouped by document type) and the underlying endpoint POST /api/xml/3.0/document/getidlist. It does not mention rate limits or how large the grouped result can get, but it goes meaningfully beyond the annotations.

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

Conciseness5/5

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

Three short sentences, front-loaded with the core scope, followed by the chaining instruction and the raw endpoint. No filler or restated title text.

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 no output schema, the description carries the burden of describing results, and it does so by naming the grouping categories. Paging is delegated to the schema. A little more on the reply structure (per-type lists plus paging) would make it complete for a 5-parameter tool.

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

Parameters3/5

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

Schema description coverage is 100%, so year, month, limit, offset, and company_program_id are all documented in the schema, including cross-references to saldeo_list_companies and paging.next_offset. The description only restates 'one company in one month folder' without adding format or edge-case guidance, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource with scope: 'List the ids of all documents of one company in one month folder, grouped by type'. It also enumerates the grouping categories and points to saldeo_get_documents_by_ids, which separates it from saldeo_list_invoice_ids and saldeo_search_documents.

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?

'Feed the ids to saldeo_get_documents_by_ids' gives a clear usage context: this is a two-step id-retrieval tool, not a content fetcher. It does not state when to prefer this over saldeo_search_documents or explain that it returns no document bodies, so explicit exclusions are missing.

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

saldeo_list_employeesA
Read-only
Inspect

List the employees of one company (personnel module): names, acronym and HR master data. Contains personal data. Saldeo: GET /api/xml/3.0/employee/list.

NameRequiredDescriptionDefault
limitNoEntries per list in the reply, 1-1000 (default 50). The reply's "paging" says how many exist and the next offset.
offsetNoSkip this many entries of each list (default 0); use paging.next_offset from the previous reply.
company_program_idYesThe company's COMPANY_PROGRAM_ID, as returned by saldeo_list_companies.

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds two genuine bits of context: this endpoint returns HR master data and "Contains personal data", which flags a privacy/GDPR sensitivity an agent should know before surfacing results. It still says nothing about permissions, result volume, or paging behavior beyond what the schema documents.

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?

Two tight sentences with the key capability and the data-sensitivity warning front-loaded. The trailing "Saldeo: GET /api/xml/3.0/employee/list" is cheap but is API trivia an agent doesn't need to select the 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 read-only list tool with annotations, full schema coverage and no output schema, the description covers purpose, scope, payload contents and the personal-data caveat. Only the absence of any note about the paging envelope shape keeps it from being fully self-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 limit, offset and company_program_id are fully documented in structured fields, including paging semantics. The description adds no parameter-level detail beyond the implicit one-company scoping, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ("List the employees"), scopes it to "one company (personnel module)", and enumerates the returned fields (names, acronym, HR master data). This clearly separates it from siblings such as saldeo_list_companies and saldeo_list_contractors.

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 company-scoped phrasing plus the pointer that company_program_id comes from saldeo_list_companies implies the right call context. However, there is no explicit when-to-use/when-not guidance and no comparison against alternatives like saldeo_list_contractors for people-related lookups.

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

saldeo_list_invoice_idsA
Read-only
Inspect

List the ids of the invoices (invoices, corrective invoices, pre-invoices, corrective pre-invoices) of one company in one month folder. Feed them to saldeo_get_invoices_by_ids. Saldeo: POST /api/xml/3.0/invoice/getidlist.

NameRequiredDescriptionDefault
yearYesYear of the Saldeo folder (the month the document is booked in), e.g. 2026.
limitNoEntries per list in the reply, 1-1000 (default 500). The reply's "paging" says how many exist and the next offset.
monthYesMonth of the Saldeo folder, 1-12.
offsetNoSkip this many entries of each list (default 0); use paging.next_offset from the previous reply.
company_program_idYesThe company's COMPANY_PROGRAM_ID, as returned by saldeo_list_companies.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered; the description adds the scoping constraint (one company, one month folder) and the underlying endpoint POST /api/xml/3.0/invoice/getidlist for traceability. It does not mention that the reply is split into several paginated lists, one per document type, which is the main behavioral fact left implicit 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.

Conciseness5/5

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

Two compact sentences: the scope and document types come first, the follow-up tool second, with the raw endpoint appended as a terse reference. No filler or redundant restatement of the schema.

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 id-listing tool with no output schema, the description covers what is returned (ids) and what to do with them next. The one gap is that it never says the response contains multiple separately paginated lists, leaving the agent to infer that limit/offset apply per document-type list.

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 five parameters including limit/offset paging semantics are already documented. The description only reinforces the company + year + month folder grouping, which the schema already conveys, so it adds little beyond the structured fields. Baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource (list invoice ids) and enumerates exactly which document types are covered (invoices, corrective invoices, pre-invoices, corrective pre-invoices), scoped to one company and one month folder. It implicitly separates itself from saldeo_list_invoices by emphasizing ids-only, but never names that sibling to make the contrast explicit.

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 sentence 'Feed them to saldeo_get_invoices_by_ids' gives a concrete next step and thereby implies this is a two-phase id-then-detail workflow, which is real usage guidance. It stops short of stating when to prefer saldeo_list_invoices instead, or any prerequisites such as needing a valid company_program_id first.

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

saldeo_list_invoicesB
Read-only
Inspect

List the sales invoices of one company that were marked for export in Saldeo (policy SALDEO): number, dates, contractor, line items, amounts. Saldeo: GET /api/xml/3.0/invoice/list.

NameRequiredDescriptionDefault
limitNoEntries per list in the reply, 1-1000 (default 50). The reply's "paging" says how many exist and the next offset.
offsetNoSkip this many entries of each list (default 0); use paging.next_offset from the previous reply.
company_program_idYesThe company's COMPANY_PROGRAM_ID, as returned by saldeo_list_companies.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the underlying endpoint and the returned field set, but says nothing about pagination behavior (deferred to schema) or result ordering, so it adds only modest context beyond structured data.

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

Conciseness5/5

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

Two tight sentences, front-loading the resource and scope before the endpoint reference. No filler.

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 list tool with complete schema descriptions and annotations, the description is essentially complete: it states scope and the fields returned. Lacking only explicit sibling routing and pagination notes, both partly covered elsewhere.

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 limit, offset, and company_program_id are fully documented in the schema. The description adds no syntax or format detail beyond that, making baseline 3 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?

States a specific verb (List) and resource (sales invoices), plus meaningful scope: only invoices marked for export, for one company, with the fields returned enumerated (number, dates, contractor, line items, amounts). This separates it from saldeo_list_invoice_ids (IDs only) and saldeo_get_invoices_by_ids, though it does not name those siblings explicitly.

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

Usage Guidelines2/5

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

No explicit when-to-use guidance or alternatives are named. The 'marked for export' scope implies a use case, but an agent is left to infer when this beats saldeo_list_invoice_ids or saldeo_get_invoices_by_ids. No prerequisites beyond company id.

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

saldeo_search_documentsA
Read-only
Inspect

Find documents of one company by field (at least one of document_id, number, nip, guid; several are combined with AND). Returns the matching documents. Saldeo: POST /api/xml/3.1/document/search (policy BY_FIELDS).

NameRequiredDescriptionDefault
nipNoThe contractor's VAT number (NIP).
guidNoThe document GUID.
limitNoEntries per list in the reply, 1-1000 (default 50). The reply's "paging" says how many exist and the next offset.
numberNoThe document number, e.g. FV/101/2016.
offsetNoSkip this many entries of each list (default 0); use paging.next_offset from the previous reply.
document_idNoThe Saldeo DOCUMENT_ID.
company_program_idYesThe company's COMPANY_PROGRAM_ID, as returned by saldeo_list_companies.

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered structurally. The description usefully adds that fields combine with AND and identifies the underlying BY_FIELDS policy, but says nothing about pagination behavior, result limits, or return ordering beyond what the schema already documents.

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 tight and front-loaded: scope and search semantics come first, endpoint metadata last. Every sentence carries information relevant to invoking the tool correctly.

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 seven-parameter read-only search tool with fully documented schema and no output schema, the description covers purpose, search semantics, and the AND constraint. It is nearly complete, with only minor omitted details such as how empty results or paging are surfaced.

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

Parameters4/5

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

Schema coverage is 100%, so parameter definitions are already documented. The description adds a meaningful constraint not expressed in the schema: at least one of document_id, number, nip, or guid must be supplied, and multiple such fields are ANDed together.

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 gives a specific verb ('Find') and resource ('documents'), plus the scope 'of one company by field'. It implicitly distinguishes field-based search from sibling list/get-by-ID tools, though it does not name an alternative explicitly.

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

Usage Guidelines3/5

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

It states that at least one search field is required and that multiple fields combine with AND, which is useful usage context. However, it never says when to prefer this over saldeo_list_document_ids or saldeo_get_documents_by_ids, leaving alternative selection implicit.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updates
    • First observedsaldeo_get_documents_by_ids
    • First observedsaldeo_get_invoices_by_ids
    • First observedsaldeo_list_bank_statements
    • First observedsaldeo_list_companies
    • First observedsaldeo_list_contractors
    • First observedsaldeo_list_document_ids
    • First observedsaldeo_list_employees
    • First observedsaldeo_list_invoice_ids
    • First observedsaldeo_list_invoices
    • First observedsaldeo_search_documents

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables read-only querying of Invoice4U accounting data, including documents, customers, branches, tax rates, and Israeli invoice allocation statuses.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Provides read-only access to wFirma company data, invoices, contractors, expenses, and payments, letting AI assistants query the wFirma API v2 without modifying records.
    9
    6 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables read-only interaction with the FakturaXL API for querying invoices, clients, products, and stock levels with pagination, date chunking, and rate limiting.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.