factura.bo
Server Details
Emite y consulta facturas electrónicas del SIAT de Bolivia con factura.bo.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-03-26
- URL
TDQS
Scored across 8 tools
Each tool targets a clearly distinct resource and action: account credits, SIAT system status, invoice lookup by CUF, exchange rate, invoice emission, invoice history, sector listing, and NIT validation. The two SIAT-related tools are differentiated by purpose (system health vs. taxpayer NIT status), and invoice lookup versus invoice listing is clear from the descriptions.
All tool names follow a consistent Spanish infinitive-verb + noun pattern in snake_case: consultar_*, listar_*, emitir_*, validar_*. Singular/plural distinctions (consultar_factura vs. listar_facturas) are used semantically rather than inconsistently.
Eight tools is well scoped for a focused Bolivian e-invoicing server, covering emission, lookup, history, validation, reference data, and account status. Each tool has a clear role and there is no obvious bloat.
The core invoice lifecycle is partially covered: emission, listing, and lookup exist, but there is no tool for formal invoice annulment or credit notes, even though emitir_factura warns that reversal requires anulación formal. Additionally, listar_sectores advertises 15 fiscal document types while emitir_factura only supports Sector 1, leaving a notable emission gap.
Available Tools
8 toolsconsultar_creditosBInspect
Estado de la cuenta del usuario en factura.bo: créditos de facturación disponibles, modalidad y estado.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It implies a read-only query via 'consultar' and enumerates the returned fields, but says nothing about authentication requirements, whether the account is scoped to the caller, or rate limits. It is adequate but leaves the behavioral profile largely implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that names the domain and enumerates the returned fields. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema read tool, the description sufficiently explains what the call returns (credits, modality, status). Without annotations, a brief note on permissions or scope would round it out, but nothing critical is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate. The baseline of 4 applies; the description correctly describes a no-argument account-state query.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource: the user's account state in factura.bo, enumerating the three fields returned (available billing credits, modality, and status). It is distinguishable from siblings like consultar_factura or consultar_estado_siat, though it doesn't explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives such as consultar_factura, nor any note on prerequisites (e.g., checking credits before emitir_factura). Usage can only be inferred from the verb 'consultar' and the resource it names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_estado_siatAInspect
Estado en tiempo real del SIAT de Impuestos Nacionales de Bolivia (¿está caído el SIAT?): OPERATIVO, DEGRADADO o CAIDO, con latencia y uptime de 30 días. No requiere autenticación.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose two real traits: the call is unauthenticated ('No requiere autenticación') and the response includes latency plus a 30-day uptime figure. It does not mention rate limits, caching, or data freshness beyond 'tiempo real', which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the resource and the availability question, then the concrete return values and the auth note. Every clause adds information; nothing is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description enumerates the possible status states and the accompanying metrics (latency, 30-day uptime), which is what an agent needs to interpret results. For a no-param read-only probe, nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so there is nothing for the description to disambiguate; the baseline for a zero-param tool applies. The description does not needlessly restate schema content.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific resource ('SIAT de Impuestos Nacionales de Bolivia'), the verb ('Estado en tiempo real') and the exact return domain (OPERATIVO, DEGRADADO or CAIDO). It is trivially distinguishable from siblings like consultar_factura or consultar_tipo_de_cambio, which target different resources entirely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'¿está caído el SIAT?' frames the concrete use case — a health/availability check — so an agent knows when this tool applies. It does not state explicit exclusions or point to alternatives, but for a zero-parameter status probe no realistic alternative exists among the siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_facturaAInspect
Datos completos de una factura por su CUF: estado, montos, enlaces de descarga del PDF y XML.
| Name | Required | Description | Default |
|---|---|---|---|
| cuf | Yes | Código Único de Factura. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden. It does useful work by enumerating the returned payload (estado, montos, download links) in the absence of an output schema, but it never states that this is a read-only operation, what happens if the CUF is unknown, or any auth/rate-limit behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that states the lookup key first and then the payload. No filler and no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read lookup with no output schema, the description compensates by listing the return fields an agent can expect. It falls slightly short on error behavior (invalid or nonexistent CUF) and on the absence of an explicit read-only statement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (cuf) and the schema already describes it at 100% coverage as 'Código Único de Factura'. The description adds no format, length, or validation detail beyond what the schema provides, so it is a baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (consultar/datos completos) and resource (factura), scoped by the CUF key and enumerating the returned fields (estado, montos, enlaces PDF/XML). It implicitly separates itself from listar_facturas by being a single-invoice lookup by CUF, but never names that sibling to make the distinction explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the phrase 'por su CUF' signals you must already hold a CUF, and the field list hints at when this tool beats a listing. There is no explicit when-to-use/when-not guidance and no mention of listar_facturas or consultar_estado_siat as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
consultar_tipo_de_cambioAInspect
Tipo de cambio oficial del día del Banco Central de Bolivia: dólar (USD/BOB) y UFV. No requiere autenticación.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden and does disclose key traits: it is a read-only consultation of the official daily rate, it returns two specific series (USD/BOB and UFV), and it needs no authentication. It omits rate limits and the exact response shape, but for a zero-parameter lookup that is a modest gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One line identifies the source and the two quoted values, a second line removes the auth question. Both sentences earn their place and the essential information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param, no-output-schema lookup, the description covers the source, the currencies returned, and the auth requirement, which is enough for an agent to call it correctly. It could additionally note whether the result includes a date/fetch timestamp, but nothing blocking is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description correctly signals that the tool is parameterless by scoping itself to the day's official rate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (official exchange rate from Banco Central de Bolivia), a scope (the day's rate), and the exact values returned (USD/BOB and UFV). This is clearly distinguishable from all siblings, which handle invoicing, credits, NIT validation, and SIAT status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"No requiere autenticación" removes a practical barrier and "del día" implies a daily refresh, but there is no explicit statement of when to call this versus reusing a cached rate, nor any reference to alternatives. Usage is implied by the domain rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
emitir_facturaAInspect
Emite una factura fiscal de Compra y Venta (Sector 1) ante el SIAT de Bolivia. IMPORTANTE: antes de llamar esta herramienta muestra al usuario el resumen completo (cliente, ítems, precios y total) y espera su confirmación explícita — el documento emitido es fiscalmente válido y solo puede revertirse con una anulación formal. Devuelve el CUF, número de factura, monto en literal y los enlaces del PDF.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | ||
| cliente | Yes | ||
| sucursal | No | ||
| metodo_pago | No | 1=Efectivo, 2=Tarjeta, 7=Transferencia. | |
| punto_venta | No | ||
| actividad_economica | Yes | Código CAEB de 6 dígitos de la actividad del emisor. Ej: 620000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that the emitted document is fiscally valid and can only be undone via formal annulment — a critical irreversibility warning. It omits other operational traits such as SIAT credential/auth requirements or failure modes (e.g., rejected NIT or offline state), which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with what the tool does and immediately followed by the mandatory confirmation gate and the return payload. No sentence is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Return values are enumerated (CUF, invoice number, amount in words, PDF links), which is necessary since there is no output schema, and the confirmation workflow is spelled out. But for a 6-parameter tool with nested objects and only 33% schema coverage, the description leaves too much of the invocation surface undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% across 6 parameters including a nested items array and cliente object, so the description needs to compensate but does not. It only loosely gestures at 'cliente, ítems, precios y total' for the confirmation summary and says nothing about actividad_economica codes, sucursal/punto_venta defaults, or metodo_pago effects.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it issues a fiscal Compra y Venta invoice against Bolivia's SIAT. The scope qualifier ('Sector 1') and the mention of the emitted fiscal document clearly separate it from the query-oriented siblings such as consultar_factura and listar_facturas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit precondition for calling: show the user the full summary and wait for confirmation. However, it never names an alternative for read-only or draft scenarios, nor states when this tool should not be used, so the routing guidance is contextual rather than exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listar_facturasBInspect
Historial de facturas emitidas por el usuario, de la más reciente a la más antigua. Filtros opcionales por fecha y estado.
| Name | Required | Description | Default |
|---|---|---|---|
| desde | No | Fecha inicial YYYY-MM-DD. | |
| hasta | No | Fecha final YYYY-MM-DD. | |
| estado | No | ||
| limite | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description must carry the full behavioral burden, and it does disclose ordering and per-user scoping. However, it omits material behavior: whether annulled invoices are included by default (the estado enum implies yes), that results are capped by a default limit of 20 (max 100), and that this is a read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences with the resource, scope, ordering, and filter availability front-loaded; nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-annotation, no-output-schema listing tool, the description covers scope and ordering but leaves pagination behavior and default result-set composition unexplained, which an agent needs to page through history correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
At 50% schema coverage the description should compensate, but it only echoes the two documented filters ('por fecha y estado') without clarifying formats or what OFFLINE/ANULADA mean in results. The 'limite' parameter is undocumented in both schema and description, so an agent has no signal that pagination exists or defaults to 20.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('listar/historial de facturas') plus scope (invoices emitted by the user) and ordering (newest to oldest), which distinguishes it from the singular sibling consultar_factura. It never names that sibling or explicitly contrast the two, so it stops 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a browsing/history use case via 'Historial' and notes the filters are optional, but it gives no explicit when-to-use guidance and no exclusion such as 'use consultar_factura to fetch a single invoice by ID' or emitir_factura to create one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listar_sectoresAInspect
Lista los 15 tipos de documento fiscal (sectores SIAT) que soporta factura.bo y el endpoint de cada uno.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It discloses useful behavior — exactly 15 items are returned and each includes an endpoint — which tells the agent this is a fixed-size catalog read rather than a filtered query. It does not state whether results are static/cached, ordered, or what the response shape is beyond 'endpoint'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that identifies the verb, the count, the domain, and the payload. No filler; slightly terse given the missing usage guidance, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only catalog tool with no annotations and no output schema, the description conveys enough: what is listed, how many, and that endpoints come with each entry. Lacking only return-format details, which are low risk here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema baseline of 4 applies. Nothing in the description conflicts with the empty input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Lista los 15 tipos de documento fiscal (sectores SIAT)') and disambiguates the vague tool name 'sectores' by explaining it means fiscal document types. It also names the platform (factura.bo) and the returned companion data (endpoint of each). No sibling does anything similar, so differentiation is implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer it should call this to discover which document type/endpoint to use before emitting an invoice, but the description never says when to use it or that it takes no arguments. There is no explicit exclusion or alternative, though no sibling overlaps meaningfully.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validar_nitAInspect
Verifica en tiempo real ante el SIAT si un NIT boliviano está activo para recibir facturas. Úsala antes de emitir una factura con NIT.
| Name | Required | Description | Default |
|---|---|---|---|
| nit | Yes | NIT a verificar. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. It usefully adds that the check is 'en tiempo real ante el SIAT', signaling an external, live dependency (latency/availability implications). But it says nothing about error handling, what an inactive/invalid NIT yields, or whether the call is strictly read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, purpose front-loaded followed by the usage trigger, with zero filler. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool this is mostly adequate, but with no annotations and no output schema, the description should clarify return semantics (active/inactive, validity) and failure behavior. It implies the check outcome conceptually but leaves the response shape and edge cases unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the single 'nit' integer parameter is fully documented in the schema. The description adds no format or syntax detail (e.g., how the NIT integer is formed), so baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Verifica') and resource ('NIT boliviano') with precise scope: real-time validation against SIAT of active status to receive invoices. An agent can clearly distinguish this validation step from the mutation tool emitir_factura.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent when to use it: 'Úsala antes de emitir una factura con NIT', anchoring it as a pre-check before invoicing. However, it does not name alternatives or exclusions (e.g., how it differs from consultar_estado_siat), leaving some sibling ambiguity.
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.
8 tool updates
- First observed
consultar_creditos - First observed
consultar_estado_siat - First observed
consultar_factura - First observed
consultar_tipo_de_cambio - First observed
emitir_factura - First observed
listar_facturas - First observed
listar_sectores - First observed
validar_nit
Related MCP Connectors
Emite facturas, notas y retenciones del SRI de Ecuador con lenguaje natural.
Emite y consulta comprobantes electrónicos del SRI (Ecuador) en tu cuenta de Ecuafact. OAuth 2.1.
Facturación electrónica chilena (SII), cobranza, conciliación bancaria y reportes de ventas.
- CefidiaOAuthcom.cefidia
Issue, sign and manage Mexican CFDI 4.0 e-invoices, complements and credit notes.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to issue Peruvian electronic invoices (factura/boleta) declared to SUNAT via Nubefact. Supports creating, querying, and canceling invoices with automatic IGV tax computation.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to issue and query Paraguay SIFEN e-Kuatia electronic invoices through FacturaSend, handling IVA math and stateless forwarding.MIT
- FlicenseNot gradedqualityDmaintenanceEnables validation and PDF rendering of Guatemalan FEL invoices from XML files. Supports single file processing and batch operations with branded PDF output for local tax compliance workflows.-

Tupana MCPofficial
AlicenseNot gradedqualityAmaintenanceEnables AI agents to manage Chilean electronic invoicing with the SII, collections, bank reconciliation, and accounting through OAuth-secured remote tools. Supports drafting, previewing, and emitting tax documents, plus reports, tax summaries, and SII company data lookups.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.