Ireland MCP
Ireland MCP lets an AI assistant discover, call, and cite live Irish public-data sources through a read-only MCP interface.
Browse available sources and operations by domain: stats, transport, environment, energy, economy, law/politics, and places/property.
Inspect an operation’s argument schema, description, and example before calling it.
Run any catalogue operation via
ireland_call, covering CSO, Eurostat, ECB, World Bank, Oireachtas, legislation, Met Éireann, Irish Rail, Luas, EPA, Property Price Register, planning, heritage, and more.Search across many Irish public-data sources and fetch full documents by result IDs such as
cso:F1001.Get a location profile for a WGS84 point, including administrative areas, nearest Met Éireann forecast, recorded monuments within 500 m, and protected sites.
Read licence, attribution, status, and typed-toolset information via
ireland_about.Limit result size with
max_tokens; normal responses include source citations and evidence metadata.Use it read-only with no authentication or writes; some NTA realtime operations require a server-side operator key.
Provides tools for querying the Wikidata Query Service, letting assistants look up Ireland-related places (wikidata_place) and retrieve data about arbitrary Wikidata entities (wikidata_entity) as part of broader Irish public-data answers with citations.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Ireland MCPWhat was the population of Galway in the 2022 census?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Ireland MCP
Ireland MCP is a free, read-only MCP server that lets AI assistants answer questions with live Irish public data and citations.
Short video overview
21 seconds. Recorded MCP Inspector example. Figures and forecasts are historical.

Watch on GitHub · Download MP4 · Transcript · Captions · Credits and source notes
The optional Irish legal and Citizens Information pilot corpus adds stored source versions, exact Act sections, cited research, CLI/stdio MCP and a citizen/lawyer chat page. Start with npm run legal:check, npm run legal:sync, then npm run legal:serve. Its seed coverage is annual leave and working time; Azure integration requires LEGAL_ENABLED=true and an ingested corpus. Revised Acts indexing requires explicit publisher reuse permission. Stored enacted text, guidance and consolidation cutoffs do not certify current law or comprehensive legal coverage.
Hosted endpoint: https://mcp.irishopendata.ie/mcp (origin fallback: https://func-ireland-mcp-aofsjpwgy4hva.azurewebsites.net/mcp)
Transport: Streamable HTTP. Auth: none. Writes: none.
Website: https://irishopendata.ie (canonical). https://irishopendata.com and https://mcp.irishopendata.com/mcp remain working aliases; see docs/domain-go-live.md.
Registry: io.github.c-mongan/ireland-mcp on the official MCP Registry.
The generated counts below describe the default source profile with LEGAL_ENABLED unset. Enabled legal pilot modules appear separately in the live catalogue and source table.
Count | Value | Definition |
Data sources | 29 | Upstream public-data sources, one module each. The |
Working on the hosted endpoint | 28 of 29 | NTA realtime needs an operator key that the hosted service does not have. |
Catalogue operations | 74 | 71 source operations plus 3 cross-source ones ( |
Default tools | 7 | What |
Tools with | 80 | Every operation as a typed tool, plus the 4 meta tools, |
Prompts | 3 |
|
Related MCP server: gaff-check
Try it in 60 seconds
Add the server to your client. For GitHub Copilot CLI:
copilot mcp add --transport http ireland https://mcp.irishopendata.ie/mcpFor VS Code, add.vscode/mcp.json:{ "servers": { "ireland": { "type": "http", "url": "https://mcp.irishopendata.ie/mcp" } } }.Ask: "Using the ireland MCP tools, give me the Census 2022 profile of Ennis, Co Clare, and the Met Éireann forecast for Galway. Cite the sources."
Check the answer cites
https://data.cso.ie/table/F1015and the Met Éireann location-forecast URL. The forecast URL ishttp://; Met Éireann'shttps://host currently redirects to an origin that fails TLS.
Client (tested 7 Oct 2026 against the hosted endpoint) | Result |
MCP Inspector (Playwright, | 4/4 calls ( |
VS Code Insiders, Copilot agent mode | Census 2022 Ennis (27,923 people) and Galway forecast, with CSO and Met Éireann citations. Screenshot. |
GitHub Copilot CLI | 3/3 questions answered with citations: Met Éireann Galway, PPR Cork, CSO Ennis. Evidence. |
Every catalogue operation | docs/live-all-ops.md (2026-10-08): 72 of 74 pass, 0 fail; 2 need the NTA key. |
How a call flows:
flowchart TD
Q[Client question] --> T[ireland_call / nearby / search]
T --> V[Schema validation]
V --> C{Cache hit?}
C -- yes --> E[Evidence envelope]
C -- no --> B{Circuit breaker open?}
B -- yes --> S{Stale cache available?}
B -- no --> U[Upstream public API: CSO, Met Éireann, PPR, ...]
U -- ok --> E
U -- 5xx or timeout --> R[One jittered retry]
R -- ok --> E
R -- still failing --> S
U -- other error --> S
S -- yes --> F[Stale cached result: stale=true]
F --> E
S -- no --> X["MCP error: isError=true, UPSTREAM_DOWN with hint; no cited result"]
E --> A[Answer with source URL, licence, attribution, retrieved_at]Try asking
“What is the latest population profile for Galway city or County Cork?”
“Are there Met Éireann weather warnings near Dublin today?”
“What did houses sell for in Ennis last year?”
“When is the next train from Heuston, and are there disruptions?”
“Who are the current TDs for my constituency, and what bills are active?”
“What protected habitats, monuments, planning applications or census areas are near this point?”
See it work
Proof | Screenshot |
Live landing page, desktop | |
Live landing page, mobile | |
Install section with one-click client setup | |
Playground populated from a real live MCP call | |
MCP Inspector connected to the live endpoint | |
Real model transcript: question → tool calls → answer |
Install
Client | Current setup |
Claude custom connector | Settings → Connectors → Add custom connector → URL |
ChatGPT plugin | In ChatGPT on the web, open Plugins → + → Add custom MCP server. Name it Ireland Open Data, enter |
VS Code | Install link (paste into a browser or run |
VS Code Insiders | Install link: |
Cursor | Deeplink: |
GitHub Copilot CLI |
|
Claude Code |
|
Local stdio | npm package target: |
Portable Copilot / MCP JSON:
{
"mcpServers": {
"ireland": {
"type": "http",
"url": "https://mcp.irishopendata.ie/mcp",
"tools": ["*"]
}
}
}Why it is lean
Most data MCPs expose every typed tool up front. Ireland MCP keeps the default tools/list to 7 tools, 8,407 characters, about 2,102 tokens (toolsets=all is 80 tools, about 22k tokens) (npm run measure:tools). CI fails if that list grows past 16,000 characters.
Need typed tools anyway?
Surface | Use |
Default HTTP |
|
Source toolsets |
|
One source path |
|
Everything |
|
Local stdio | From source: |
max_tokens defaults to about 2,000 output tokens and can be set from 100 to 8,000. Large results return truncated, counts and narrowing hints instead of flooding the context.
Architecture
The server is a stateless Azure Functions Flex app with a lean gateway in front of the source modules. The gateway owns the operation index, response budgets, cache, upstream budgets, circuit breakers, one jittered retry for transient 5xx/timeout failures and evidence envelope; every normal result includes source URL, licence, attribution and retrieval metadata.
Diagram | Editable source |
Sources
The default profile registers 29 source modules in src/registry.ts. The default nearby, search and fetch shortcuts sit above these sources. The optional pilot rows require LEGAL_ENABLED=true and an ingested corpus; check ireland_catalogue for the modules available on an endpoint.
Domain | Source id | Publisher / source | Operations | Licence |
stats |
| 3 | Creative Commons Attribution; check dataset terms | |
stats |
| 4 | CC BY 4.0 | |
economy |
| 2 | CC BY 4.0 | |
stats |
| 3 | Eurostat reuse policy (CC BY 4.0 equivalent) | |
stats |
| 3 | ECB terms, free reuse with attribution | |
stats |
| 1 | CC BY 4.0 | |
stats |
| 3 | Per dataset, mostly CC BY 4.0 | |
economy |
| 3 | CC BY 4.0 | |
economy |
| European Commission Kohesio — packaged, dated Irish CSV exports; not live data (refresh guide) | 2 | EU reuse policy / CC BY 4.0 compatible |
stats |
| 3 | Per dataset, mostly CC BY 4.0 | |
stats |
| 1 | CC BY 4.0 | |
law/politics |
| 5 | Oireachtas Open Data PSI Licence | |
law/politics |
| 3 | PSI General Licence / CC BY 4.0 | |
law/politics |
| Irish legal evidence corpus — indexed source versions and Act sections; annual-leave/working-time seeds; current law unverified | 6 | Per-document publisher licence; Revised Acts storage and redistribution permission gated |
law/politics |
| Citizens Information Board — indexed explanatory guidance from the limited pilot corpus | 2 | CC BY 4.0; third-party material excluded |
places/property |
| 4 | CC BY 4.0 | |
places/property |
| 2 | CC0 1.0 | |
places/property |
| 2 | PSI General Licence / CC BY 4.0 | |
places/property |
| 2 | CC BY 4.0 | |
places/property |
| 1 | CC BY 4.0 | |
environment |
| 3 | CC BY 4.0 | |
environment |
| 1 | CC BY 4.0 | |
environment |
| 2 | CC BY 4.0 | |
environment |
| 2 | CC BY 4.0 | |
environment |
| 5 | CC BY 4.0 | |
transport |
| 2 | CC BY 4.0 | |
transport |
| 2 | Public open data; attribution required | |
transport |
| 2 | CC BY 4.0 | |
transport |
| 2 | CityBikes attribution/link; underlying operator terms | |
energy |
| 1 | Public information; attribution required | |
economy |
| 2 | EU reuse policy / CC BY 4.0 |
Licence and attribution
Layer | Licence / attribution |
Code | MIT, copyright Conor Mongan. |
Source metadata and returned data | Stays under each publisher licence. Every normal tool response includes |
CSO / Eurostat / ECB / Wikidata / World Bank | Cite CSO, Eurostat, ECB Data Portal, Wikidata contributors and World Bank Open Data respectively; Wikidata is CC0. |
Oireachtas / legislation / PSI sources | Cite Oireachtas Open Data, eISB / Office of the Attorney General, PSRA, OPW and other named PSI publishers as shown in responses. |
Optional legal pilot | Preserve per-document citations and Citizens Information Board attribution. Law Reform Commission Revised Acts reuse requires explicit permission; see source policies. |
Weather, transport, environment, business and maps | Cite Met Éireann, NTA, Iarnród Éireann, TII/Luas, EirGrid, Marine Institute, Tailte Éireann, NMS, NPWS, EPA, Pobal, CRO, Kohesio/TED and JCDecaux/CityBikes/GBFS as applicable. |
Full notice | See NOTICE. Not affiliated with any government body, data publisher or transport operator. |
Observability and privacy
GET /healthzis fast liveness;GET /healthz?deep=1performs one cheap check per source.A status workflow publishes
status/status.jsonand 7-day history.OpenTelemetry can export MCP semantic-convention spans and operation-duration metrics to Azure Monitor.
Tool logs and telemetry avoid argument values and IP addresses. See PRIVACY.md.
Optional PostHog usage metrics and Chromatic visual checks are described in observability and the quality loop.
Browser CORS is restricted by
MCP_ALLOWED_ORIGINS; non-browser MCP clients are unaffected.
Limits
Read-only public data only. No login-gated, paid or key-required user data.
NTA realtime tools need a server-side NTA operator key; other tools work without keys.
Upstream data can be delayed, provisional, incomplete or temporarily down. Stale cache is labelled
stale: trueand is used only for retryable failures. Permanent request, access and missing-resource errors remain visible.Property Price Register values are declared sale prices, not valuations.
Legislation text is for retrieval and analysis, not legal advice. The optional legal pilot covers only ingested pages. Enacted text, Citizens Information guidance and any permitted consolidation require verification of amendments, commencement and source currency; they do not certify current law.
Large tables are paginated or truncated. Use
fields,limit,cursorand source filters.
Run from source
Needs Node 22.12 or later.
git clone https://github.com/c-mongan/ireland-mcp
cd ireland-mcp
npm ci
npm run build
node dist/src/cli.js
npm run dev:http # local HTTP dev server, MCP at /mcpDevelopment
Command | What it does |
| Unit tests against recorded fixtures; no network. |
| TypeScript and ESLint. |
| Compile production JS and copy runtime assets. |
| MCP Inspector conformance. |
| Lint, types, unit tests, package/deployment contracts and a real stdio MCP client check. |
| Storybook MCP, visual fixtures, accessibility and production website browser checks. Install Chromium first with |
| Hosted MCP protocol and catalogue checks. It makes no upstream data requests. |
| Measure default or all-tool |
| Real source calls through |
| Real MCP client proof for every catalogue operation; writes docs/live-all-ops.md. |
| Promptfoo evaluation; default surface unless |
The quality loop explains local, hosted, semantic and visual proof. The playground access guide distinguishes the public query playground from ChatGPT sign-in and subscription use.
Eval results
69 routing questions, run through a multi-round agent loop that sends the server instructions as the system prompt (2026-10-05, Azure OpenAI):
Model | Default surface (7 tools) |
|
gpt-5.6-luna | 100% | 100% |
gpt-5.4-mini | 91% | 97% |
gpt-4.1-nano (worst-case floor) | 84% | 90% |
A 2026-10-07 rerun of the expanded 79-question set with 29 sources scored gpt-4.1-nano at 85% on the default surface.
gpt-5.x models reject temperature: 0. For them, set EVAL_TEMPERATURE=default, for example: AZURE_DEPLOYMENT=gpt-56-luna EVAL_TEMPERATURE=default npm run eval.
Contributing: add a source
Create
src/sources/<id>/index.tsexporting aSourceModulewithinfo,summary,domain,coverage, tools, optionalsearch()andfetchById().Keep every tool name source-prefixed, validate args with zod and return the evidence envelope with source URL, licence and attribution.
Use
ctx.cachedJson/ctx.cachedTextso upstream budgets, caching, circuit breakers and stale fallback apply.Add fixtures and tests at the module seam, then add a server-level
ireland_calltest when useful.Register the module in
src/registry.ts, updatescripts/live-sanity.mjs, eval cases and docs.Run lint, typecheck, tests, build, inspector and live sanity before opening a PR.
See CONTRIBUTING.md for the full checklist.
Registry and publishing
Ireland MCP is listed on the official MCP Registry as a remote-only Streamable HTTP server named io.github.c-mongan/ireland-mcp (v1.1.3). Clients that browse the registry can install it by name. The future domain name is planned as ie.irishopendata/ireland after DNS verification. Publishing notes and directory checklists are in docs/publishing.md. Do not publish from a fork without changing the name and endpoint.
Credits and prior art
Thank you to the maintainers of Irish-data and public-data MCP projects that helped shape the direction:
Project | What to look at |
Irish open-data CLI for LLM use. | |
Irish MCP platform and public-data UX. | |
CSO/PxStat MCP focused on Irish statistics. | |
National open-data catalogue MCP pattern. | |
Census-data MCP interface and interpretation pattern. | |
CKAN search/query server design. | |
Eurostat MCP implementation. | |
OECD statistical-data MCP. |
Data comes from the publishers listed above, including CSO, data.gov.ie, Met Éireann, OPW, Irish Rail, Oireachtas, GeoHive/Tailte Éireann, National Monuments Service, NPWS, EPA, Pobal, CRO, World Bank, Eurostat, ECB, Wikidata, Kohesio, TED, JCDecaux/CityBikes and others. Please cite the publisher shown in each response.
Security
Security reports: SECURITY.md. This project is read-only, but MCP servers can still retrieve untrusted web content; clients should follow their normal MCP trust and approval model.
Available Tools
7 toolsfetchFetch a document by idARead-onlyIdempotentInspect
Fetch the full text of a search result by its id, e.g. 'cso:F1001', 'oireachtas:bill/2024/12', 'legislation:2018/7/s2' or 'data-gov-ie:moby-bikes'.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Id from search, '<source>:<key>'. | |
| max_tokens | No | Result budget in tokens (default 2000). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds the behavioral fact that this returns 'full text' from heterogeneous source namespaces, but says nothing about truncation when max_tokens is hit, rate limits, or other runtime behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb and resource stated first, followed by a compact enumeration of id examples. Every element earns its place; there is no boilerplate or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value explanation is unnecessary, and annotations plus 100% schema coverage handle safety and parameters. The description supplies purpose and id format, leaving only minor gaps (truncation behavior for max_tokens, explicit routing versus 'search').
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description goes beyond the schema's generic '<source>:<key>' by giving four concrete id examples spanning different namespaces ('cso:', 'oireachtas:', 'legislation:', 'data-gov-ie:'), which materially helps the agent construct a valid id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb ('fetch') and resource ('the full text of a search result') and specifies the selector ('by its id'), so the agent knows this retrieves document content rather than finding documents. It implicitly distinguishes itself from the 'search' sibling by referencing 'a search result', but never names or contrasts that alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the phrase 'by its id' plus 'of a search result' signals the id must come from a prior search call. There is no explicit when-to-use, when-not-to-use, or named alternative among the siblings (search, ireland_describe, nearby).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ireland_aboutAbout this serverBRead-onlyIdempotentInspect
Licence, attribution, status URL and how to enable typed toolsets.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered without the description. The description adds only a content inventory, disclosing nothing about the response shape or any side effects beyond what the annotations and output schema carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short fragment with no filler, and the most decision-relevant item (licence, attribution) leads. It loses a point only for being an unanchored phrase rather than a complete sentence, which slightly weakens front-loading of intent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero parameters and an output schema present, there is little the agent needs beyond knowing this is a static informational endpoint. The description is sufficient for that, though it never explicitly states that no arguments are needed or that the output is documentation-style prose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. There is no parameter syntax for the description to clarify, and it correctly says nothing about inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is a noun phrase listing the payload's contents (licence, attribution, status URL, how to enable typed toolsets) rather than a verb+resource statement of what the tool does. It is distinguishable from siblings like ireland_describe or ireland_catalogue, but an agent must infer that this is a server-metadata/introspection tool from the title alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is given, and no sibling alternative is named. The enumerated content does imply the triggering conditions (need licence/attribution/status info or help enabling typed toolsets), which is enough for implied but not stated usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ireland_callCall an operationARead-onlyIdempotentInspect
Run a source operation with args. Bad args return the expected schema and an example. Operations by source: cso: cso_search_tables, cso_get_table_metadata, cso_get_data, cso_area_profile; ncse: ncse_search_datasets, ncse_get_dataset, ncse_query_datastore; world-bank: worldbank_get_indicator, worldbank_ireland_profile; eurostat: eurostat_search_datasets, eurostat_get_data, eurostat_compare_ie_eu; ecb: ecb_get_series, ecb_interest_rates, ecb_exchange_rate; pobal: pobal_deprivation_search; oireachtas: oireachtas_search_members, oireachtas_search_bills, oireachtas_get_debates, oireachtas_search_questions, oireachtas_get_votes; geohive: geohive_boundaries_at_point, geohive_locate, geohive_list_layers, geohive_query_layer; wikidata: wikidata_place, wikidata_entity; data-gov-ie: datagov_search_datasets, datagov_get_dataset, datagov_query_datastore; cro: cro_search_datasets, cro_get_dataset, cro_query_datastore; kohesio: kohesio_search_projects, kohesio_get_project; smart-dublin: smartdublin_search_datasets, smartdublin_get_dataset, smartdublin_query_datastore; met-eireann: met_get_forecast, met_get_observations, met_get_warnings; nta: nta_get_realtime_summary, nta_get_trip_updates; legislation: legislation_list_acts, legislation_get_act, legislation_get_section; ppr: ppr_search_sales, ppr_price_stats; irish-rail: rail_find_station, rail_get_departures; luas: luas_get_forecast, luas_list_stops; eirgrid: grid_get_status; marine: marine_get_buoys; opw-water: water_find_stations, water_get_level; planning: planning_search, planning_get; census-areas: census_small_area_at; epa: epa_wfd_search, epa_wfd_waterbody, epa_bathing_locations, epa_bathing_alerts, epa_bathing_measurements; heritage: heritage_monuments_near; environment-sites: protected_sites_at, protected_sites_near; ted: ted_search_tenders, ted_get_notice; bikes: bikes_networks, bikes_stations_near; cross: list_sources, ireland_snapshot, nearby.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | Operation arguments. | |
| source | Yes | Source id. | |
| arguments | No | Alias of args. | |
| operation | Yes | Operation name. | |
| max_tokens | No | Result budget in tokens (default 2000). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), lowering the bar. The description adds one genuine behavioral trait beyond the annotations: bad arguments return the expected schema plus an example, which tells the agent errors are self-documenting. It still says nothing about rate limits, external-service latency, or how operations map to side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first two sentences are tight and front-loaded (action + error behavior) before the reference material. The long operation catalogue is heavy but arguably earns its place, since the schema declares zero enums and provides no other enumeration of valid operation values.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the operation catalogue supplies the missing enum-like values for operation/source. The bad-args contract is stated. It is largely complete for a dispatcher, with only cross-tool routing left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents source, operation, args, arguments, and max_tokens. The description reinforces the source+operation+args pattern but adds no syntax or format detail beyond what is already structured. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Run a source operation with args") and enumerates the valid source/operation pairs, so an agent knows exactly what this dispatcher does. It does not, however, differentiate itself from siblings like fetch, search, or ireland_describe, which are also generic entry points.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the operation catalogue (each operation name signals its purpose), and "Bad args return the expected schema and an example" hints at the calling workflow. But there is no explicit guidance on when to use ireland_call versus fetch, search, or the catalogue/describe tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ireland_catalogueCatalogue of Irish data sourcesARead-onlyIdempotentInspect
List sources and their operations, grouped by domain: stats, transport, environment, energy, economy, law/politics, places/property. Start here.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | Only this domain. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds that results are grouped by domain and include operations, but says nothing about result size, pagination, or freshness — useful but modest added context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the resource and grouping stated first and the call-to-action last. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not required, and the description covers purpose plus entry-point role. The only gap is guidance on what to do with the catalogue once retrieved (i.e., which siblings to call next), which would make it fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single domain parameter has a fully enumerated schema description. The description's domain list mirrors the enum rather than adding new semantics such as interaction with grouping or whether omitting it returns everything, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource (lists sources and their operations) plus the grouping dimension (domain), so the agent knows exactly what comes back. It does not explicitly distinguish itself from siblings like ireland_about or ireland_describe, but the catalogue framing is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Start here" is an explicit entry-point directive, which is the most important usage signal for a discovery tool. It gives no explicit when-not or named alternative, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ireland_describeDescribe an operationCRead-onlyIdempotentInspect
Argument JSON schema, description and an example for one source operation.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | Source id, e.g. 'cso'. | |
| operation | Yes | Operation, e.g. 'cso_get_data'. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description's only added content is the return payload (schema, description, example), which overlaps with the existing output schema, and it says nothing about auth, rate limits, or failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence with no waste, but it is an incomplete fragment whose key information (the action) must be inferred, so brevity here shades into under-specification rather than concision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and annotations cover safety, leaving purpose and routing as the description's job — both are underdeveloped for a tool that must be chosen over three other ireland_* siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented in-schema with concrete examples ('cso', 'cso_get_data'). The phrase 'one source operation' is consistent with source+operation but adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (one source operation) and what it yields (argument JSON schema, description, example), so the intent is inferable, but it is a noun-phrase fragment with no verb for the action. It does not distinguish itself from near siblings like ireland_catalogue or ireland_call, which also deal with source operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus ireland_call, ireland_catalogue, or ireland_about. The agent must infer that this is the introspection step preceding a call, with no explicit guidance or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nearbyWhat is at this locationARead-onlyIdempotentInspect
For a WGS84 point in Ireland: county, local authority, constituency, electoral division, small area and settlement (GeoHive), the nearest Met Éireann station and forecast, recorded monuments within 500 m (SMR) and NPWS protected sites at the point. Not live observations, river levels, buoys, bikes or populations: use ireland_call for those.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | Latitude, e.g. 53.3498. | |
| lon | Yes | Longitude, e.g. -6.2603. | |
| hours | No | Forecast hours to include. | |
| max_tokens | No | Result budget in tokens (default 2000). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely non-derivable context: the geographic constraint (Ireland-only, WGS84), the data provenance (GeoHive, SMR, NPWS), the 500 m search radius for monuments, and the warning that results are not live observations. It does not mention caching, freshness windows, or behavior for points outside Ireland, which keeps this at 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the result scope, then the exclusion/routing clause. The long enumeration is dense but each item is decision-relevant, so little is wasted; the only minor cost is that it reads as a catalogue rather than a terse directive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return formatting need not be described, and the description covers the dataset union, coordinate frame and scope well. The residual gap is what happens for coordinates outside Ireland and whether output is truncated by the token budget — relevant given the max_tokens parameter, though hinted at.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description lifts it by specifying the coordinate reference frame (WGS84) and the Irish coverage area, which the schema's bare lat/lon numbers and bounds do not convey. Forecast hours and token budget are already fully documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates exactly what is returned for a WGS84 point in Ireland: administrative units (county, local authority, constituency, electoral division, small area, settlement via GeoHive), the nearest Met Éireann station and forecast, SMR monuments within 500 m, and NPWS protected sites. An agent can tell precisely what this tool produces without opening the schema, and the sibling ireland_call is explicitly named for other data types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives both sides of the routing decision: what is in scope, and an explicit exclusion list ("Not live observations, river levels, buoys, bikes or populations") paired with the alternative to use instead (ireland_call). This is exactly the when/when-not/alternative structure that lets an agent pick the right sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch Irish public dataARead-onlyIdempotentInspect
Search across Central Statistics Office (CSO) PxStat, National Council for Special Education open data, World Bank Indicators for Ireland, Eurostat Statistics API, Pobal HP Deprivation Index, Houses of the Oireachtas Open Data API, Wikidata Query Service, data.gov.ie (Ireland's open data portal), Companies Registration Office open data, Kohesio EU-funded projects, Smart Dublin open data (Dublin local authorities), Irish Statute Book (eISB) via ELI, EPA Ireland open data, EU Tenders Electronic Daily (TED). Returns ids like 'cso:F1001' to pass to fetch.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | What to look for, e.g. 'population by county' or 'housing bill 2024'. | |
| max_tokens | No | Result budget in tokens (default 2000). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: the set of upstream data sources queried (open-world scope made concrete) and the return shape ('ids like cso:F1001'). It does not mention pagination, result limits beyond max_tokens, or empty-result behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The handoff sentence ('Returns ids ... to pass to fetch') is well placed at the end and earns its keep. The bulk of the text is a 14-item comma-separated source list that is informative for scope but reads as a run-on enumeration rather than front-loaded, prioritized description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter federated search tool with an output schema present, the description covers scope, sources, and the id format needed to chain into fetch, which is the key integration detail. Missing pieces are minor: no result-count expectations or behavior when a provider is unavailable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (query, max_tokens) are documented in the schema with examples and ranges. The description adds no parameter-level meaning beyond the schema – it does not explain query syntax, provider scoping, or how max_tokens interacts with multi-source results. Baseline 3 is appropriate when the schema carries the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb ('Search') and resource (Irish public data) and enumerates the 14 federated sources, which pins down scope precisely. It also distinguishes itself from the sibling 'fetch' by stating it returns ids 'like cso:F1001' that are then passed to fetch. However, the enumeration substitutes for a description of what the search actually does (keyword matching? full text?), so it is clear but slightly thin on capability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the correct workflow by saying ids are 'to pass to fetch', which is a useful chaining hint. It gives no explicit when-to-use guidance relative to siblings such as ireland_call, ireland_catalogue, or nearby, nor any when-not-to-use or scoping conditions. Usage is therefore implied rather than instructed.
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.
7 tool updates
v1.1.1- First observed
fetch - First observed
ireland_about - First observed
ireland_call - First observed
ireland_catalogue - First observed
ireland_describe - First observed
nearby - First observed
search
TDQS
Scored across 7 tools
The discovery/dispatch trio (ireland_catalogue, ireland_describe, ireland_call) has clearly distinct roles—list, schema-lookup, execute—and search vs fetch is a clean list-vs-fulltext split. The only mild overlap is nearby, which duplicates some GeoHive/Met Éireann functionality reachable via ireland_call, though its description explicitly draws the boundary.
Four tools use an 'ireland_' namespaced snake_case prefix (catalogue, describe, call, about), while search, fetch, and nearby are bare single-word names with no prefix, mixing two conventions. Both groups are internally readable, but the set as a whole does not follow one predictable pattern.
Seven tools is well within the ideal range, and the gateway pattern (catalogue/describe/call) keeps an enormous multi-source domain compressed into a small, purposeful surface. Each tool—discovery, schema, execution, about, cross-search, fetch, geo-lookup—earns its place.
The surface covers the full lifecycle for a read-only data aggregator: discovery (ireland_catalogue, list_sources), schema inspection (ireland_describe), execution (ireland_call), cross-source search and full-text fetch, plus a convenience geo aggregator. Domain coverage spans stats, transport, environment, energy, economy, law, and place data with no obvious dead ends.
Maintenance
Related MCP Connectors
Irish Tax Hub helps users estimate Irish taxes, inspect current tax rates and deadlines, search Revenue guidance, and research Ireland's double-taxation treaties through read-only tools. Check out https://www.irishtaxhub.ie
Real-world data for agents: air quality, geocoding, quakes, holidays, web search
- mcpOAuthcom.skipshit
People and property search for Claude and ChatGPT. Phones, emails, addresses, relatives, properties.
Query UK Parliament, elections, crime stats, ONS census data, and national archives
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables AI assistants to search, explore, and query any CKAN open data portal through natural language, making public datasets accessible without requiring knowledge of the portal's API.201,037 npm59MIT
- AlicenseAqualityCmaintenanceEnables AI agents to perform due diligence on Irish properties by querying public datasets for planning applications, sold prices, flood risk, radon risk, and zoning.131 npm8MIT
- AlicenseAqualityAmaintenanceIrish and UK official statistics by county and local authority: CSO, Central Bank, government and council data joined on one geography, with caveats on every figure and a comparability check. Built for AI agents.597 PyPIMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to search, inspect, and retrieve Irish Central Statistics Office PxStat datasets through MCP tools. Supports catalog search, metadata discovery, full-table reads, and filtered JSON-stat queries.12 npmMIT