Saldeo MCP by usefulapi

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

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
99%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,278Tokens (tool definitions)
~2.8 KBTypical response size
Significant attention impact (2.56% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "saldeo": {
      "url": "https://saldeo.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://saldeo.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (10)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢saldeo_list_companies(limit, offset)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "description": "Entries per list in the reply, 1-1000 (default 100). The reply's \"paging\" says how many exist and the next offset.",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    },
    "offset": {
      "description": "Skip this many entries of each list (default 0); use paging.next_offset from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢saldeo_list_contractors(company_program_id, limit, offset)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "company_program_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "pattern": "^[^\\u0000-\\u001f\\u007f]+$",
      "description": "The company's COMPANY_PROGRAM_ID, as returned by saldeo_list_companies."
    },
    "limit": {
      "description": "Entries per list in the reply, 1-1000 (default 50). The reply's \"paging\" says how many exist and the next offset.",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    },
    "offset": {
      "description": "Skip this many entries of each list (default 0); use paging.next_offset from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "required": [
    "company_program_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢saldeo_search_documents(company_program_id, document_id, number, nip, guid, ...)

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).

Input Schema

{
  "type": "object",
  "properties": {
    "company_program_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "pattern": "^[^\\u0000-\\u001f\\u007f]+$",
      "description": "The company's COMPANY_PROGRAM_ID, as returned by saldeo_list_companies."
    },
    "document_id": {
      "description": "The Saldeo DOCUMENT_ID.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "number": {
      "description": "The document number, e.g. FV/101/2016.",
      "type": "string",
      "minLength": 1,
      "maxLength": 255
    },
    "nip": {
      "description": "The contractor's VAT number (NIP).",
      "type": "string",
      "minLength": 1,
      "maxLength": 32
    },
    "guid": {
      "description": "The document GUID.",
      "type": "string",
      "minLength": 1,
      "maxLength": 128
    },
    "limit": {
      "description": "Entries per list in the reply, 1-1000 (default 50). The reply's \"paging\" says how many exist and the next offset.",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    },
    "offset": {
      "description": "Skip this many entries of each list (default 0); use paging.next_offset from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "required": [
    "company_program_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢saldeo_list_document_ids(company_program_id, year, month, limit, offset)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "company_program_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "pattern": "^[^\\u0000-\\u001f\\u007f]+$",
      "description": "The company's COMPANY_PROGRAM_ID, as returned by saldeo_list_companies."
    },
    "year": {
      "type": "integer",
      "minimum": 2000,
      "maximum": 2100,
      "description": "Year of the Saldeo folder (the month the document is booked in), e.g. 2026."
    },
    "month": {
      "type": "integer",
      "minimum": 1,
      "maximum": 12,
      "description": "Month of the Saldeo folder, 1-12."
    },
    "limit": {
      "description": "Entries per list in the reply, 1-1000 (default 500). The reply's \"paging\" says how many exist and the next offset.",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    },
    "offset": {
      "description": "Skip this many entries of each list (default 0); use paging.next_offset from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "required": [
    "company_program_id",
    "year",
    "month"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢saldeo_get_documents_by_ids(company_program_id, contracts, invoices_cost, invoices_internal, invoices_material, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "company_program_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "pattern": "^[^\\u0000-\\u001f\\u007f]+$",
      "description": "The company's COMPANY_PROGRAM_ID, as returned by saldeo_list_companies."
    },
    "contracts": {
      "description": "CONTRACT ids.",
      "maxItems": 200,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "invoices_cost": {
      "description": "INVOICE_COST ids (cost invoices).",
      "maxItems": 200,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "invoices_internal": {
      "description": "INVOICE_INTERNAL ids.",
      "maxItems": 200,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "invoices_material": {
      "description": "INVOICE_MATERIAL ids.",
      "maxItems": 200,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "invoices_sale": {
      "description": "INVOICE_SALE ids (sales invoices).",
      "maxItems": 200,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "orders": {
      "description": "ORDER ids.",
      "maxItems": 200,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "writings": {
      "description": "WRITING ids.",
      "maxItems": 200,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "other_documents": {
      "description": "OTHER_DOCUMENT ids.",
      "maxItems": 200,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "limit": {
      "description": "Entries per list in the reply, 1-1000 (default 50). The reply's \"paging\" says how many exist and the next offset.",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    },
    "offset": {
      "description": "Skip this many entries of each list (default 0); use paging.next_offset from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "required": [
    "company_program_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢saldeo_list_invoices(company_program_id, limit, offset)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "company_program_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "pattern": "^[^\\u0000-\\u001f\\u007f]+$",
      "description": "The company's COMPANY_PROGRAM_ID, as returned by saldeo_list_companies."
    },
    "limit": {
      "description": "Entries per list in the reply, 1-1000 (default 50). The reply's \"paging\" says how many exist and the next offset.",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    },
    "offset": {
      "description": "Skip this many entries of each list (default 0); use paging.next_offset from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "required": [
    "company_program_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢saldeo_list_invoice_ids(company_program_id, year, month, limit, offset)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "company_program_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "pattern": "^[^\\u0000-\\u001f\\u007f]+$",
      "description": "The company's COMPANY_PROGRAM_ID, as returned by saldeo_list_companies."
    },
    "year": {
      "type": "integer",
      "minimum": 2000,
      "maximum": 2100,
      "description": "Year of the Saldeo folder (the month the document is booked in), e.g. 2026."
    },
    "month": {
      "type": "integer",
      "minimum": 1,
      "maximum": 12,
      "description": "Month of the Saldeo folder, 1-12."
    },
    "limit": {
      "description": "Entries per list in the reply, 1-1000 (default 500). The reply's \"paging\" says how many exist and the next offset.",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    },
    "offset": {
      "description": "Skip this many entries of each list (default 0); use paging.next_offset from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "required": [
    "company_program_id",
    "year",
    "month"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢saldeo_get_invoices_by_ids(company_program_id, invoices, corrective_invoices, pre_invoices, corrective_pre_invoices, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "company_program_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "pattern": "^[^\\u0000-\\u001f\\u007f]+$",
      "description": "The company's COMPANY_PROGRAM_ID, as returned by saldeo_list_companies."
    },
    "invoices": {
      "description": "INVOICE_ID values.",
      "maxItems": 200,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "corrective_invoices": {
      "description": "CORRECTIVE_INVOICE_ID values.",
      "maxItems": 200,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "pre_invoices": {
      "description": "PRE_INVOICE_ID values.",
      "maxItems": 200,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "corrective_pre_invoices": {
      "description": "CORRECTIVE_PRE_INVOICE_ID values.",
      "maxItems": 200,
      "type": "array",
      "items": {
        "type": "integer",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991
      }
    },
    "limit": {
      "description": "Entries per list in the reply, 1-1000 (default 50). The reply's \"paging\" says how many exist and the next offset.",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    },
    "offset": {
      "description": "Skip this many entries of each list (default 0); use paging.next_offset from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "required": [
    "company_program_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢saldeo_list_bank_statements(company_program_id, limit, offset)

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

Input Schema

{
  "type": "object",
  "properties": {
    "company_program_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "pattern": "^[^\\u0000-\\u001f\\u007f]+$",
      "description": "The company's COMPANY_PROGRAM_ID, as returned by saldeo_list_companies."
    },
    "limit": {
      "description": "Entries per list in the reply, 1-1000 (default 50). The reply's \"paging\" says how many exist and the next offset.",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    },
    "offset": {
      "description": "Skip this many entries of each list (default 0); use paging.next_offset from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "required": [
    "company_program_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢saldeo_list_employees(company_program_id, limit, offset)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "company_program_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "pattern": "^[^\\u0000-\\u001f\\u007f]+$",
      "description": "The company's COMPANY_PROGRAM_ID, as returned by saldeo_list_companies."
    },
    "limit": {
      "description": "Entries per list in the reply, 1-1000 (default 50). The reply's \"paging\" says how many exist and the next offset.",
      "type": "integer",
      "minimum": 1,
      "maximum": 1000
    },
    "offset": {
      "description": "Skip this many entries of each list (default 0); use paging.next_offset from the previous reply.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    }
  },
  "required": [
    "company_program_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded10 tools