Skip to main content
Glama
mjgmario

Spanish Public Data MCP

by mjgmario

Spanish Public Data MCP

CI Integration Tests Coverage Python 3.11+

MCP server for querying Spanish government open data APIs.

Overview

Spanish Public Data MCP provides LLM-friendly tools for querying Spanish government data on-the-fly:

  • BDNS - National Grants Database (grants and subsidies)

  • BOE - Official Gazette (consolidated legislation)

  • BORME - Company Registry Gazette (company acts)

  • INE - National Statistics Institute (official statistics)

  • datos.gob.es - National Open Data Catalog (40,000+ datasets)

Architecture: On-the-fly queries to official APIs. No database required.

Total: 26 MCP tools | 211 tests | 53%+ coverage

Related MCP server: mcp-brasil

Installation

# Clone repository
git clone https://github.com/mjgmario/spanish-public-info-radar-mcp.git
cd spanish-public-data-mcp

# Install with uv (recommended)
uv sync

# For development
uv sync --extra dev

Quick Start

Option 1: Run directly (development/testing)

# Install dependencies
uv sync

# Run MCP server (HTTP/SSE mode)
uv run python -m public_radar

# Or on a specific port
uv run python -m public_radar --port 9000

# Or in stdio mode (for Claude Desktop)
uv run python -m public_radar --stdio

Option 2: With Docker

# Build and run
docker-compose up -d

# View logs
docker-compose logs -f

# Stop
docker-compose down

Verify it works

# Health check (HTTP mode)
curl http://localhost:8080/health

# Should return: {"status":"healthy","service":"spanish-public-data-mcp"}

Claude Desktop Integration

Step 1: Locate your config file

The Claude Desktop configuration file is located at:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

Step 2: Add the MCP server configuration

Open the config file and add the following:

{
  "mcpServers": {
    "spanish-public-data": {
      "command": "uv",
      "args": ["run", "python", "-m", "public_radar", "--stdio"],
      "cwd": "C:\\Users\\YOUR_USER\\path\\to\\spanish-public-data-mcp"
    }
  }
}

Note: Replace YOUR_USER and the path with your actual installation path.

Step 3: Restart Claude Desktop

Close and reopen Claude Desktop to load the new MCP server.

Step 4: Verify the connection

Ask Claude: "What Spanish public data tools do you have available?"

Claude should respond with information about the 26 available tools.


Available MCP Tools

BDNS (Grants) - 3 tools

Tool

Description

search_grants

Search grant calls by date range and granting body

search_grant_awards

Search awarded grants by date range and beneficiary NIF

get_grant_details

Get detailed information about a specific grant call

BOE (Legislation) - 11 tools

Tool

Description

search_legislation

Search consolidated laws with filters (query, dates, department, legal range, matter)

get_legislation_details

Get metadata of a specific law or regulation (optionally with legal analysis)

get_legislation_text

Get full consolidated text of a law

get_legislation_structure

Get the structure/index of a law (articles, dispositions, annexes)

get_legislation_block

Get a specific block (article, disposition) from a law

get_departments_table

Get list of government departments with codes

get_legal_ranges_table

Get list of legal norm types (Ley, Real Decreto, etc.)

get_matters_table

Get list of subject matters/topics with codes

find_related_laws

Find laws related to a given legislation (modifications, repeals, references)

search_recent_boe

Search BOE publications from the last N days with filters

get_boe_summary

Get the daily BOE summary for a specific date (with filters)

BORME (Company Registry) - 1 tool

Tool

Description

get_borme_summary

Get daily company registry acts for a specific date

INE (Statistics) - 6 tools

Tool

Description

get_ine_operations

List all available statistical operations (IPC, EPA, PIB, etc.)

get_ine_operation

Get details of a specific statistical operation

get_ine_table_data

Get data from a specific statistical table

get_ine_series_data

Get time series data by series code

search_ine_tables

Search for tables within a statistical operation

get_ine_variables

List available variables, optionally filtered by operation

datos.gob.es (Open Data) - 4 tools

Tool

Description

search_open_data

Search datasets in the national open data catalog

get_open_data_details

Get detailed information about a specific dataset

list_open_data_themes

List available themes/categories

list_open_data_publishers

List publishing organizations

General - 1 tool

Tool

Description

get_system_info

Get overview of available data sources and tools


Example Queries for Claude

Here are practical examples of what you can ask Claude once the MCP is connected:

Grants & Subsidies (BDNS)

"Find grants published in the last month"

"Search for grants related to innovation or R&D"

"What grants has the company with NIF B12345678 received?"

"Show me details of grant BDNS 123456"

Legislation (BOE)

"Search for laws about renewable energy"

"What was published in the BOE today?"

"Find legislation about public subsidies from 2023"

"Show me the full text of the data protection law"

Company Registry (BORME)

"What companies were registered in Madrid today?"

"Show me the BORME summary for January 15, 2024"

"Find recent company dissolutions"

Statistics (INE)

"What statistical operations are available from INE?"

"Show me the latest CPI (IPC) data"

"Get unemployment statistics from the EPA survey"

"What is the current inflation rate in Spain?"

"Show me GDP growth data for the last 12 quarters"

"Find tables about population in the Census operation"

Combined Research

"I want to investigate company XYZ. Check:
1. What grants have they received?
2. Any recent BORME entries about them?"

"Find all funding opportunities for renewable energy projects:
1. Current open grants
2. Relevant legislation"

"Give me an economic overview of Spain:
1. Latest unemployment rate (EPA)
2. Current inflation (IPC)
3. Recent GDP growth"

Open Data (datos.gob.es)

"Search for datasets about air quality"

"Find open data from the Madrid city council"

"What data categories are available in datos.gob.es?"

"Show me details of dataset e05068001-mapas-estrategicos-de-ruido"

Tool Parameters Reference

search_grants

{
  "date_from": "2024-01-01",    // Optional: Start date (YYYY-MM-DD)
  "date_to": "2024-12-31",      // Optional: End date (YYYY-MM-DD)
  "granting_body": "E00003901", // Optional: Granting body code
  "limit": 20                   // Optional: Max results (1-100, default 20)
}

search_grant_awards

{
  "date_from": "2024-01-01",      // Optional: Start date
  "date_to": "2024-12-31",        // Optional: End date
  "beneficiary_nif": "B12345678", // Optional: Beneficiary NIF/CIF
  "limit": 20                     // Optional: Max results
}

get_grant_details

{
  "grant_id": "123456"  // Required: BDNS grant ID
}

search_legislation

{
  "query": "energias renovables",  // Required: Search text
  "date_from": "2020-01-01",       // Optional: Start date
  "date_to": "2024-12-31",         // Optional: End date
  "title": "ley energia",          // Optional: Filter by title
  "department_code": "4225",       // Optional: Department code (use get_departments_table)
  "legal_range_code": "ley",       // Optional: Legal range (use get_legal_ranges_table)
  "matter_code": "170",            // Optional: Matter code (use get_matters_table)
  "include_derogated": false,      // Optional: Include repealed laws (default false)
  "offset": 0,                     // Optional: Skip results (pagination)
  "limit": 20                      // Optional: Max results (1-100)
}

get_legislation_details

{
  "legislation_id": "BOE-A-2015-10566"  // Required: BOE legislation ID
}

get_legislation_text

{
  "legislation_id": "BOE-A-2015-10566"  // Required: BOE legislation ID
}

get_legislation_structure

{
  "legislation_id": "BOE-A-2015-10566"  // Required: BOE legislation ID
}

get_legislation_block

{
  "legislation_id": "BOE-A-2015-10566", // Required: BOE legislation ID
  "block_id": "a1"                       // Required: Block ID (e.g., "a1" for article 1)
}

get_departments_table

{}  // No parameters required
{}  // No parameters required

get_matters_table

{}  // No parameters required

get_boe_summary

{
  "date": "2024-01-15"  // Optional: Date (YYYY-MM-DD), defaults to today
}

get_borme_summary

{
  "date": "2024-01-15"  // Optional: Date (YYYY-MM-DD), defaults to today
}

get_ine_operations

{}  // No parameters required

get_ine_operation

{
  "operation_id": "IPC"  // Required: Operation ID or code (e.g., 'IPC', 'EPA', '25')
}

get_ine_table_data

{
  "table_id": "50902",  // Required: Table ID from INE
  "nult": 12            // Optional: Number of last periods (1-100, default 12)
}

get_ine_series_data

{
  "series_code": "IPC251856", // Required: Series code from INE
  "nult": 12                   // Optional: Number of last periods (1-100, default 12)
}

search_ine_tables

{
  "operation_id": "IPC"  // Required: Operation ID to search tables for
}

get_ine_variables

{
  "operation_id": "IPC"  // Optional: Filter variables by operation
}

search_open_data

{
  "query": "air quality",           // Optional: Search text
  "theme": "medio-ambiente",        // Optional: Theme code
  "publisher": "L01280796",         // Optional: Publisher ID
  "limit": 20                       // Optional: Max results (1-100)
}

get_open_data_details

{
  "dataset_id": "e05068001-mapas-estrategicos-de-ruido"  // Required: Dataset ID
}

list_open_data_themes

{}  // No parameters required

list_open_data_publishers

{
  "limit": 50  // Optional: Max results (default 50)
}

Project Structure

src/public_radar/
├── common/          # HTTP client, dates, logging
├── sources/         # API clients (BDNS, BOE, INE, datos.gob.es)
│   ├── bdns.py      # BDNS client (grants)
│   ├── boe.py       # BOE client (legislation, BORME)
│   ├── ine.py       # INE client (statistics)
│   └── datos_gob.py # datos.gob.es client (open data)
├── mcp/             # MCP server and tools
│   ├── server.py    # MCP server + 26 tool handlers
│   └── logging.py   # Tool call logging (JSONL)
├── __init__.py
└── __main__.py      # CLI entry point

tests/
├── unit/            # Unit tests with mocks (168 tests)
├── integration/     # Real API tests (43 tests)
└── fixtures/        # Sample API responses

Configuration

Environment Variables

Variable

Description

Default

MCP_HOST

Host to bind SSE server

0.0.0.0

MCP_PORT

Port for SSE server

8080

MCP_LOGS_DIR

Directory for tool call logs

./logs

LOG_LEVEL

Logging level

INFO

Tool Call Logging

All MCP tool calls are logged to logs/mcp_calls_YYYY-MM-DD.jsonl:

{
  "timestamp": "2024-01-15T10:30:00Z",
  "tool": "search_grants",
  "input": {"date_from": "2024-01-01", "limit": 10},
  "output_summary": {"count": 10, "first_title": "..."},
  "duration_ms": 450,
  "success": true,
  "error": null
}

Logs are automatically rotated (deleted after 7 days).

Docker Deployment

# Start MCP server
docker-compose up -d

# Check health
curl http://localhost:8080/health

# View logs
docker-compose logs -f mcp

# Stop server
docker-compose down

Development

# Install dev dependencies
uv sync --extra dev

# Run tests
uv run pytest

# Run with coverage
uv run pytest --cov

# Run linting
uv run pre-commit run --all-files

# Type checking
uv run mypy src/

Current Test Coverage

  • 211 tests passing (168 unit + 43 integration)

  • 53%+ code coverage (unit tests only)

  • Unit tests for all parsers and tool handlers

  • Integration tests for real API calls (BDNS, BOE, INE, datos.gob.es)

Data Sources

Source

API

Description

BDNS

Swagger

National Grants Database

BOE

Open Data

Official Gazette & Legislation

INE

API Manual

National Statistics Institute

datos.gob.es

API Data

National Open Data Catalog

Troubleshooting

Claude Desktop doesn't see the MCP

  1. Check the config file path is correct

  2. Ensure uv is in your PATH

  3. Verify the cwd path points to the project directory

  4. Restart Claude Desktop completely

API returns empty results

  • BOE/BORME don't publish on weekends or holidays

  • BDNS may have rate limits

  • INE data is updated periodically (monthly, quarterly)

Tool call errors

Check the logs at logs/mcp_calls_YYYY-MM-DD.jsonl for detailed error information.

License

MIT

Available Tools

26 tools
get_boe_summaryB

Get the daily BOE (Official Gazette) summary for a specific date. Supports filtering by section (1, 2A, 2B, 3, 4, 5, T) and department.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate to fetch BOE summary for (YYYY-MM-DD). Defaults to today.
max_itemsNoMaximum number of items to return (default: all items)
section_filterNoFilter by section (e.g., '1', '2A', '2B', '3', '4', '5', 'T')
department_filterNoFilter by department name (partial match, case-insensitive)

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only mentions getting a summary and filtering, but does not disclose pagination behavior (max_items parameter), rate limits, auth requirements, or output format. The description adds minimal behavioral context beyond 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?

The description is a single, clear sentence that front-loads the main purpose. It is appropriately concise, though it could be slightly more structured with separate sentences for usage and behavior.

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

Completeness2/5

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

Given the tool has 4 parameters, no output schema, and no annotations, the description is insufficiently complete. It does not explain the meaning of sections, what the return data looks like, or how max_items affects results. A more comprehensive description would improve usability.

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 baseline is 3. The description mentions filtering by section and department, which is already clear from the schema. It adds no additional semantic value beyond what the parameter descriptions provide.

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?

The description clearly states the verb 'Get', the resource 'daily BOE summary', and specifies filtering by section and department. It distinguishes from sibling tools like get_borme_summary (different gazette) and search_recent_boe (search vs. get).

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 description implies usage for retrieving a daily summary for a specific date with optional filters, but it does not provide explicit guidance on when to use this tool versus alternatives like search_recent_boe or get_borme_summary. No when-not-to-use or prerequisites are mentioned.

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

get_borme_summaryA

Get the daily BORME (Company Registry) summary with company acts for a specific date. Supports filtering by province. Defaults to most recent weekday.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate to fetch BORME summary for (YYYY-MM-DD). Defaults to most recent weekday.
max_itemsNoMaximum number of items to return (default: all items)
province_filterNoFilter by province name (partial match, case-insensitive)

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description bears the burden. It discloses that filtering by province is supported and that the date defaults to the most recent weekday, which covers basic behavior. However, it does not address pagination, error handling, or whether the tool is read-only (likely safe). This is adequate but minimal.

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 two sentences long, front-loaded with the core purpose, and every word adds value. No fluff or repetition.

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

Completeness3/5

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

The description covers input sufficiently but lacks any indication of the output structure (e.g., format, contents of 'company acts'). Given the absence of an output schema, a brief note on return format would improve completeness. The current description is adequate for a simple retrieval 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 coverage is 100%, so each parameter already has a description. The description adds little beyond what the schema provides (e.g., reiterates province filtering and date default). It does not introduce new semantic nuance, meeting the 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?

The description clearly states the tool retrieves the daily BORME summary with company acts for a specific date, specifying the resource and action. It does not explicitly differentiate from sibling tools like get_boe_summary, but the name and context are distinctive enough.

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 description implies usage for BORME data by naming the resource, but offers no explicit guidance on when to use this tool versus alternatives (e.g., get_boe_summary) or when not to use it. No prerequisites or exclusions are mentioned.

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

get_departments_tableA

Get the list of government departments with their codes. Use these codes with search_legislation's department_code filter.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations, the description must disclose behavior. It effectively communicates that this tool is a read-only retrieval of department codes. No additional behavioral details (e.g., data freshness) are needed for such a simple, stateless lookup.

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 sentences with zero wasted words. Every sentence adds unique value: first states the output, second explains usage context.

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?

Given zero parameters and no output schema, the description fully covers what the tool does and its relationship to sibling tools. No additional context is necessary for an agent to select and invoke it correctly.

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?

The input schema has no parameters (100% coverage trivially), so the baseline is 3. The description adds value beyond the schema by specifying the output (list of departments with codes) and its purpose, justifying a higher score.

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?

The description clearly states the tool returns 'the list of government departments with their codes', which is a specific verb+resource. It also distinguishes from sibling tools by explicitly linking to search_legislation's filter.

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

Usage Guidelines5/5

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

The description explicitly tells when to use this tool: 'Use these codes with search_legislation's department_code filter.' This provides clear usage context and directs to an alternative tool for filtering.

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

get_grant_detailsB

Get detailed information about a specific grant call by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
grant_idYesGrant call ID from BDNS

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only says 'get detailed information', implying a read operation, but does not state whether it has side effects, requires authentication, or has rate limits. Even simple read tools benefit from explicit safety cues.

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?

A single 12-word sentence that is front-loaded and contains no fluff. Every word serves the purpose of explaining what the tool does. Ideal length for a simple retrieval tool.

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

Completeness3/5

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

For a simple single-parameter retrieval tool, the description is minimally adequate. However, it lacks any information about the return value (no output schema), error cases, or data freshness. Given the list of sibling tools, additional context about when this is preferred over search_grants would improve completeness.

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 coverage is 100% for the single parameter grant_id, and the description adds only 'by ID', which is already implied by the schema's description 'Grant call ID from BDNS'. The description does not enhance understanding of the parameter's format, source, or constraints beyond what the schema provides.

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?

The description clearly states the verb 'get' and resource 'detailed information about a specific grant call', limited by 'by ID'. This distinguishes it from sibling search and list tools, which return collections rather than a single entity.

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 guidance on when to use this tool versus alternatives. It does not specify prerequisites, when not to use it, or any context about the grant_id format or availability. The agent receives no help in deciding between this and similar tools like search_grants.

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

get_ine_operationA

Get details of a specific INE statistical operation by ID or code.

ParametersJSON Schema
NameRequiredDescriptionDefault
operation_idYesOperation ID or code (e.g., 'IPC', 'EPA', '25')

TDQS

A3.9/5.0
Behavior3/5

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

No annotations provided. Description indicates a read operation, which is consistent with tool name. Does not disclose authentication, rate limits, or behavior for non-existent IDs, but given simplicity, adequate.

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?

Single sentence, no wasted words, front-loaded with action and resource.

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

Completeness3/5

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

Minimal but sufficient for a simple tool. Lacks details on return format or error handling, but with no output schema, more context would be helpful. Still adequate given simplicity.

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 coverage is 100% with a well-described parameter. Description adds no new meaning; 'by ID or code' is already in schema. Baseline score 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?

Description clearly states verb 'Get', resource 'details of a specific INE statistical operation', and method 'by ID or code'. Distinguishes from sibling 'get_ine_operations' which lists multiple operations.

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?

Implicitly clear that this tool is for retrieving details of a single operation, not for listing (use get_ine_operations). No explicit when-not or exclusions, but context with siblings provides sufficient guidance.

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

get_ine_operationsA

Get list of all available INE statistical operations (IPC, EPA, PIB, etc.).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided. Description implies read-only via 'Get list' but does not explicitly state safety, idempotency, or auth requirements. For a simple list tool, this is adequate but not extra helpful.

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?

Single sentence conveying complete purpose with examples. No unnecessary words.

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 tool with no parameters and no output schema, the description sufficiently conveys the tool's purpose. Could optionally hint at output format (e.g., list of codes/names), but current version is adequate.

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?

Zero parameters with 100% schema coverage. Description adds no parameter info, which is acceptable as none exist. Baseline score of 4 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?

Clear verb 'Get list' and specific resource 'all available INE statistical operations' with examples (IPC, EPA, PIB), effectively distinguishing from siblings like get_ine_operation.

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?

Implicitly suggests usage as a starting point to discover available operations before using get_ine_operation or get_ine_series_data. No explicit when-not or alternatives, but context is clear.

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

get_ine_series_dataC

Get time series data from INE by series code.

ParametersJSON Schema
NameRequiredDescriptionDefault
nultNoNumber of last periods to return (default: 12)
series_codeYesSeries code from INE

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, and the description offers no behavioral insights beyond the basic action. It does not disclose return format, pagination, authentication requirements, rate limits, or any side effects. For a data retrieval tool, this is insufficient.

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?

The description is a single sentence of few words, no redundancy. It is front-loaded with the main action. However, it could benefit from a more structured format to list key parameters or usage notes.

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

Completeness2/5

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

Given the simple parameter set and no output schema, the description is too sparse. It does not explain what a 'series code' is, what 'time series data' looks like, or the source (INE). A more complete description would help the agent understand the tool's purpose and usage.

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 both 'series_code' and 'nult' having clear descriptions. The tool description adds no extra meaning beyond repeating 'by series code'. With full schema coverage, baseline of 3 is 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?

The description clearly states 'Get time series data from INE by series code.' It uses a specific verb ('Get') and resource ('time series data from INE'), and the primary parameter 'series_code' is immediately understood. However, it does not explicitly differentiate from siblings like 'get_ine_table_data' or 'get_ine_operation', but the focus on 'series' makes it distinct.

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 guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, typical use cases, or exclusion criteria. The description is a simple functional statement without context.

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

get_ine_table_dataC

Get statistical data from a specific INE table.

ParametersJSON Schema
NameRequiredDescriptionDefault
nultNoNumber of last periods to return (default: 12)
table_idYesTable ID from INE

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as authentication requirements, rate limits, or whether the operation is read-only. The description carries the full burden but fails to add transparency.

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?

The description is a single sentence with no fluff. It is concise but sacrifices completeness for brevity.

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

Completeness2/5

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

Given no output schema and simple inputs, the description could still provide more context about return format or typical usage. It feels incomplete compared to sibling tools.

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 coverage is 100% with descriptions for both parameters. The description adds no extra meaning beyond the schema, so the baseline score of 3 is appropriate.

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

Purpose3/5

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

The description states it gets statistical data from a specific INE table, which is clear but vague. It doesn't specify the nature of the data (e.g., raw table, time series) or distinguish from siblings like get_ine_series_data.

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 guidance on when to use this tool vs alternatives like search_ine_tables or get_ine_series_data. The description lacks context for selecting this tool over siblings.

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

get_ine_variablesC

Get available variables, optionally filtered by operation.

ParametersJSON Schema
NameRequiredDescriptionDefault
operation_idNoOptional operation ID to filter variables. If not provided, returns all variables.

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description must fully disclose behavior. It states the tool retrieves variables with optional filter, but does not indicate whether it is read-only, what the response format is, or any side effects. For a read operation, this is minimally transparent.

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?

The description is a single sentence, front-loaded with purpose. No unnecessary words. However, it could be slightly more informative without harming conciseness.

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

Completeness3/5

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

For a simple tool with one optional parameter and no output schema, the description provides the essential purpose. However, it lacks context about what 'variables' means in the INE domain or what the output looks like, which is needed for completeness.

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 coverage is 100% and the schema describes operation_id as 'Optional operation ID to filter variables. If not provided, returns all variables.' The description adds 'available' which is not in the schema, but otherwise adds no new meaning. Baseline 3 is 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?

The description clearly states the tool retrieves available variables with optional filtering by operation. It uses specific verb and resource, and is distinct from siblings like get_ine_operations (which returns operations) and get_ine_series_data (which returns data series). However, it does not explicitly differentiate from all similar tools.

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 guidance on when to use this tool versus alternatives such as get_ine_table_data or search_ine_tables. The description only mentions optional filtering but provides no context about prerequisites or when to choose this over other INE tools.

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

get_legislation_blockA

Get a specific block (article, disposition, annex) from a law. Use get_legislation_structure first to discover available block IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
block_idYesBlock identifier (e.g., 'a1' for article 1, 'a2' for article 2, 'dd' for derogation disposition)
legislation_idYesLegislation ID from BOE (e.g., BOE-A-2015-10566)

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It states the tool retrieves a block, implying a read operation, but does not mention any potential side effects, permissions, rate limits, or output format. This is minimal but adequate for a simple retrieval tool.

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 sentences, no redundant words. The description is front-loaded with the core purpose and immediately provides usage guidance. Every sentence adds value.

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?

Given the simple tool (2 required params, no output schema, no annotations), the description is mostly complete. It explains what the tool does and how to use it. However, it could mention what the output looks like (e.g., returns block content) since there is no output schema.

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?

The input schema has 100% coverage with clear parameter descriptions. The description adds context by specifying block types (article, disposition, annex), which enhances understanding beyond the schema alone. However, the schema already does a good job, so the added value is moderate.

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 clearly states the verb 'Get' and the resource 'specific block (article, disposition, annex) from a law'. It also references the sibling tool get_legislation_structure, which helps distinguish it, but fails to explicitly differentiate from other sibling tools like get_legislation_details or get_legislation_text.

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 description provides clear guidance to use get_legislation_structure first to discover block IDs. However, it does not mention when not to use the tool or suggest alternative tools besides the one referenced.

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

get_legislation_detailsB

Get metadata and details of a specific law or regulation.

ParametersJSON Schema
NameRequiredDescriptionDefault
legislation_idYesLegislation ID from BOE
include_analysisNoInclude legal analysis (references, modifications, related laws)

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It states 'Get metadata and details' but does not disclose any behavioral traits such as whether the operation is read-only, any authentication requirements, rate limits, or what happens if the legislation ID is invalid.

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

Conciseness3/5

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

The description is a single concise sentence, but it is overly minimal. It front-loads the purpose but omits important context; it is not verbose, but it could be more informative without sacrificing conciseness.

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

Completeness2/5

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

The tool has no output schema and no annotations. The description does not explain what 'metadata and details' includes, how the response is structured, or any edge cases. For a tool with two parameters and moderate complexity, the description is insufficient for complete understanding.

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?

The input schema has 100% description coverage for both parameters. The description adds no additional meaning beyond the schema, but since coverage is high, the baseline score of 3 is appropriate. The tool name implies details, and the schema already describes parameters adequately.

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?

The description clearly states the tool retrieves metadata and details of a specific law or regulation, using a specific verb ('Get') and resource ('metadata and details'). It distinguishes from sibling tools like 'get_legislation_text' or 'get_legislation_block' which likely return different content.

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 guidance on when to use this tool versus alternatives like 'search_legislation' or 'get_legislation_text'. The description does not mention when not to use it or provide comparisons to siblings.

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

get_legislation_structureA

Get the structure/index of a law showing all its blocks (articles, dispositions, annexes). Use this to discover block IDs before fetching specific blocks.

ParametersJSON Schema
NameRequiredDescriptionDefault
legislation_idYesLegislation ID from BOE (e.g., BOE-A-2015-10566)

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose any behavioral details such as read-only nature, authorization needs, rate limits, or side effects. Although the purpose implies a read operation, the tool's behavior is not described beyond its function.

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 exceptionally concise with two sentences: the first defines the purpose, the second provides usage guidance. No wasted words.

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?

Given the tool has one parameter, no annotations, and no output schema, the description adequately explains the output (blocks) and use case (discover block IDs). It could be slightly improved by specifying the return format (e.g., hierarchical list), but overall it is sufficiently complete.

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?

The input schema already describes the single parameter (legislation_id) with an example (BOE-A-2015-10566). The tool description adds no further meaning beyond what the schema provides, so baseline of 3 is appropriate.

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?

The description clearly states the tool gets the structure/index of a law, listing specific block types (articles, dispositions, annexes). It distinguishes itself from siblings like get_legislation_block which fetches specific blocks.

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 description explicitly advises using this tool to discover block IDs before fetching specific blocks, providing clear use context. However, it does not explicitly mention alternatives or when not to use it.

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

get_legislation_textB

Get the full consolidated text of a law or regulation.

ParametersJSON Schema
NameRequiredDescriptionDefault
legislation_idYesLegislation ID from BOE

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It does not specify return format (e.g., plain text vs. structured), potential size constraints, or error conditions. Minimal information provided.

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?

Single sentence, no unnecessary words, front-loaded. Appropriate conciseness for a simple function.

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

Completeness3/5

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

Given the tool's simplicity (1 param, no output schema), the description is somewhat complete but lacks details on return value and error handling. Context around when to use vs. siblings 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% (the parameter is described as 'Legislation ID from BOE'). The description adds no additional meaning beyond the schema, so baseline 3 is appropriate.

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?

The description clearly states the tool retrieves the full consolidated text of a law or regulation, distinguishing it from sibling tools like search_legislation (for searching) or get_legislation_details (likely metadata). Verb and resource are specific.

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 guidance is provided on when to use this tool versus alternatives like get_legislation_block or get_legislation_structure. The description does not mention prerequisites or limitations.

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

get_matters_tableA

Get the list of subject matters/topics with their codes. Use these codes with search_legislation's matter_code filter.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.8/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool returns codes in a list format and that they are intended for a specific filter. However, it does not describe if the data is static or dynamic, or any side effects. Given the simplicity (0 parameters), a 4 is appropriate.

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 two sentences with no wasted words. It front-loads the purpose and then provides cross-tool context. Every sentence serves a clear function.

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?

The tool is simple: no parameters, no output schema. The description effectively communicates what it returns and how to use the result with a sibling tool. This provides complete guidance for an AI agent.

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

Parameters5/5

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

The input schema contains no parameters, and schema description coverage is 100%. Per the rules, 0 parameters gives a baseline of 4, and the description adds no parameter info because none exist. The description is fully adequate without needing to explain parameters.

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?

The description clearly states the tool retrieves a list of subject matters/topics with their codes, using specific verbs and resource. It distinguishes itself from sibling tools by explicitly referencing its use with search_legislation's matter_code filter.

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

Usage Guidelines5/5

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

The description provides explicit usage context: it tells the agent when to use this tool (to get codes for search_legislation) and implies when not to use it (for other filters). No alternative tools are mentioned but the connection to search_legislation is clear.

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

get_open_data_detailsA

Get detailed information about a specific dataset from datos.gob.es including distributions (download formats).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_idYesDataset identifier (e.g., 'e05068001-mapas-estrategicos-de-ruido')

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions the tool returns detailed info and distributions, but does not disclose any behavioral traits such as error handling, pagination, or limitations. For a simple retrieval tool, this is minimal transparency.

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 a single sentence with no unnecessary words. It is front-loaded with the main action and is as concise as possible.

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?

The tool is simple with one parameter and no output schema. The description explains the tool's purpose and mentions what is included (distributions). It could be slightly more complete by hinting at the output structure, but it is adequate for the low complexity.

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 coverage is 100% for the single parameter 'dataset_id', which already includes a description and example. The tool description adds context about the source ('datos.gob.es') and mentions distributions, but does not significantly enhance parameter understanding beyond the schema.

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?

The description clearly states the tool's function: 'Get detailed information about a specific dataset from datos.gob.es', including specific content ('distributions (download formats)'). This verb+resource specification is precise and differentiates it from sibling tools like 'search_open_data', which is for searching.

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 description implies when to use this tool (when you have a dataset ID and want details), but does not provide explicit guidance on alternatives or when not to use it. No when-to-use or when-not-to-use conditions are stated.

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

get_system_infoA

Get overview of available data sources and tools. Call this first to understand what data is available.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It states it provides an overview but does not explicitly disclose that it is a safe, read-only operation. An explicit note about being non-destructive would improve transparency.

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 sentences, no wasted words, front-loaded with the action. Efficient and clear.

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?

Given zero parameters and no output schema, the description adequately informs the agent to call it first for orientation. Could briefly mention the type of overview returned, but sufficient for a discovery tool.

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?

The tool has no parameters and schema coverage is 100%, so the baseline is 4. No additional parameter description is needed.

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?

The description clearly states the tool's purpose: 'Get overview of available data sources and tools' with a specific verb and resource. It distinguishes itself from sibling tools by advising to call it first.

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 description explicitly says 'Call this first to understand what data is available', providing clear usage context. It doesn't specify when not to use it, but the advice is strong enough for guidance.

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

list_open_data_publishersB

List publishers/organizations in datos.gob.es (government agencies that publish datasets).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results to return

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description bears full responsibility for behavioral disclosure. It does not mention pagination, ordering, or the structure of the response (e.g., whether it returns full objects or just names). The limit parameter suggests pagination but is not clarified.

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 a single 12-word sentence with no extraneous information. It is highly efficient and front-loaded.

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

Completeness3/5

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

Given the tool's simplicity (one optional parameter, no output schema, no annotations), the description is minimalist but adequate. However, it could be improved by noting the return format or sorting behavior. It meets the minimum but has clear gaps.

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?

The single parameter 'limit' is already well-documented in the schema with a description, default, and constraints. Schema coverage is 100%, so the baseline is 3. The description adds no additional meaning beyond what the schema provides.

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?

The description explicitly states the verb 'List', the resource 'publishers/organizations', and the context 'datos.gob.es (government agencies that publish datasets)'. It clearly distinguishes this tool from sibling tools like list_open_data_themes or search_open_data.

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 guidance is provided on when to use this tool versus alternatives such as search_open_data. There is no mention of when not to use it or of any prerequisites. The description only implies usage for retrieving all publishers.

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

list_open_data_themesA

List available themes/categories in datos.gob.es (e.g., medio-ambiente, economia, salud, educacion).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It does not state that the tool is read-only, idempotent, or any potential side effects. The lack of safety cues leaves agents guessing about impact.

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?

A single, well-structured sentence that immediately conveys the action, resource, and examples. Every word earns its place; no redundancy or 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 parameterless tool with no output schema, the description covers the essential purpose and provides illustrative examples. It could be improved by noting whether the list is flat or hierarchical, but it is sufficiently complete for typical use.

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?

With zero parameters and 100% schema description coverage, the baseline is 4. The description adds value by listing example themes, which helps agents understand the output format. No further parameter explanation is needed.

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?

The description explicitly states the verb 'List', the resource 'available themes/categories in datos.gob.es', and provides concrete examples (e.g., medio-ambiente, economia), clearly distinguishing it from sibling tools like list_open_data_publishers or search_open_data.

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 description implies usage as a catalog of themes but does not explicitly state when to use it versus alternatives. For a simple list tool with no parameters, the context is clear enough, but explicit guidance on when it's a prerequisite for other tools is missing.

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

search_grant_awardsA

Search awarded grants (concesiones) from BDNS. Filter by date range and beneficiary NIF.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results to return
date_toNoEnd date for filtering (YYYY-MM-DD format)
date_fromNoStart date for filtering (YYYY-MM-DD format)
beneficiary_nifNoFilter by beneficiary NIF/CIF (Spanish tax ID)

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It does not disclose behavioral traits such as pagination, rate limits, or if results are complete or partial. Only basic filter capabilities are mentioned.

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 a single sentence with about 15 words, concise and front-loaded with the verb and resource. No wasted words.

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

Completeness3/5

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

For a search tool with no output schema, the description is moderately complete but lacks mention of return structure or pagination behavior. Given the high schema coverage and simple parameters, it is adequate but not fully comprehensive.

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 baseline is 3. The description summarizes filtering options (date range, beneficiary NIF) but adds little beyond what the schema already provides with exact formats and defaults.

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?

The description clearly states the tool searches awarded grants from BDNS with filters by date range and beneficiary NIF. It distinguishes from sibling 'search_grants' which likely searches for open grant calls.

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 description provides clear context for when to use (searching awarded grants) and mentions filtering options. However, it does not explicitly state when not to use or direct to alternatives like search_grants for open calls.

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

search_grantsB

Search grant calls (convocatorias) from BDNS. Filter by date range and granting body.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results to return
date_toNoEnd date for filtering (YYYY-MM-DD format)
date_fromNoStart date for filtering (YYYY-MM-DD format)
granting_bodyNoFilter by granting body/organization code

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description must convey behavioral traits. However, it only states 'search' and 'filter', without disclosing side effects, read-only nature, rate limits, or pagination behavior. The limit parameter implies pagination but is not explained.

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 a single efficient sentence with no superfluous words, delivering core purpose and key filters upfront. Every word earns its place.

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

Completeness2/5

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

Given four parameters, no output schema, and no annotations, the description lacks detail about the data source (BDNS), the nature of grant calls, expected results format, or any constraints. It is minimal and leaves the agent without sufficient context for robust usage.

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 coverage is 100%, so each parameter already has an individual description. The tool's description adds contextual grouping ('filter by date range and granting body'), but this does not significantly enhance understanding beyond the schema's own descriptions. Baseline 3 is appropriate.

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?

Description clearly states the tool searches grant calls from BDNS and specifies filtering capabilities (date range, granting body). It distinguishes from sibling tools like search_grant_awards or search_legislation, which target different resources.

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?

While the description notes filtering options, it does not provide explicit guidance on when to use this tool versus alternatives such as search_grant_awards. There is no mention of exclusions or contexts where other tools would be preferred.

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

search_ine_tablesB

Search for tables within a specific INE operation.

ParametersJSON Schema
NameRequiredDescriptionDefault
operation_idYesOperation ID or code to search tables for (e.g., 'IPC', 'EPA')

TDQS

B3.1/5.0
Behavior2/5

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

The description lacks behavioral details such as whether the tool is read-only, required permissions, rate limits, or what the response contains. With no annotations provided, the description carries the full burden and fails to disclose important behavioral traits.

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?

The description is a single, clear sentence that is appropriately front-loaded. It earns its place by being concise, though it could benefit from slightly more detail about what 'tables' means in this context.

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

Completeness2/5

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

Given the lack of output schema and annotations, the description is incomplete. It does not explain what information about the tables is returned (e.g., IDs, names, metadata), nor does it clarify the scope or limitations of the search. This leaves an agent without enough context to use the tool correctly.

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?

The schema already provides a description for 'operation_id' with examples. The tool description does not add significant meaning beyond the schema. With 100% schema coverage, a baseline of 3 is appropriate.

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?

The description clearly states the tool searches for tables within a specific INE operation, using a specific verb and resource. It effectively differentiates from sibling tools like 'get_ine_table_data' (which retrieves data from a table) and 'get_ine_operation' (which gets operation metadata).

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 guidance is provided on when to use this tool versus alternatives. The description does not indicate prerequisites, typical use cases, or scenarios where this tool is preferred over similar tools like 'get_ine_table_data' or 'get_ine_operation'.

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

search_legislationA

Search consolidated Spanish legislation. Filter by query, dates, title, department, legal range (Ley, Real Decreto, etc.), matter, and include/exclude repealed laws.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results to return
queryYesSearch query text
titleNoFilter by title (partial match)
offsetNoNumber of results to skip (for pagination)
date_toNoEnd date for filtering (YYYY-MM-DD format)
date_fromNoStart date for filtering (YYYY-MM-DD format)
matter_codeNoFilter by matter/subject code (use get_matters_table to get codes)
department_codeNoFilter by department code (use get_departments_table to get codes)
legal_range_codeNoFilter by legal range code: Ley, Real Decreto, etc. (use get_legal_ranges_table to get codes)
include_derogatedNoInclude repealed/derogated legislation in results

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description fails to disclose behavioral traits such as whether the operation is read-only, requires authentication, or has rate limits. It only notes the source is 'consolidated', which offers minimal behavioral context.

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 two sentences with zero wasted words. It front-loads the core purpose and efficiently lists filter options without redundancy.

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

Completeness3/5

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

The description covers high-level filtering but omits details about pagination (limit/offset), response format, or the behavior of the 'include_derogated' parameter. For a tool with 10 parameters and no output schema, additional context would be beneficial.

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 baseline is 3. The description summarizes filters (e.g., 'dates, title, department') that correspond to schema parameters but adds no new semantic detail beyond what the schema already provides.

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?

The description starts with the clear verb 'Search' and specifies the resource 'consolidated Spanish legislation'. It lists key filtering dimensions, making its purpose distinct from sibling tools like search_grants or search_ine_tables.

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 description implies usage for legislation search but does not explicitly state when to use it versus alternatives like get_legislation_details or search_recent_boe. No when-not-to-use guidance is provided.

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

search_open_dataB

Search datasets in the Spanish national open data catalog (datos.gob.es). Filter by theme (medio-ambiente, economia, salud, etc.) or publisher.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results to return
queryNoSearch query text (searches title, description, keywords)
themeNoFilter by theme code (e.g., 'medio-ambiente', 'economia', 'salud')
publisherNoFilter by publisher/organization ID

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are present, so the description must carry the full burden of behavioral disclosure. It only mentions the basic function and filtering, but lacks details on rate limits, authentication requirements, pagination behavior, or any other operational constraints.

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 a single sentence with 18 words, front-loading the key action and resource. Every word is essential; there is no redundant or extraneous content.

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

Completeness3/5

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

Given the tool's simplicity and full schema coverage, the description is minimally adequate. However, it omits details about pagination (the limit parameter) and does not hint at the response format or structure, which could be problematic without an output schema.

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?

The input schema has 100% description coverage for all 4 parameters, so the baseline is 3. The description does not add meaningful information beyond the schema—it merely restates that filtering by theme or publisher is possible, which is already documented in the schema's property descriptions.

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?

The description clearly states it searches datasets in the Spanish national open data catalog and specifies filtering by theme or publisher. It uses a specific verb ('Search') and resource ('datasets in the Spanish national open data catalog'), and distinguishes from siblings like search_grants or search_legislation which target different data sources.

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 guidance is provided on when to use this tool versus alternatives. The description only states what it does, without any context about when not to use it or which sibling tools might be more appropriate for related but distinct queries.

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

search_recent_boeB

Search BOE publications from the last N days. Useful for finding recent legislative activity. Supports filtering by section and search terms.

ParametersJSON Schema
NameRequiredDescriptionDefault
days_backNoNumber of days to search back from today (1-30)
max_itemsNoMaximum total items to return across all days
search_termsNoSearch terms to filter items by title (case-insensitive, partial match)
section_filterNoFilter by section (e.g., '1', '2A', '2B', '3', '4', '5', 'T')

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, description carries full burden. It does not disclose that tool is read-only, nor does it explain return format or pagination behavior. Merely restates filtering without additional behavioral context.

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 sentences, no wasted words. First sentence states core functionality, second adds context and filtering. Efficient and front-loaded.

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

Completeness2/5

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

Given no output schema and many siblings, description lacks details on output format, ordering, or how results are structured. Leaves agent guessing about return value.

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 parameters are well-documented. Description adds no new semantics beyond restating that filtering is supported.

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?

Description clearly states it searches BOE publications from last N days, with specific verb 'Search' and resource 'BOE publications'. It distinguishes from siblings like search_legislation by focusing on recent activity.

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?

Implies usage for recent legislative activity but does not explicitly state when not to use or provide alternatives such as get_boe_summary or search_legislation for different scopes.

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. Dates show when Glama detected each change.

  1. 26 tool updatesv0.1.0
    • First observedfind_related_laws
    • First observedget_boe_summary
    • First observedget_borme_summary
    • First observedget_departments_table
    • First observedget_grant_details
    • First observedget_ine_operation
    • First observedget_ine_operations
    • First observedget_ine_series_data
    • First observedget_ine_table_data
    • First observedget_ine_variables
    • First observedget_legal_ranges_table
    • First observedget_legislation_block
    • First observedget_legislation_details
    • First observedget_legislation_structure
    • First observedget_legislation_text
    • First observedget_matters_table
    • First observedget_open_data_details
    • First observedget_system_info
    • First observedlist_open_data_publishers
    • First observedlist_open_data_themes
    • First observedsearch_grant_awards
    • First observedsearch_grants
    • First observedsearch_ine_tables
    • First observedsearch_legislation
    • First observedsearch_open_data
    • First observedsearch_recent_boe

TDQS

A3.7/5.0
Disambiguation5/5

Each tool targets a distinct data source or operation: legislation, BOE, BORME, INE statistics, grants, open data, and reference tables. No two tools have overlapping purposes, and descriptions clearly differentiate them.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case (e.g., search_legislation, get_boe_summary, list_open_data_publishers). No mixing of conventions or vague verbs.

Tool Count4/5

With 26 tools, the count is slightly high but justified by the broad scope covering multiple public data domains. Each tool serves a clear purpose within its domain, so the number is reasonable.

Completeness5/5

The tool surface covers the full lifecycle for each domain: search, retrieve details, and access structured data. For legislation, it includes search, metadata, structure, text, and related laws. INE, grants, and open data are similarly comprehensive.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server for Portuguese Parliament open data, enabling AI agents to access legislative initiatives, deputies, plenary votes, petitions, and parliamentary committees.
    12
    6
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP Server for accessing 36 Brazilian public data sources and 1 agent, enabling AI agents to query government data on economy, legislation, transparency, judiciary, elections, environment, health, and more.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mjgmario/spanish-public-info-radar-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server