← Back to search

io.github.matematicsolutions/es-eli-mcp

matematicsolutions Scanned 1d ago

MCP server for Spanish BOE consolidated legislation, grounded by id/ELI with verifiable citations.

C
71.6 / 100

Versions

0.1.0latest
first seen Jun 30, 2026
PermissionsTool SafetyAuthAnnotationsCode QualityStabilitySpecVuln HistoryAuthorTransparencyCommunity

Tools 12

es_get_act
annotations: none low

Fetch consolidated-law metadata from BOE by id. Args: boe_id: a BOE identifier, e.g. ``"BOE-A-2018-16673"``. Returns: ``Act`` with ``eli_uri``, ``human_readable_citation``, ``source_url``.

boe_id str
es_get_index
annotations: none low

List the block index (articles, titles) of a consolidated law. Args: boe_id: a BOE identifier, e.g. ``"BOE-A-2018-16673"``. Returns: ``IndexResult`` with ``blocks`` (each ``id`` is usable as ``block_id`` in es_get_text).

boe_id str
es_get_text
annotations: none low

Fetch the consolidated text (XML) of a law, whole or by block. Args: boe_id: a BOE identifier, e.g. ``"BOE-A-2018-16673"``. block_id: optional block id from ``es_get_index`` (e.g. ``"a1"`` for Articulo 1). Omit for the full consolidated text (can be large). Returns: ``LawText`` with ``eli_uri``, ``human_readable_citation``, ``source_url`` and ``content`` (XML).

boe_id str block_id string
es_browse_gazette
annotations: none low

List documents published in the official BOE gazette on a date. Args: date: the publication date as ``YYYYMMDD`` (e.g. ``"20181206"``). Returns: ``GazetteResult`` with the documents (``id`` + ``titulo``) published that day.

date str
es_get_constitutional_ruling
annotations: none low

Fetch a Tribunal Constitucional ruling (Sentencia/Auto/Declaracion) by internal id. Args: resolution_id: the internal Sistema HJ sequential id (e.g. ``"6670"`` for STC 31/2010). Get this id either from ``es_search_constitutional`` or from a hyperlink inside another ruling's text (``.../Resolucion/Show/{id}``). Returns: ``ConstitutionalRuling`` with ``ecli``, ``human_readable_citation`` (e.g. "STC 31/2010, de 28 de junio"), ``source_url``, ``encabezamiento`` (summary of the case) and ``fallo`` (the operative ruling/holding).

resolution_id str
es_search_constitutional
annotations: none low

Resolve a Tribunal Constitucional citation (number + year) to the full ruling. Args: numero: the citation number, e.g. ``"31"`` for "STC 31/2010". anno: the citation year, e.g. ``"2010"``. tipo: one of ``"SENTENCIA"`` (default, -> STC), ``"AUTO"`` (-> ATC), or ``"DECLARACION"`` (-> DTC). Returns: ``ConstitutionalRuling`` for the matching resolution (same shape as ``es_get_constitutional_ruling``).

anno str tipo str numero str
es_search_tax_rulings
annotations: none low

Search DGT tax rulings (consultas tributarias) by free text and/or date. Args: texto: free-text query over the ruling corpus (e.g. ``"aerotermia"``). fecha_desde: earliest ``fecha salida``, ``dd/mm/aaaa``. fecha_hasta: latest ``fecha salida``, ``dd/mm/aaaa`` (requires fecha_desde). database: ``"vinculantes"`` (default, V-numbers, binding) or ``"generales"``. page: 1-based results page (20 hits per page). Returns: ``TaxRulingSearchResult`` with ``total`` and hits carrying ``num_consulta`` (feed it to ``es_get_tax_ruling`` for the full ruling).

page int texto string database str fecha_desde string fecha_hasta string
es_get_tax_ruling
annotations: none low

Fetch a full DGT tax ruling by its official number. Args: numero_consulta: the official NUM-CONSULTA, e.g. ``"V0001-25"`` (vinculante) or ``"0001-03"`` (general). Returns: ``TaxRuling`` with ``normativa``, ``descripcion_hechos``, ``cuestion_planteada``, the full ``contestacion``, ``human_readable_citation`` and ``source_url``.

numero_consulta str
es_search_teac_doctrine
annotations: none low

Search TEAC doctrine (DYCTEA criterios) by RG segments and/or date range. Args: sede: RG sede segment, e.g. ``"00"`` (TEAC) - first part of RG 00/07082/2025. numero: RG claim number segment, e.g. ``"07082"``. anno: RG year segment, e.g. ``"2025"``. fecha_desde: earliest resolution date, ``dd/mm/aaaa``. fecha_hasta: latest resolution date, ``dd/mm/aaaa``. page: 1-based results page (10 hits per page, portal caps display at 100). Returns: ``TeacDoctrineSearchResult`` with ``total`` and hits carrying ``criterio_id`` (feed it to ``es_get_teac_criterio``). No free-text search exists on DYCTEA.

anno string page int sede string numero string fecha_desde string fecha_hasta string
es_get_teac_criterio
annotations: none low

Fetch one TEAC criterio (with the full resolution text) by its DYCTEA id. Args: criterio_id: the DYCTEA id from ``es_search_teac_doctrine``, e.g. ``"00/07082/2025/00/0/1"``. Returns: ``TeacCriterioResult`` with ``asunto``, ``criterio``, ``referencias_normativas``, the full ``texto_resolucion``, ``human_readable_citation`` and ``source_url``.

criterio_id str
es_search_aepd_resolutions
annotations: none low

Search AEPD (Spanish DPA) resolutions by full text and/or signature date. Args: texto: full-text query (Solr), e.g. ``"videovigilancia"`` - an expediente number also works as an exact query. fecha_desde: earliest signature date, ``dd/mm/aaaa``. fecha_hasta: latest signature date, ``dd/mm/aaaa``. page: 1-based results page (10 hits per page). Returns: ``AepdSearchResult`` with ``total`` and hits carrying ``expediente`` and the full-text ``pdf_url`` permalink.

page int texto string fecha_desde string fecha_hasta string
es_get_aepd_resolution
annotations: none low

Resolve an AEPD expediente number to its resolution and full-text PDF permalink. Args: expediente: the AEPD procedure number, e.g. ``"PS-00615-2025"`` (PS = sanciones, PD = derechos, AI = actuaciones de investigacion). Returns: ``AepdResolutionModel`` with ``pdf_url`` (the full resolution PDF), ``fecha_firma``, ``human_readable_citation`` and ``source_url``.

expediente str

Permissions 3

network medium
Server uses network capabilities via: httpx, urllib
filesystem low
Server uses filesystem capabilities via: open(), os, pathlib
env_vars low
Server uses env_vars capabilities via: os.environ

Scan Findings 51

low
Tool 'es_get_act' has no annotations annotation_checker · 100%
low
Tool 'es_get_index' has no annotations annotation_checker · 100%
low
Tool 'es_get_text' has no annotations annotation_checker · 100%
low
Tool 'es_browse_gazette' has no annotations annotation_checker · 100%
low
Tool 'es_get_constitutional_ruling' has no annotations annotation_checker · 100%
low
Tool 'es_search_constitutional' has no annotations annotation_checker · 100%
low
Tool 'es_search_tax_rulings' has no annotations annotation_checker · 100%
low
Tool 'es_get_tax_ruling' has no annotations annotation_checker · 100%
low
Tool 'es_search_teac_doctrine' has no annotations annotation_checker · 100%
low
Tool 'es_get_teac_criterio' has no annotations annotation_checker · 100%
low
Tool 'es_search_aepd_resolutions' has no annotations annotation_checker · 100%
low
Tool 'es_get_aepd_resolution' has no annotations annotation_checker · 100%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
medium
Vulnerable dependency: fastmcp@3.4,<4 (GHSA-5h2m-4q8j-pqpj) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@3.4,<4 (GHSA-c2jp-c369-7pvx) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@3.4,<4 (GHSA-m8x7-r2rg-vh5g) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@3.4,<4 (GHSA-mxxr-jv3v-6pgc) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@3.4,<4 (GHSA-rcfx-77hg-w2wv) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@3.4,<4 (GHSA-rj5c-58rq-j5g5) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@3.4,<4 (GHSA-rww4-4w9c-7733) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@3.4,<4 (GHSA-vv7q-7jx5-f767) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@3.4,<4 (PYSEC-2026-1364) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@3.4,<4 (PYSEC-2026-1365) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@3.4,<4 (PYSEC-2026-2474) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@3.4,<4 (PYSEC-2026-2475) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@3.4,<4 (PYSEC-2026-2476) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@3.4,<4 (PYSEC-2026-338) dependency_analyzer · 95%
medium
Vulnerable dependency: httpx@0.27,<1 (GHSA-h8pj-cxx2-jfg2) dependency_analyzer · 95%
medium
Vulnerable dependency: httpx@0.27,<1 (PYSEC-2022-183) dependency_analyzer · 95%
medium
Vulnerable dependency: diskcache@5.6 (GHSA-w8v5-vhqr-4h9v) dependency_analyzer · 95%
medium
Vulnerable dependency: diskcache@5.6 (PYSEC-2026-2447) dependency_analyzer · 95%
info
pyproject.toml metadata manifest_parser · 100%
info
Tool: es_get_act manifest_parser · 90%
info
Tool: es_get_index manifest_parser · 90%
info
Tool: es_get_text manifest_parser · 90%
info
Tool: es_browse_gazette manifest_parser · 90%
info
Tool: es_get_constitutional_ruling manifest_parser · 90%
info
Tool: es_search_constitutional manifest_parser · 90%
info
Tool: es_search_tax_rulings manifest_parser · 90%
info
Tool: es_get_tax_ruling manifest_parser · 90%
info
Tool: es_search_teac_doctrine manifest_parser · 90%
info
Tool: es_get_teac_criterio manifest_parser · 90%
info
Tool: es_search_aepd_resolutions manifest_parser · 90%
info
Tool: es_get_aepd_resolution manifest_parser · 90%
info
Required env vars (8) manifest_parser · 80%
info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
medium
Permission: network access detected permission_analyzer · 90%
low
Permission: filesystem access detected permission_analyzer · 80%
low
Permission: env_vars access detected permission_analyzer · 90%
info
No dependency files found for SBOM generation sbom_generator · 100%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%