# contix herramientas

> Free no-auth tools for Spain: validate IBAN, EU VAT check (VIES), Modelo 303 sums, Veri*factu dates.

- name: es.contix/herramientas
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 85/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/es.contix%2Fherramientas
- tools: https://api.protogrid.dev/v1/servers/es.contix%2Fherramientas/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "herramientas": {
      "type": "http",
      "url": "https://api.contix.es/api/v1/mcp/herramientas"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% +updated-19d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 85/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 86 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 6 of 6 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: validate_spanish_tax_id (destructiveHint, idempotentHint); calculate_vat (destructiveHint, idempotentHint); check_vat_number (destructiveHint, idempotentHint); …
- pass `tools.token_cost`: about 1,212 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: 2 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 6, about 1,212 tokens to load them all
- tool set hash: 20f90abe771173d43a7dfc90aaf70343
- tools last changed: 2026-10-04T18:05:17.890Z
- badge: [![protogrid quality](https://protogrid.dev/badge/es.contix/herramientas.svg)](https://protogrid.dev/servers/es.contix/herramientas)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-04 `validate_spanish_tax_id` added
  - Two modes in one input. If `valor` is only 1-8 digits, computes the DNI check letter and returns the full 8-digit-plus-letter DNI (digits are left-padded with zeros). If `valor` is a full document, validates its check character: DNI (8 digits + letter), NIE (X/Y/Z + 7 digits + letter) or CIF (entity letter + 7 digits + check digit or letter, with the entity type per Orden EHA/451/2008). Tolerates spaces, dots, dashes and an ES prefix. Pure arithmetic: it does NOT confirm the document exists, is active or belongs to the person who gave it.
- 2026-10-04 `calculate_vat` added
  - Compute the taxable base, VAT (IVA) amount, optional recargo de equivalencia and optional IRPF withholding from an amount. By default `importe` is the taxable base (sin IVA). With incluye_iva=true, `importe` is the TOTAL with VAT already included and the base is derived backwards (quitar IVA / reverse VAT). It only applies the rates it is given: it does NOT decide which VAT or IRPF rate applies to a case.

Full history: https://api.protogrid.dev/v1/servers/es.contix%2Fherramientas/changes

## Remotes

- https://api.contix.es/api/v1/mcp/herramientas (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (6)

- `calculate_modelo_303`: Add up the boxes (casillas) of the Spanish quarterly VAT return Modelo 303 with the formulas printed on the official AEAT form: 27, 45, 46, 64, 66, 87, 69 and 71. Input are the tax amounts (cuotas) per box, e.g. {"09": 17430, "29": 9870}. It only sums what it is given: it does not decide which rate or deduction applies and it is not a tax return.
- `calculate_vat`: Compute the taxable base, VAT (IVA) amount, optional recargo de equivalencia and optional IRPF withholding from an amount. By default `importe` is the taxable base (sin IVA). With incluye_iva=true, `importe` is the TOTAL with VAT already included and the base is derived backwards (quitar IVA / reverse VAT). It only applies the rates it is given: it does NOT decide which VAT or IRPF rate applies to a case.
- `check_vat_number`: Look up an EU VAT number in the European Commission's VIES registry. Returns what the registry says: whether the number exists and, where the member state publishes it, the name and address. It draws NO tax conclusion. VIES is often down; that is reported as disponible=false, which is NOT the same as an invalid number.
- `get_obligation_dates`: Deadlines from the published Spanish rules: Veri*factu (RD 1007/2023, dates of RD-ley 15/2025) and mandatory B2B e-invoicing (RD 238/2026, counted from the ministerial order, provisional while the order is a draft). Information about the rules, not advice.
- `validate_iban`: Check whether an IBAN is well formed: country length (SWIFT IBAN registry) and ISO 13616 check digits. For Spanish IBANs also the two account check digits (DC) and the bank (entidad) with its BIC from the Banco de España registry. A 20-digit Spanish account number (CCC) is converted to its IBAN. Pure arithmetic: it does NOT confirm that the account exists or who owns it.
- `validate_spanish_tax_id`: Two modes in one input. If `valor` is only 1-8 digits, computes the DNI check letter and returns the full 8-digit-plus-letter DNI (digits are left-padded with zeros). If `valor` is a full document, validates its check character: DNI (8 digits + letter), NIE (X/Y/Z + 7 digits + letter) or CIF (entity letter + 7 digits + check digit or letter, with the entity type per Orden EHA/451/2008). Tolerates spaces, dots, dashes and an ES prefix. Pure arithmetic: it does NOT confirm the document exists, is active or belongs to the person who gave it.
