Skip to main content
Glama
EricGrill

Civic Data MCP Server

by EricGrill

mcp-civic-data

Authoritative civic and government data for AI agents

MIT License CI 172 Tools 34 APIs Python 3.11+ MCP

An MCP server that connects AI agents to 34 free, authoritative public data APIs across weather, hazards, air quality, water, tides, radiation, demographics, economics, education, energy, labor statistics, public health, clinical trials, behavioral health, healthcare quality, disaster management, EPA environmental compliance, FDA safety data, vehicle safety, workplace safety, national parks, national forests, consumer financial protection, open data discovery, cybersecurity, SEC disclosures, Federal Reserve economic indicators, BEA economic accounts, BTS transportation data, FAA aviation data, SBA small business data, USDA food and agriculture data, USFS wildfire and forest data, and FBI crime/justice statistics.

Built for practical agent workflows: concise high-level tools, raw query access where it matters, and location-aware inputs that accept city names, ZIP codes, addresses, or raw coordinates.

No API keys required for 23 of 34 sources. Install it, point your MCP client at it, and start querying real civic data.

Get Started · What's New · Data Sources · Tool Reference · Roadmap · Contributing


Get Started

Claude Desktop / Claude Code

{
  "mcpServers": {
    "civic-data": {
      "command": "python3",
      "args": ["-m", "mcp_govt_api"],
      "env": {
        "OPENWEATHER_API_KEY": "optional",
        "NASA_API_KEY": "optional",
        "FRED_API_KEY": "optional",
        "BLS_API_KEY": "optional",
        "NPS_API_KEY": "optional",
        "EIA_API_KEY": "optional",
        "BEA_API_KEY": "optional",
        "USDA_API_KEY": "optional",
        "FBI_CDE_API_KEY": "optional"
      }
    }
  }
}

Standalone

pip install mcp-civic-data
python3 -m mcp_govt_api

Related MCP server: mcp-brasil

What's New

  • Added BJS / FBI Crime Data Explorer tools for crime estimates, arrest data, and justice datasets

  • Added USDA Forest Service tools for active wildfires, fire perimeters, and National Forest search via WFIGS/ArcGIS

  • Added EPA environmental compliance tools for ECHO facility search, detailed facility reports, and Toxics Release Inventory

  • Added SAMHSA tools for mental health and substance abuse treatment facility locator and behavioral health data

  • Added CMS tools for hospital quality ratings, Medicare provider search, and healthcare data

  • Added FDA tools for recalls, adverse events, and drug labels via openFDA

  • Added CDC public health surveillance tools for disease tracking and vaccination coverage

  • Added shared geolocation support with a new lookup_location tool

  • Upgraded weather, earthquake, and air-quality tools to accept human-friendly location strings

  • Added CISA cybersecurity tools and integrated them into the server and README

  • Added SEC EDGAR tools for filings, submissions, and company facts

  • Added GitHub Actions CI for install, compile, unit test, import, and build validation

  • Added CONTRIBUTING.md, CODE_OF_CONDUCT.md, and SECURITY.md

  • Added BEA regional and national economic accounts tools (GDP, income, industry)

  • Added FAA public aviation tools for AIS geodata, TFRs, NAS Status, aircraft registry, and aircraft type characteristics

  • Added branch protection and required automated checks on main


Data Sources

Earth & Environment

Source

What It Covers

Key

NOAA Weather

US forecasts, severe weather alerts

--

OpenWeather

Global weather for any city

Required

OpenAQ

Air quality from stations worldwide

--

USGS Water

Real-time stream flow and flood levels across every US river

--

NOAA CO-OPS

Tide predictions, observed water levels, coastal stations

--

EPA ECHO/Envirofacts

Facility compliance, enforcement history, toxic releases (TRI)

--

Safecast

Community radiation monitoring, 150M+ measurements

--

Hazards & Events

Source

What It Covers

Key

USGS Earthquakes

Every earthquake on Earth, real-time

--

NASA FIRMS

Active wildfires detected from satellites

Optional

NOAA Space Weather

Solar wind, geomagnetic storms, solar flares

--

CISA

Known exploited vulnerabilities, security alerts, advisories

--

FEMA

Disaster declarations, assistance data, housing assistance

--

USFS (WFIGS)

Active wildfires, fire perimeters, National Forest boundaries

--

Health & Safety

Source

What It Covers

Key

CMS

Hospital quality ratings, Medicare provider search, healthcare data

--

FDA (openFDA)

Drug/food/device recalls, adverse events, drug labels

--

SAMHSA

Mental health and substance abuse treatment facilities, behavioral health data

--

NHTSA

Vehicle recalls, consumer complaints, VIN decoding

--

OSHA (DOL)

Workplace inspections, violations, fatality reports

--

ClinicalTrials.gov

Clinical study search, trial details, database statistics

--

Education

Source

What It Covers

Key

NCES (Education Data Portal)

School districts, school enrollment, college/university data

--

Demographics & Economics

Source

What It Covers

Key

US Census

Population, demographics, housing for every US county

--

World Bank

GDP, poverty, unemployment for 200+ countries

--

FRED

Federal Reserve economic data: GDP, inflation, employment, interest rates

Required

BLS

CPI, unemployment, employment, labor statistics

Optional

BEA

Regional GDP, personal income, GDP by industry

Required

Energy

Source

What It Covers

Key

EIA

Electricity, petroleum, natural gas, coal, and energy market data

Required

Transportation

Source

What It Covers

Key

BTS

Airline on-time performance, border crossing data, transportation datasets

--

FAA Public Aviation Data

AIS airport/geodata, TFRs, NAS status, aircraft registry, aircraft characteristics, FAA catalog

--

Small Business

Source

What It Covers

Key

SBA

Small business size standards, disaster loans, open datasets

--

Food & Agriculture

Source

What It Covers

Key

USDA

Food nutrition data (FoodData Central), crop production and acreage (NASS)

Required

Criminal Justice

Source

What It Covers

Key

FBI CDE / BJS

Crime estimates, arrest data, justice datasets via FBI Crime Data Explorer

Required

Finance & Consumer Protection

Source

What It Covers

Key

SEC EDGAR

Company filings, 10-K, 10-Q, 8-K forms

--

CFPB

Consumer complaints, financial product issues, company responses

--

Public Health

Source

What It Covers

Key

CDC Open Data

Disease surveillance, vaccination coverage, public health datasets

--

Parks & Recreation

Source

What It Covers

Key

NPS

National parks, alerts, closures, park details

Required

Open Data Catalogs

Source

What It Covers

Key

Data.gov

300,000+ US government datasets

--

EU Open Data

European Union datasets, multilingual

--

NASA

APOD, Mars rover photos, image/video library

Optional

Key: -- = no key needed. Optional = works without a key, key unlocks higher rate limits. Required = key needed to enable.


What You Can Ask

"What's the weather forecast for Washington DC?"
"What's the air quality near 10001?"
"Any recent earthquakes near San Francisco?"
"Resolve 1600 Pennsylvania Ave NW to coordinates"
"Are there active fires in Australia?"
"What's the current space weather like?"
"Compare GDP between USA, China, and India"
"What's the population and median income in California?"
"Show me recent photos from the Perseverance rover"
"What are the radiation levels near Fukushima?"
"What are stream flow levels in Colorado?"
"What are the tide predictions for Providence, RI?"
"Find tide stations in Florida"
"Find datasets about climate change on Data.gov"
"What's the current US GDP from FRED?"
"Search FRED for unemployment rate data"
"Get Apple's latest 10-K filing from SEC"
"Show me recent SEC filings for Tesla"
"Search CDC datasets about influenza"
"What are the latest disease surveillance reports for Salmonellosis?"
"Show me vaccination coverage data for Influenza"
"Search for clinical trials on breast cancer"
"Get details for clinical trial NCT04280705"
"How many studies are registered on ClinicalTrials.gov?"
"Are there any known exploited vulnerabilities for Microsoft products?"
"What are the latest CISA security alerts?"
"Show me consumer complaints about mortgages in California"
"What are the most common complaint types filed with the CFPB?"
"What's the current CPI?"
"What's the unemployment rate in California?"
"Show me BLS employment data for 2023"
"What FEMA disaster declarations were made in Florida this year?"
"Show me housing assistance data for Hurricane Ian"
"Search for hospitals in New York with quality ratings"
"What's the quality rating for facility 050001?"
"Find Medicare providers specializing in Cardiology in Texas"
"Show me recent FDA drug recalls in California"
"What adverse events have been reported for aspirin?"
"Get drug label information for ibuprofen"
"Search for national parks in California"
"Are there any alerts at Yosemite?"
"Tell me about Grand Canyon National Park"
"Are there any recalls for 2020 Toyota Camry?"
"Show me consumer complaints for Ford F-150"
"Decode VIN 1HGCM82633A004352"
"Search for school districts in California"
"What's the enrollment at schools in Texas?"
"Find colleges in New York"
"Search for nutritional info on chicken breast"
"What are the detailed nutrients in FDC ID 171688?"
"Show me corn production data for Iowa in 2023"
"What are the current gasoline prices?"
"Show me electricity data for California"
"What energy data categories does the EIA provide?"
"What's California's GDP from BEA?"
"Show me GDP by industry for 2022"
"What datasets does the BEA offer?"
"Show me airline on-time stats for American Airlines"
"What's the border crossing data for El Paso?"
"Search BTS datasets about freight"
"Are there active TFRs in Virginia?"
"Look up FAA airport and runway data for LAX"
"Is DCA currently affected by FAA NAS delays or closures?"
"Look up FAA aircraft registration N23FX"
"Search SBA datasets for PPP loans"
"What is the SBA size standard for restaurants?"
"Show me SBA disaster loans in Florida"
"Show me OSHA inspections in California"
"What violations were found in OSHA inspection 1234567?"
"Search for workplace fatality reports in Texas"
"Search for EPA-regulated facilities in California"
"Get compliance details for EPA facility 110000350174"
"Show toxic chemical releases in Texas for 2022"
"Find mental health treatment facilities near Chicago"
"Search SAMHSA data for opioid treatment admissions"
"What are the active wildfires in California?"
"Show me wildfire perimeters in Oregon"
"Search for National Forests in Montana"
"What are the crime estimates for California?"
"Show me national arrest data for robbery"
"Search for prisoner statistics datasets"

Tool Reference

Every data source exposes high-level tools for common queries and a raw query tool for full API access.

Tool

Description

get_weather_forecast

7-day forecast for a US location by place name or coordinates

get_weather_alerts

Active severe weather alerts by state

get_global_weather

Current conditions for any city worldwide

query_noaa

Raw NOAA API access

query_openweather

Raw OpenWeather API access

Tool

Description

get_forecast_discussion

Area Forecast Discussion from a NWS Weather Forecast Office

get_active_weather_alerts

Active weather alerts filtered by state, event type, and severity

get_radar_stations

NEXRAD radar stations, optionally filtered by state

Tool

Description

lookup_location

Resolve a city, ZIP code, address, or coordinates to a normalized location

Tool

Description

get_air_quality

Current readings from stations near a place name or coordinates

get_air_quality_history

Historical measurements for a monitoring station

query_openaq

Raw OpenAQ v3 API access

Tool

Description

get_water_conditions

Stream flow and gage height by US state

get_water_site

All readings for a specific USGS monitoring site

query_usgs_water

Raw USGS Water Services API access

Tool

Description

get_tide_predictions

Tide predictions for a CO-OPS station

get_water_levels

Observed water levels from a CO-OPS station

search_tide_stations

Search for NOAA CO-OPS tide prediction stations

Tool

Description

search_epa_facilities

Search EPA-regulated facilities via ECHO enforcement database

get_epa_facility_info

Get detailed compliance info for a facility by registry ID

get_toxic_releases

Query Toxics Release Inventory (TRI) data via Envirofacts

Tool

Description

get_recent_earthquakes

Recent quakes worldwide above a magnitude threshold

get_earthquakes_near

Recent quakes near a place name or coordinates

query_earthquakes

Raw USGS Earthquake API access

Tool

Description

get_active_fires

Active fires and hotspots near a location

get_country_fires

Active fires for an entire country (ISO alpha-3)

query_firms

Raw NASA FIRMS API access

Tool

Description

get_space_weather_summary

Solar wind speed, Kp index, NOAA storm scales

get_solar_flares

Recent solar flare activity and classifications

get_space_weather_alerts

Active NOAA space weather alerts and warnings

query_space_weather

Raw SWPC API access

Tool

Description

search_known_exploited_vulnerabilities

Search CISA's catalog of actively exploited vulnerabilities

get_recent_cisa_alerts

Recent CISA security alerts and advisories

get_cisa_bulletins

Weekly CISA vulnerability summaries from major vendors

query_cisa_kev

Raw CISA Known Exploited Vulnerabilities catalog access

Tool

Description

search_cdc_datasets

Search CDC's open data catalog by keyword

get_cdc_disease_surveillance

Notifiable disease case counts from the NNDSS

get_cdc_vaccination_coverage

Vaccination coverage estimates by vaccine and state

query_cdc_open_data

Raw CDC SODA API access for any dataset

Tool

Description

search_clinical_trials

Search clinical studies by keyword, condition, intervention, or status

get_clinical_trial

Get detailed protocol information for a specific trial by NCT ID

get_trial_statistics

Get overall ClinicalTrials.gov database statistics

Tool

Description

search_hospitals

Search hospitals by name or state with overall quality ratings

get_hospital_quality

Get detailed quality measures and ratings for a specific hospital

search_medicare_providers

Search Medicare-enrolled healthcare providers by name, state, or specialty

Tool

Description

get_fema_disasters

Search disaster declarations by state, year, or type

get_fema_disaster_summary

Detailed summary for a specific disaster number

get_fema_assistance

Housing assistance data for disaster survivors

Tool

Description

get_active_wildfires

Current wildfire incidents from WFIGS by state

get_wildfire_perimeters

Active fire perimeters and boundaries with acreage

search_national_forests

Search National Forests by name or state

Tool

Description

search_fda_recalls

Search FDA drug, food, and device recall/enforcement reports

get_fda_adverse_events

Search drug adverse event reports from FAERS

get_fda_drug_labels

Search drug labeling and SPL data (indications, warnings, dosage)

Tool

Description

search_sba_datasets

Search SBA open datasets on data.sba.gov

get_sba_size_standards

Look up small business size standards by industry or NAICS code

get_sba_disaster_loans

Get SBA disaster loan data by state or year

Tool

Description

search_osha_inspections

Search OSHA workplace inspections by state or establishment

get_osha_violations

Get violations for a specific OSHA inspection

search_osha_fatalities

Search workplace fatality and catastrophe reports

Tool

Description

search_vehicle_recalls

Search NHTSA vehicle recall campaigns by make, model, and year

get_vehicle_complaints

Get consumer complaints about vehicles from NHTSA

decode_vin

Decode a Vehicle Identification Number for make/model/year/specs

Tool

Description

find_treatment_facilities

Find mental health and substance abuse treatment facilities near a location

search_samhsa_datasets

Search SAMHSA open data catalog for behavioral health datasets

get_samhsa_facility_details

Get detailed info about a specific SAMHSA treatment facility

Tool

Description

get_company_filings

Get SEC filings by ticker or CIK (10-K, 10-Q, 8-K)

search_company

Find a company CIK by name or ticker guidance

get_latest_submissions

Get recent submissions filtered by form type

get_company_facts

Get company facts and XBRL financial data

query_sec_edgar

Raw SEC EDGAR API access

Tool

Description

get_crime_estimates

Crime estimates by state or national from the FBI UCR program

get_arrest_data

National arrest data by offense type

search_crime_datasets

Search crime and justice datasets on Data.gov

Tool

Description

search_cfpb_complaints

Search consumer complaints by product, company, state, or keyword

get_cfpb_complaint

Get full details of a specific consumer complaint by ID

get_cfpb_complaint_stats

Aggregate complaint statistics by product, company, or state

Tool

Description

search_national_parks

Search parks by name, keyword, or state code

get_park_alerts

Active alerts for a park (closures, cautions, dangers)

get_park_info

Detailed park info including hours, fees, and contacts

Tool

Description

search_usda_foods

Search FoodData Central for nutritional info on foods

get_food_details

Get detailed nutrition data for a specific food by FDC ID

get_crop_data

Get NASS crop production, acreage, and yield data by state and year

Tool

Description

get_electricity_data

Retail electricity sales, prices, and revenue by state

get_petroleum_prices

Gasoline, diesel, and heating oil price data

get_energy_overview

Browse available EIA data categories and routes

Tool

Description

get_airline_ontime_stats

Airline on-time performance, delays, and cancellations

get_border_crossing_data

US-Canada and US-Mexico border crossing entry data

search_bts_datasets

Search BTS open datasets on data.bts.gov

Tool

Description

get_radiation_measurements

Radiation readings near a location

get_radiation_history

Radiation history with date range filtering

query_safecast

Raw Safecast API access

Tool

Description

get_population

Population by state or county

get_demographics

Age, race, income breakdown

get_housing_stats

Home values, rent, vacancy rates

query_census

Raw Census API with custom variables

Tool

Description

get_country_indicators

GDP, population, poverty for any country

compare_countries

Compare indicators across multiple countries

query_worldbank

Raw World Bank API access

Tool

Description

search_fred_series

Search for economic data series by keyword

get_fred_series

Get observations for a series (e.g., GDP, UNRATE, CPIAUCSL)

get_fred_series_info

Get metadata about a series

Tool

Description

get_bls_timeseries

Get time series data for any BLS series (CPI, employment, PPI)

search_bls_series

Look up common BLS series IDs by keyword

get_unemployment_rate

National or state-level unemployment rate data

Tool

Description

get_bea_regional_data

Regional GDP, income, and employment data by state

get_bea_gdp_by_industry

GDP breakdown by industry sector

search_bea_datasets

List available BEA datasets and tables

Tool

Description

search_school_districts

Search school districts by state or name

get_school_enrollment

Get school enrollment data by state or district

search_colleges

Search colleges and universities via IPEDS

Tool

Description

get_astronomy_photo

Astronomy Picture of the Day

get_mars_rover_photos

Photos from Curiosity, Perseverance, and more

search_nasa_images

Search NASA's image and video library

query_nasa

Raw NASA API access

Tool

Description

search_faa_airports

Search FAA AIS airport geodata by identifier, name, city, or state

get_faa_airport

FAA AIS airport details by FAA identifier or ICAO ID

get_faa_runways

FAA AIS runway records for an airport

get_faa_airspace_near

FAA class and special-use airspace near a coordinate

get_faa_uas_facility_map

FAA UAS Facility Map records near a coordinate

query_faa_ais

Raw bounded FAA AIS ArcGIS FeatureServer query

get_faa_tfrs

Active FAA Temporary Flight Restrictions with optional filters

get_faa_tfr_summary

FAA TFR counts by center/facility

get_faa_tfr_shapes

Active FAA TFR GeoJSON-style shapes

get_faa_tfr_detail

Parsed FAA TFR detail XML for a NOTAM ID

get_faa_nas_airport_events

Current FAA NAS airport events

get_faa_ground_stops

Current FAA NAS ground stop events

get_faa_ground_delays

Current FAA NAS ground delay events

get_faa_airport_closures

Current FAA NAS airport closure events

get_faa_operations_plan

Current FAA NAS operations plan JSON

get_faa_artcc_boundaries

FAA NAS ARTCC boundary data

lookup_faa_aircraft_registration

Bounded FAA aircraft registry lookup by N-number

search_faa_aircraft_registry

Bounded FAA aircraft registry search by make/model/state/status

get_faa_aircraft_type_characteristics

FAA aircraft type characteristics lookup

search_faa_aircraft_type_characteristics

FAA aircraft type characteristics search

search_faa_catalog

FAA Data Catalog CKAN search

query_faa_catalog

Raw FAA Data Catalog CKAN query

Tool

Description

search_datasets

Search 300,000+ US government datasets

get_dataset_info

Dataset metadata and download links

query_datagov

Raw CKAN API access

search_eu_datasets

Search European Union datasets

get_eu_dataset_info

EU dataset details and distributions

query_eu_data

Raw EU Data Portal API access


FAA Source Notes

First-wave FAA tools use public no-key sources:

Source

Endpoint family

Freshness

Caveat

FAA AIS ArcGIS FeatureServers

services6.arcgis.com/.../FeatureServer

FAA AIS publication cycle; service metadata exposes edit dates

Informational geodata only

FAA TFR

tfr.faa.gov/tfrapi and GeoServer WFS

Active FAA TFR site data

Verify official FAA/briefing sources before operational use

FAA NAS Status

nasstatus.faa.gov/api

Current NAS Status API data

Status data can change quickly

FAA Aircraft Registry

registry.faa.gov/database/ReleasableAircraft.zip

Daily public ZIP download

Public records may include owner information; searches are bounded

FAA Aircraft Characteristics

FAA downloadable workbook

FAA published workbook update cadence

Type characteristics, not individual aircraft or live operations

FAA Data Catalog

catalog.data.faa.gov/api/3

Catalog metadata update cadence

Discovery only; resources vary

FAA aviation tools are informational only. Verify official FAA, NOTAM, chart, and flight briefing sources before making operational decisions. Aircraft registry tools use public FAA records and keep searches bounded because registry data can include owner information.

Deferred FAA-adjacent integrations:

  • FAA Developer Portal products: require FAA account/API key.

  • FAA SWIM: requires access agreement.

  • Full NOTAM Search/NMS scraping: deferred; TFR data is the first-wave NOTAM subset.

  • NOAA Aviation Weather Center: useful aviation weather data, but not FAA-owned.

  • FAA Wildlife Strike API: deferred until a production hostname and public-use terms are confirmed; no POST/add/update/upload endpoints are included.

Configuration

Variable

Purpose

Default

OPENWEATHER_API_KEY

Enables global weather tools

(disabled)

NASA_API_KEY

Higher rate limits for NASA + FIRMS

DEMO_KEY (30 req/hr)

FRED_API_KEY

Enables FRED economic data tools

(disabled)

BLS_API_KEY

Higher rate limits for BLS (25 to 500 queries/day)

(works without key)

NPS_API_KEY

Enables National Park Service tools

(disabled)

EIA_API_KEY

Enables EIA energy market tools

(disabled)

BEA_API_KEY

Enables BEA economic accounts tools

(disabled)

USDA_API_KEY

Enables USDA food nutrition and crop data tools

(disabled)

FBI_CDE_API_KEY

Enables FBI Crime Data Explorer / BJS crime tools

(disabled)

API_TIMEOUT

Request timeout in seconds

30

MCP_CIVIC_DATA_CACHE_DIR

Optional cache root for FAA registry/workbook downloads

~/.cache/mcp-civic-data

On startup the server prints which APIs are available:

API Availability:
  ✓ NOAA Weather          ✓ Census         ✓ World Bank
  ✓ OpenAQ                ✓ USGS Water     ✓ USGS Earthquakes
  ✓ Safecast              ✓ Data.gov       ✓ EU Open Data
  ✓ Space Weather         ✓ NASA FIRMS     ✓ NASA
  ✓ SEC EDGAR             ✓ CDC Open Data  ✓ EPA ECHO/TRI
  ✓ BLS                   ✓ FEMA
  ✓ SBA                   ✓ CFPB
  ✓ CMS Healthcare        ✓ SAMHSA
  ✓ FAA Public Aviation Data
  ✗ OpenWeather (key not set)
  ✗ EIA (key not set)
  ✗ BEA (key not set)
  ✗ USDA (key not set)

Implementation Roadmap

The active roadmap lives in #87 and the first delivery milestone is First Wave: Foundation + Core Data. The backlog below reflects the implementation plan staged in GitHub issues.

First Wave

Foundation

  • #48 Add comprehensive error handling with fallback sources

  • #47 Add intelligent caching for API responses

  • #44 Add unit tests for 13 API integrations

  • #45 Extend CI/CD toward publishing and release automation

Core Data Sources

  • #55 Add NOAA radar and forecast discussion tools

  • #54 Add FRED economic indicators tools

  • #53 Add CDC public health surveillance tools

  • #56 Add EPA environmental compliance and site tools

  • #77 Add NOAA CO-OPS tides, currents, and coastal flooding tools

Expansion Backlog

Civic, Health, and Public Services

  • #57 Add BLS labor statistics tools

  • #61 Add FEMA disaster declarations and assistance tools

  • #62 Add ClinicalTrials.gov health research tools

  • #63 Add USDA Forest Service land and wildfire tools

  • #64 Add Bureau of Justice Statistics tools

  • #65 Add USDA food and agriculture data tools

  • #68 Add SAMHSA mental health and treatment facility tools

  • #71 Add NCES education and school district tools

  • #72 Add NHTSA traffic safety and crash statistics tools

  • #73 Add OSHA workplace safety and enforcement tools

  • #78 Add SBA small business and disaster loan tools

  • #80 Add FDA recalls, shortages, and safety alert tools

  • #84 Add National Park Service parks and alerts tools

Economics, Finance, and Infrastructure

  • #49 Add composite queries for multi-source data aggregation

  • #59 Add EIA energy market and grid tools

  • #75 Add CFPB consumer complaint and financial protection tools

  • #79 Add BTS freight and transportation performance tools

  • #82 Add SEC filings and company disclosure tools

  • #83 Add BEA regional and national economic accounts tools

Deferred / High-Complexity Integrations

  • #52 Add GTFS transit and mobility tools

  • #58 Add FAA airport delay and NAS status tools

  • #60 Add HUD housing and homelessness tools

  • #66 Add NREL renewable energy and charging tools

  • #67 Add USDA NRCS soil, snowpack, and water tools

  • #69 Add OpenSecrets campaign finance and lobbying tools

  • #70 Add USCIS immigration statistics tools

  • #76 Add FCC broadband coverage and internet access tools

  • #81 Add FEC election results and committee filing tools

  • #85 Add USITC trade and tariff data tools

The backlog is intentionally opinionated: build strong shared foundations first, then layer in the highest-value public data sources, then take on the messy, identifier-heavy, or operations-heavy integrations.


Development

git clone https://github.com/EricGrill/mcp-civic-data.git
cd mcp-civic-data
python3 -m pip install -e .
python3 -m mcp_govt_api

Validation commands:

python3 -m compileall src
uv run python -m unittest discover -s tests -p "test_*.py"
uv build

Contributing

See CONTRIBUTING.md for local setup, validation, and pull request guidance.

Code of Conduct

Contributor expectations are documented in CODE_OF_CONDUCT.md.

Security

Please report vulnerabilities using the process in SECURITY.md.

License

MIT — see LICENSE.


Available Tools

22 tools
compare_countriesB

Compare an economic indicator across multiple countries.

Args:
    countries: List of country codes (e.g., ['USA', 'CHN', 'IND'])
    indicator: World Bank indicator code (default: GDP)

Returns:
    Comparison table of the indicator across countries
ParametersJSON Schema
NameRequiredDescriptionDefault
countriesYes
indicatorNoNY.GDP.MKTP.CD

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/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 mentions that the tool returns a 'comparison table' but doesn't specify data sources (e.g., World Bank), time frames, error handling, rate limits, or authentication needs. For a tool with no annotations, this leaves significant gaps in understanding its operational behavior.

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 well-structured and front-loaded, starting with a clear purpose sentence, followed by concise sections for 'Args' and 'Returns'. Each sentence adds value without redundancy, making it easy to scan and understand quickly. No wasted words or unnecessary details are present.

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 has an output schema (implied by 'Returns' in the description), the description doesn't need to detail return values. However, with no annotations and only basic parameter semantics, it lacks information on data sources, constraints, or error conditions. For a comparison tool with 2 parameters, it's minimally adequate but could be more comprehensive.

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 description adds meaningful context beyond the input schema, which has 0% description coverage. It explains that 'countries' should be a list of country codes with an example (['USA', 'CHN', 'IND']), and 'indicator' is a World Bank indicator code with a default (GDP). This compensates well for the schema's lack of descriptions, though it doesn't detail all possible indicator codes or country code formats.

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's purpose: 'Compare an economic indicator across multiple countries.' It specifies the verb ('compare') and resource ('economic indicator across multiple countries'), making the function unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'get_country_indicators' or 'query_worldbank', which might offer similar functionality.

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?

The description provides no guidance on when to use this tool versus alternatives. It mentions a default indicator (GDP) but doesn't specify scenarios where this tool is preferred over siblings like 'get_country_indicators' or 'query_worldbank', nor does it outline prerequisites or exclusions. Usage is implied through the description but not explicitly stated.

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

get_astronomy_photoA

Get NASA's Astronomy Picture of the Day (APOD).

Args:
    date: Optional date in YYYY-MM-DD format (default: today)

Returns:
    Title, explanation, and URL of the astronomy picture
ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/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 the full burden. It mentions the tool fetches data from NASA's APOD service and describes the return format, but lacks details on rate limits, authentication needs, error handling, or data freshness. It adequately covers basic behavior but misses 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 efficiently structured with a clear purpose statement followed by labeled sections for arguments and returns. Every sentence adds value without redundancy, and it's front-loaded with the core functionality, making it easy to scan and understand quickly.

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's low complexity (1 optional parameter) and the presence of an output schema (which handles return values), the description is largely complete. It covers purpose, parameter usage, and return content. However, it could improve by addressing behavioral aspects like rate limits or error scenarios, which are not covered by annotations or 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?

With 0% schema description coverage for the single parameter, the description compensates by specifying the parameter's purpose ('Optional date in YYYY-MM-DD format'), default value ('default: today'), and format. This adds meaningful context beyond the bare schema, though it doesn't detail edge cases like invalid dates.

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 specific action ('Get NASA's Astronomy Picture of the Day') and identifies the exact resource (APOD). It distinguishes itself from sibling tools like 'get_mars_rover_photos' or 'query_nasa' by focusing on a specific NASA service rather than general queries or other NASA 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 Guidelines3/5

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

The description implies usage for retrieving APOD data, but provides no explicit guidance on when to use this tool versus alternatives like 'query_nasa' or 'search_nasa_images'. It lacks any mention of prerequisites, exclusions, or comparative context with sibling tools, leaving usage decisions to inference.

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

get_country_indicatorsB

Get economic indicators for a country from the World Bank.

Args:
    country: Country code (e.g., 'USA', 'CHN', 'IND', 'BRA') or name
    indicators: Optional list of indicator codes. Defaults to GDP, population, poverty.

Returns:
    Economic indicators for the specified country
ParametersJSON Schema
NameRequiredDescriptionDefault
countryYes
indicatorsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 carries the full burden of behavioral disclosure. It mentions the tool fetches data (implied read-only) and specifies default indicators, but lacks details on rate limits, authentication needs, error handling, or data freshness. This is inadequate for a tool with external API dependencies.

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 efficiently structured with a clear opening sentence, followed by well-organized 'Args' and 'Returns' sections. Every sentence adds value without redundancy, making it easy to parse and front-loaded with essential information.

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's moderate complexity (2 parameters, external data source), the description covers purpose and parameters adequately, and an output schema exists to handle return values. However, it lacks behavioral details like rate limits or error cases, which are important for API-based tools, slightly reducing completeness.

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 description adds significant value beyond the input schema, which has 0% coverage. It explains 'country' accepts codes or names with examples ('USA', 'CHN'), clarifies 'indicators' is optional with defaults (GDP, population, poverty), and provides semantic context not in the schema. This compensates well for the low schema coverage.

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 action ('Get economic indicators') and resource ('for a country from the World Bank'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'query_worldbank' or 'get_population', which might offer overlapping functionality.

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 'query_worldbank' or 'get_population'. The description mentions the data source (World Bank) but doesn't specify use cases, exclusions, or comparisons with siblings, leaving the agent to infer usage context.

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

get_dataset_infoB

Get detailed information about a specific Data.gov dataset.

Args:
    dataset_id: The dataset ID (from search results)

Returns:
    Detailed metadata and download links for the dataset
ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 carries the full burden of behavioral disclosure. It states the tool retrieves 'detailed metadata and download links', which is helpful, but it doesn't mention important behavioral traits such as whether this is a read-only operation, potential rate limits, authentication needs, or error handling. For a tool with no annotation coverage, this leaves significant gaps in understanding its behavior.

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 well-structured and concise, with a clear purpose statement followed by brief sections for 'Args' and 'Returns'. Every sentence adds value without unnecessary elaboration, making it easy to scan and understand quickly.

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 that there's an output schema (which handles return values), the description doesn't need to detail outputs. However, for a tool with no annotations and a simple input schema, the description adequately covers the basics but could be more complete by addressing behavioral aspects like read-only nature or error conditions, which are important for safe and effective 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?

The description adds meaningful context for the single parameter 'dataset_id' by specifying it should come 'from search results', which clarifies its source and usage beyond the schema's basic type definition. Since there's only one parameter and schema description coverage is 0%, this additional semantic information is valuable and compensates well for the lack of schema descriptions.

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's purpose with a specific verb ('Get') and resource ('detailed information about a specific Data.gov dataset'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'query_datagov' or 'search_datasets', which might have overlapping functionality.

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 by mentioning 'dataset_id (from search results)', suggesting it should be used after searching for datasets. However, it doesn't provide explicit guidance on when to use this tool versus alternatives like 'query_datagov' or 'search_datasets', leaving some ambiguity about the best context for its application.

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

get_demographicsA

Get demographic breakdown for a US state or county.

Args:
    state: Two-letter state code (e.g., 'CA', 'TX')
    county: Optional county FIPS code (3 digits)

Returns:
    Age, race, and income demographics from the American Community Survey
ParametersJSON Schema
NameRequiredDescriptionDefault
stateYes
countyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 carries full burden for behavioral disclosure. It states what data is returned (age, race, income demographics) and the data source (American Community Survey), which is helpful. However, it doesn't describe important behavioral traits like whether this is a read-only operation (implied but not stated), potential rate limits, authentication requirements, error conditions, or how county-level data differs from state-level. The description adds some context but leaves significant gaps.

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 well-structured and appropriately sized. It starts with a clear purpose statement, then provides parameter details in a labeled 'Args' section, and concludes with return value information. Every sentence adds value: the first establishes scope, the parameter explanations are essential given schema gaps, and the return statement clarifies output content. 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's moderate complexity (2 parameters, US geographic focus), no annotations, and the presence of an output schema (which handles return value documentation), the description is reasonably complete. It covers purpose, parameter semantics, and output content adequately. The main gap is lack of behavioral context like rate limits or error handling, but the output schema reduces the need for detailed return value explanation.

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 description adds substantial value beyond the input schema, which has 0% description coverage. It explains that 'state' requires a 'Two-letter state code' with examples ('CA', 'TX'), and 'county' is a 'FIPS code (3 digits)' and optional. This provides crucial semantic context that the bare schema lacks. The only minor gap is not clarifying if county codes are state-specific or national.

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's purpose: 'Get demographic breakdown for a US state or county' with specific data sources (American Community Survey) and demographic categories (age, race, income). It distinguishes from siblings like 'get_population' or 'query_census' by focusing on detailed demographic breakdowns rather than general population counts or census queries. However, it doesn't explicitly contrast with all similar tools like 'get_housing_stats' which might overlap in socioeconomic 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 context through the parameter descriptions (US state/county focus) and return data specification, suggesting it's for detailed demographic analysis rather than broader geographic or non-US queries. However, it lacks explicit guidance on when to use this tool versus alternatives like 'get_population' for basic counts or 'query_census' for raw census data, and doesn't mention prerequisites or exclusions.

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

get_eu_dataset_infoC

Get detailed information about a specific EU Open Data dataset.

Args:
    dataset_id: The dataset ID (from search results)

Returns:
    Detailed metadata and distribution links for the dataset
ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/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 states the tool retrieves 'detailed information', but doesn't mention aspects like rate limits, authentication needs, error handling, or whether it's a read-only operation. For a tool with no annotations, this leaves significant gaps in understanding its behavior.

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 concise and well-structured with clear sections for Args and Returns. It uses two sentences efficiently, though the second sentence could be more front-loaded. There's no unnecessary verbosity, making it easy to parse.

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 has an output schema, the description doesn't need to detail return values, which is appropriate. However, with no annotations and a simple parameter, the description provides basic purpose and parameter context but lacks behavioral details like error cases or usage prerequisites. It's minimally complete but could be more informative for an agent.

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 description adds minimal semantics beyond the input schema: it specifies that dataset_id is 'from search results', which provides context not in the schema. However, with 0% schema description coverage and only one parameter, this is adequate but not comprehensive. The baseline is 3 since the schema covers the parameter structure, but the description adds some value.

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 resource 'detailed information about a specific EU Open Data dataset', making the purpose evident. However, it doesn't explicitly differentiate from sibling tools like 'get_dataset_info' or 'query_eu_data', which might have overlapping functionality, so it doesn't reach the highest score.

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?

The description provides no guidance on when to use this tool versus alternatives like 'search_eu_datasets' or 'query_eu_data'. It mentions the dataset_id is 'from search results', implying a prerequisite, but doesn't clarify the relationship or usage context compared to siblings.

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

get_global_weatherA

Get current weather for any city worldwide (requires OPENWEATHER_API_KEY).

Args:
    city: City name (e.g., 'London', 'Tokyo', 'Paris')
    country_code: Optional 2-letter country code (e.g., 'GB', 'JP', 'FR')

Returns:
    Current weather conditions for the city
ParametersJSON Schema
NameRequiredDescriptionDefault
cityYes
country_codeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/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 full burden of behavioral disclosure. It mentions the API key requirement (important authentication context) and specifies 'current weather' (temporal scope), but doesn't cover other behavioral aspects like rate limits, error handling, response format details, or whether it's a read-only operation. It adds some value but leaves significant gaps in behavioral understanding.

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 perfectly structured and front-loaded: the first sentence states the core purpose, followed by well-organized sections for prerequisites, parameters, and returns. Every sentence earns its place with no wasted words, making it easy to scan and understand quickly.

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's moderate complexity (2 parameters, API dependency), no annotations, but with an output schema (implied by 'Returns' section), the description is mostly complete. It covers purpose, prerequisites, parameters, and return concept, though it could benefit from more behavioral context like rate limits or error scenarios. The output schema reduces the need to detail return values, keeping it appropriately scoped.

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?

With 0% schema description coverage, the description fully compensates by providing clear parameter documentation in the Args section. It explains both parameters (city and country_code) with examples and indicates country_code is optional, adding essential meaning beyond the bare schema. This is exactly what's needed when schema coverage is low.

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 specific action ('Get current weather'), resource ('for any city worldwide'), and scope ('worldwide'), distinguishing it from siblings like get_weather_forecast (future weather) and get_weather_alerts (alerts). It uses precise language that immediately communicates the tool's function without ambiguity.

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 by specifying 'requires OPENWEATHER_API_KEY' as a prerequisite and indicating it's for 'current weather,' which implicitly distinguishes it from forecast tools. However, it doesn't explicitly state when NOT to use it or name specific alternatives among siblings, leaving some room for improvement in direct comparison guidance.

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

get_housing_statsB

Get housing statistics for a US state or county.

Args:
    state: Two-letter state code (e.g., 'CA', 'TX')
    county: Optional county FIPS code (3 digits)

Returns:
    Housing data including median values, rent, and vacancy rates
ParametersJSON Schema
NameRequiredDescriptionDefault
stateYes
countyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/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 mentions what data is returned (median values, rent, vacancy rates) but lacks critical details: it doesn't specify data sources, timeframes, update frequency, rate limits, or error handling. For a data retrieval tool with zero annotation coverage, this leaves significant gaps in understanding its operational behavior.

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 well-structured and front-loaded, starting with the core purpose. It uses bullet points for 'Args' and 'Returns' to organize information efficiently, with no redundant sentences. Every part adds value, making it easy for an agent to parse quickly.

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 moderate complexity (2 parameters, no annotations, but with an output schema), the description is partially complete. It covers parameters and return types adequately, but lacks context on data sources, limitations, or sibling tool differentiation. The output schema likely details the return structure, so the description doesn't need to explain return values, but overall completeness is limited by missing behavioral and usage details.

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 description adds meaningful semantics beyond the input schema, which has 0% description coverage. It explains that 'state' is a 'Two-letter state code (e.g., 'CA', 'TX')' and 'county' is an 'Optional county FIPS code (3 digits)', clarifying format and examples not present in the schema. However, it doesn't detail validation rules or provide a full list of valid codes, leaving some ambiguity.

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's purpose: 'Get housing statistics for a US state or county.' It specifies the verb ('Get') and resource ('housing statistics'), and distinguishes it from siblings by focusing on US housing data. However, it doesn't explicitly differentiate from similar tools like 'get_demographics' or 'query_census', which might also provide related 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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention siblings like 'get_demographics' or 'query_census', which could offer overlapping or complementary data. There's no context on prerequisites, such as data availability or limitations, leaving the agent to infer usage based on the tool name alone.

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

get_mars_rover_photosA

Get photos from Mars rovers (Curiosity, Opportunity, Spirit, Perseverance).

Args:
    rover: Rover name: 'curiosity', 'opportunity', 'spirit', or 'perseverance'
    sol: Martian sol (day) number
    earth_date: Earth date in YYYY-MM-DD format (alternative to sol)
    camera: Optional camera name (e.g., 'FHAZ', 'RHAZ', 'MAST', 'NAVCAM')

Returns:
    List of photo URLs from the specified rover
ParametersJSON Schema
NameRequiredDescriptionDefault
roverNocuriosity
solNo
earth_dateNo
cameraNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states what the tool returns ('List of photo URLs') but lacks information about rate limits, authentication requirements, error conditions, pagination, or API constraints. The description doesn't contradict any annotations since none exist.

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 well-structured with clear sections (purpose, args, returns) and uses bullet-like formatting. Every sentence adds value, though the rover list could be more concise. It's appropriately sized for a 4-parameter tool with no annotations.

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's moderate complexity (4 parameters, no annotations, but has output schema), the description provides good coverage. The output schema handles return values, so the description's brief 'Returns' statement is sufficient. It explains all parameters meaningfully, though could benefit from more behavioral context.

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?

Schema description coverage is 0%, so the description must compensate. It provides meaningful explanations for all 4 parameters: rover name options, sol definition, earth_date format, and camera examples. This adds substantial value beyond the bare schema, though it doesn't cover all possible camera values or parameter interactions.

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 specific action ('Get photos') and resources ('from Mars rovers') with explicit rover names listed. It distinguishes this tool from sibling tools by focusing on Mars rover photos specifically, unlike other tools that handle astronomy photos, weather, census data, etc.

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 context through parameter explanations (e.g., 'alternative to sol'), but doesn't explicitly state when to use this tool versus alternatives like 'get_astronomy_photo' or 'search_nasa_images'. No explicit guidance on prerequisites or when-not-to-use scenarios is provided.

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

get_populationA

Get population data for a US state or county.

Args:
    state: Two-letter state code (e.g., 'CA', 'TX') or state FIPS code
    county: Optional county name or FIPS code

Returns:
    Population statistics from the American Community Survey
ParametersJSON Schema
NameRequiredDescriptionDefault
stateYes
countyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only minimally describes behavior. It states what data is returned but doesn't cover error handling, rate limits, authentication needs, or whether this is a read-only operation (though 'Get' implies read). More behavioral context would be helpful for a tool with no annotation coverage.

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 perfectly structured with a clear purpose statement followed by organized Args and Returns sections. Every sentence earns its place, providing essential information without redundancy. The formatting with clear section headers enhances readability.

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 an output schema (so return values don't need description) and the description covers parameter semantics well, this is reasonably complete. The main gap is lack of behavioral context that would be important for a tool with zero annotation coverage, but the core functionality is well-described.

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 0% schema description coverage, the description compensates well by explaining both parameters: 'state' as 'Two-letter state code or state FIPS code' and 'county' as 'Optional county name or FIPS code'. It clarifies format examples and optionality, adding significant value beyond the bare 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 purpose with specific verb ('Get') and resource ('population data for a US state or county'), distinguishing it from siblings like 'get_demographics' or 'query_census' by specifying geographic scope and data source (American Community Survey).

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 context by specifying 'US state or county' and 'American Community Survey', but provides no explicit guidance on when to use this tool versus alternatives like 'get_demographics' or 'query_census'. It doesn't mention prerequisites or exclusions.

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

get_weather_alertsA

Get active weather alerts for a US state.

Args:
    state: Two-letter state code (e.g., 'CA', 'TX', 'NY')

Returns:
    List of active weather alerts for the state
ParametersJSON Schema
NameRequiredDescriptionDefault
stateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 carries the full burden of behavioral disclosure. It mentions that it returns 'List of active weather alerts,' which indicates a read-only operation, but lacks details on permissions, rate limits, error handling, or data freshness. For a tool with no annotation coverage, this is a significant gap in 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 front-loaded with the core purpose in the first sentence, followed by structured sections for 'Args' and 'Returns' that are efficient and waste-free. Every sentence earns its place by providing essential information without redundancy, making it highly concise and well-structured.

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's low complexity (one parameter) and the presence of an output schema (which handles return values), the description is mostly complete. It covers the purpose, parameter semantics, and return type adequately. However, it lacks behavioral details like error cases or usage constraints, which slightly reduces completeness for a tool with no annotations.

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 0% schema description coverage, the description compensates by explaining the 'state' parameter as 'Two-letter state code (e.g., 'CA', 'TX', 'NY'),' adding crucial semantic context beyond the schema's basic type. Since there is only one parameter, this is sufficient to achieve a high score, though not perfect due to lack of further details like validation or examples beyond the few given.

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 specific action ('Get active weather alerts') and resource ('for a US state'), distinguishing it from sibling tools like 'get_weather_forecast' or 'get_global_weather' which serve different weather-related purposes. It precisely defines the tool's function without being vague or tautological.

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 by specifying 'for a US state,' which provides some context, but it does not explicitly state when to use this tool versus alternatives like 'get_weather_forecast' or 'get_global_weather.' No exclusions or prerequisites are mentioned, leaving the agent to infer appropriate scenarios.

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

get_weather_forecastA

Get weather forecast for a US location by coordinates.

Args:
    latitude: Latitude of the location (e.g., 38.8894 for Washington DC)
    longitude: Longitude of the location (e.g., -77.0352 for Washington DC)

Returns:
    Current conditions and 7-day forecast from NOAA
ParametersJSON Schema
NameRequiredDescriptionDefault
latitudeYes
longitudeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It discloses the data source (NOAA) and return content (current conditions + 7-day forecast), which is useful behavioral context. However, it doesn't mention rate limits, error conditions, authentication needs, or whether this is a read-only operation (though 'Get' implies read-only).

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

Conciseness5/5

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

The description is efficiently structured with a clear purpose statement followed by organized sections for Args and Returns. Every sentence adds value - no redundant information. The formatting with bullet-like sections enhances readability without unnecessary verbosity.

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 an output schema (which handles return values), the description provides adequate context for a weather forecast tool. It covers purpose, parameters with examples, and return content overview. However, for a tool with no annotations, it could benefit from mentioning operational constraints like rate limits or error handling.

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?

Schema description coverage is 0%, so the description must compensate. It provides concrete examples for both parameters (Washington DC coordinates) and clarifies they represent geographic coordinates for US locations. This adds meaningful context beyond the bare schema, though it doesn't explain parameter constraints like valid ranges.

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 with specific verb ('Get') and resource ('weather forecast'), specifying geographic scope ('US location by coordinates') and data source ('NOAA'). It distinguishes from siblings like 'get_global_weather' by focusing on US locations and from 'get_weather_alerts' by providing forecasts rather than alerts.

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 implicitly indicates when to use this tool (for US weather forecasts via coordinates) but doesn't explicitly state when not to use it or name alternatives. It doesn't provide guidance on prerequisites or comparisons with similar tools like 'get_global_weather' or 'query_noaa'.

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

query_censusA

Make a raw query to the Census API.

Args:
    dataset: Dataset path (e.g., 'acs/acs5', 'dec/pl')
    variables: List of variable codes to retrieve
    geo: Geography specification (e.g., 'state:06', 'county:*&in=state:06')
    year: Data year (default: 2022)

Returns:
    Raw JSON response from Census API
ParametersJSON Schema
NameRequiredDescriptionDefault
datasetYes
variablesYes
geoYes
yearNo2022

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'raw query' and 'raw JSON response', which implies direct API interaction, but doesn't disclose important behavioral traits like rate limits, authentication requirements, error handling, or whether this is a read-only operation. The description provides minimal behavioral context beyond the basic operation.

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 perfectly structured and front-loaded with the core purpose, followed by organized parameter documentation and return value clarification. Every sentence earns its place, with no wasted words. The Args/Returns formatting makes it easy to scan while maintaining complete information density.

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 4-parameter tool with no annotations and no output schema, the description provides adequate parameter documentation but lacks important contextual information. It doesn't explain the nature of the 'raw JSON response' structure, doesn't mention rate limits or authentication, and provides no guidance on error scenarios. While the parameter coverage is excellent, other contextual gaps remain.

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?

With 0% schema description coverage, the description fully compensates by providing clear semantic explanations for all 4 parameters. Each parameter gets specific examples and context: dataset paths like 'acs/acs5', variable codes as a list, geography specifications with examples, and year with default value. This adds substantial meaning beyond the bare 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 specific action ('Make a raw query') and target resource ('Census API'), distinguishing it from sibling tools that query different data sources like NASA, NOAA, or WorldBank. It provides a precise verb+resource combination that leaves no ambiguity about what this tool does.

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?

The description provides no guidance on when to use this tool versus alternatives. While it's clear this is for Census data, there's no mention of when to choose it over other demographic tools like 'get_demographics' or 'get_population', nor does it specify prerequisites or constraints for effective use.

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

query_datagovC

Make a raw query to the Data.gov CKAN API.

Args:
    action: CKAN action (e.g., 'package_search', 'package_show', 'group_list')
    params: Query parameters for the action

Returns:
    Raw JSON response from Data.gov API
ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes
paramsNo

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 carries the full burden of behavioral disclosure. It states the tool returns 'Raw JSON response from Data.gov API,' which hints at the output format, but fails to cover critical aspects like authentication requirements, rate limits, error handling, or whether it's a read-only or mutating operation. For a raw API query tool, this is a significant gap in 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 well-structured and front-loaded, with the core purpose stated first, followed by clear sections for 'Args' and 'Returns.' Each sentence earns its place by providing essential information without redundancy, making it efficient and easy to parse.

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's complexity (raw API queries with 2 parameters), lack of annotations, and no output schema, the description is incomplete. It covers basic purpose and parameters but omits behavioral details like authentication, error handling, and usage context. For a tool that interacts with an external API, this leaves significant gaps in understanding for an AI agent.

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 description coverage is 0%, so the description must compensate. It adds value by explaining that 'action' is a 'CKAN action' with examples (e.g., 'package_search'), and 'params' are 'Query parameters for the action.' However, it doesn't detail common actions or parameter structures beyond this, leaving gaps in understanding. This partial compensation justifies a baseline score of 3.

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's purpose: 'Make a raw query to the Data.gov CKAN API.' It specifies the verb ('query') and resource ('Data.gov CKAN API'), distinguishing it from siblings like 'search_datasets' or 'get_dataset_info' which likely provide higher-level abstractions. However, it doesn't explicitly contrast with these siblings, keeping it at a 4 rather than a 5.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention scenarios where a raw query is preferred over more specific sibling tools (e.g., 'search_datasets' for dataset searches), nor does it outline prerequisites or exclusions. This lack of contextual direction leaves the agent with minimal usage cues.

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

query_eu_dataC

Make a raw query to the EU Open Data Portal API.

Args:
    endpoint: API endpoint (e.g., '/datasets', '/catalogues')
    params: Query parameters

Returns:
    Raw JSON response from EU Open Data API
ParametersJSON Schema
NameRequiredDescriptionDefault
endpointYes
paramsNo

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral context. It mentions 'raw query' and 'raw JSON response' but doesn't disclose authentication requirements, rate limits, error handling, or whether this is a read-only operation versus a mutation. The description doesn't contradict annotations since none exist.

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 appropriately brief with a clear purpose statement followed by Args and Returns sections. However, the Args section could be more informative given the low schema coverage, and the structure is functional but not optimally front-loaded with critical usage 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?

For a tool with 2 parameters, 0% schema coverage, no annotations, and no output schema, the description is insufficient. It lacks details on authentication, error cases, response structure beyond 'raw JSON', and doesn't compensate for the missing parameter documentation, making it incomplete for reliable agent use.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate but provides only basic examples ('/datasets', '/catalogues') without explaining parameter formats, constraints, or semantics. The 'params' field is particularly underspecified as 'Query parameters' with no guidance on structure or valid values.

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 action ('Make a raw query') and target resource ('EU Open Data Portal API'), distinguishing it from siblings like query_census or query_nasa. However, it doesn't explicitly differentiate from query_datagov or query_worldbank which might have similar raw query patterns.

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_eu_dataset_info or search_eu_datasets. The description mentions it's for 'raw query' but doesn't explain when a raw query is preferable over more structured sibling tools.

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

query_nasaC

Make a raw query to the NASA API.

Args:
    endpoint: API endpoint (e.g., '/planetary/apod', '/neo/rest/v1/feed')
    params: Query parameters (api_key will be added automatically)

Returns:
    Raw JSON response from NASA API
ParametersJSON Schema
NameRequiredDescriptionDefault
endpointYes
paramsNo

TDQS

C2.9/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 that 'api_key will be added automatically,' which is useful context about authentication. However, it lacks details on rate limits, error handling, or response behavior beyond 'Raw JSON response,' leaving significant gaps for a tool that interacts with an external API.

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 appropriately sized and front-loaded, starting with the core purpose. The structured 'Args' and 'Returns' sections are efficient, though the example for 'endpoint' could be more concise. Overall, it avoids unnecessary verbosity.

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 complexity of querying an external API with no annotations and no output schema, the description is incomplete. It lacks details on authentication, rate limits, error cases, and the structure of the 'Raw JSON response,' making it inadequate for safe and effective use by an agent.

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 0%, so the description must compensate. It adds meaning by explaining 'endpoint' with examples (e.g., '/planetary/apod') and 'params' as query parameters with the note about api_key. This provides basic semantics beyond the bare schema, but it doesn't fully document all aspects like parameter formats or constraints.

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's purpose: 'Make a raw query to the NASA API.' It specifies the verb ('query') and resource ('NASA API'), though it doesn't explicitly differentiate from sibling tools like 'search_nasa_images' or 'get_astronomy_photo' beyond being a 'raw query' versus more specialized functions.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'search_nasa_images' or 'get_astronomy_photo', nor does it specify use cases or exclusions, leaving the agent to infer usage from the generic 'raw query' phrasing.

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

query_noaaB

Make a raw query to the NOAA Weather API.

Args:
    endpoint: API endpoint path (e.g., '/points/38.8894,-77.0352', '/alerts/active')
    params: Optional query parameters as a dictionary

Returns:
    Raw JSON response from NOAA API
ParametersJSON Schema
NameRequiredDescriptionDefault
endpointYes
paramsNo

TDQS

B3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it returns 'Raw JSON response from NOAA API,' which hints at read-only behavior, but lacks details on authentication needs, rate limits, error handling, or what 'raw' implies (e.g., unprocessed data). This is inadequate for a tool with potential API complexities.

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 appropriately sized and front-loaded, starting with the core purpose followed by structured sections for Args and Returns. Each sentence adds value, with no wasted words, though it could be slightly more concise by integrating the examples more seamlessly.

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's complexity (raw API queries with 2 parameters), no annotations, and no output schema, the description is incomplete. It lacks details on authentication, rate limits, error cases, or how to interpret the raw JSON response, making it insufficient for safe and effective use by an agent.

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 description adds meaningful context beyond the input schema, which has 0% description coverage. It explains 'endpoint' with examples like '/points/38.8894,-77.0352' and '/alerts/active,' and clarifies 'params' as 'Optional query parameters as a dictionary,' compensating well for the schema's lack of documentation.

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's purpose as 'Make a raw query to the NOAA Weather API,' which is a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'get_global_weather' or 'get_weather_forecast,' which likely provide more structured access to similar 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. The description mentions it's for 'raw' queries but doesn't explain scenarios where this is preferable over more specific tools like 'get_weather_forecast' or 'get_weather_alerts,' leaving the agent without context for tool selection.

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

query_openweatherA

Make a raw query to the OpenWeather API (requires OPENWEATHER_API_KEY).

Args:
    endpoint: API endpoint (e.g., '/data/2.5/weather', '/data/2.5/forecast')
    params: Query parameters (appid will be added automatically)

Returns:
    Raw JSON response from OpenWeather API
ParametersJSON Schema
NameRequiredDescriptionDefault
endpointYes
paramsNo

TDQS

A4.1/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 full burden of behavioral disclosure. It mentions the API key requirement and that 'appid will be added automatically', which are useful behavioral details. However, it lacks information on rate limits, error handling, authentication specifics, or response structure beyond 'Raw JSON response'.

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 efficiently structured with a clear opening sentence stating the purpose, followed by bullet-point-like sections for Args and Returns. Every sentence adds value without redundancy, making it easy to scan and understand quickly.

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 complexity of a raw API query tool with no annotations and no output schema, the description is moderately complete. It covers the basic purpose, parameters, and return type, but lacks details on error cases, rate limits, or example usage that would help an agent invoke it correctly in various scenarios.

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 0% schema description coverage, the description compensates by explaining both parameters: 'endpoint' is described with examples (e.g., '/data/2.5/weather'), and 'params' is clarified as query parameters with the note that 'appid will be added automatically'. This adds meaningful context beyond the bare 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 specific action ('Make a raw query') and target resource ('OpenWeather API'), distinguishing it from sibling tools like 'get_global_weather' or 'get_weather_forecast' by emphasizing its raw, direct API access nature rather than processed weather data retrieval.

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 this tool (for raw API queries to OpenWeather) and mentions a prerequisite (requires OPENWEATHER_API_KEY), but does not explicitly state when not to use it or name specific alternatives among the sibling tools for comparison.

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

query_worldbankB

Make a raw query to the World Bank API.

Args:
    country: Country code (e.g., 'USA', 'all')
    indicator: World Bank indicator code (e.g., 'NY.GDP.MKTP.CD')
    params: Additional query parameters

Returns:
    Raw JSON response from World Bank API
ParametersJSON Schema
NameRequiredDescriptionDefault
countryYes
indicatorYes
paramsNo

TDQS

B3.2/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 mentions the tool makes a 'raw query' and returns a 'Raw JSON response', which implies it's a read-only operation without side effects, but it doesn't cover critical aspects like authentication needs, rate limits, error handling, or API constraints. For a tool with no annotations, this is a significant gap in 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 appropriately sized and front-loaded, starting with the core purpose. It uses bullet points for Args and Returns, making it easy to scan. Every sentence adds value without redundancy, and there's no wasted text, earning a top score for efficiency.

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 complexity (3 parameters, no annotations, no output schema), the description is partially complete. It covers the purpose and parameter meanings adequately but lacks behavioral details and usage guidelines. Without an output schema, it hints at the return type ('Raw JSON response'), but more context on response structure or errors would improve completeness.

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 description adds meaningful semantics beyond the input schema, which has 0% description coverage. It explains that 'country' is a country code with examples ('USA', 'all'), 'indicator' is a World Bank indicator code with an example ('NY.GDP.MKTP.CD'), and 'params' are additional query parameters. This compensates well for the schema's lack of descriptions, though it could provide more detail on param formats.

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's purpose: 'Make a raw query to the World Bank API.' It specifies the verb ('query') and resource ('World Bank API'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'query_census' or 'query_nasa' beyond mentioning the specific API, which keeps it from a perfect score.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_country_indicators' or 'get_population', which might offer similar or overlapping functionality, nor does it specify use cases, prerequisites, or exclusions. This lack of context leaves the agent to infer usage independently.

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

search_datasetsA

Search for datasets on Data.gov.

Args:
    query: Search terms (e.g., 'climate', 'census', 'health')
    rows: Number of results to return (default: 10, max: 50)

Returns:
    List of matching datasets with titles and descriptions
ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
rowsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 carries full burden for behavioral disclosure. It mentions the default and max for 'rows', which is useful, but doesn't cover other important aspects like rate limits, authentication requirements, pagination behavior, error handling, or what happens with invalid queries. For a search tool with zero annotation coverage, this leaves significant gaps in understanding its operational behavior.

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 efficiently structured with clear sections (Args, Returns), uses bullet-like formatting, and contains no redundant information. Every sentence adds value: the purpose statement, parameter explanations with examples, and return value description. It's appropriately sized and front-loaded with the core functionality.

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's moderate complexity (search with two parameters), no annotations, and the presence of an output schema (implied by 'Returns' statement), the description is reasonably complete. It covers purpose, parameters with semantics, and return values. However, it could benefit from more behavioral context (like rate limits or error cases) since annotations are absent.

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 description adds meaningful context beyond the input schema, which has 0% description coverage. It explains that 'query' accepts search terms with examples ('climate', 'census', 'health'), and specifies that 'rows' has a default of 10 and max of 50. This compensates well for the schema's lack of descriptions, though it doesn't detail parameter constraints beyond the max for 'rows'.

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's purpose: 'Search for datasets on Data.gov' with a specific verb ('search') and resource ('datasets'). It distinguishes from siblings like 'get_dataset_info' (which retrieves specific dataset details) and 'query_datagov' (which might be broader). However, it doesn't explicitly differentiate from 'search_eu_datasets' (which searches a different platform).

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 through the context of searching Data.gov datasets, but doesn't explicitly state when to use this tool versus alternatives like 'search_eu_datasets' (for EU data) or 'query_datagov' (which might have different functionality). It provides basic parameter guidance but lacks explicit when/when-not scenarios or named alternatives.

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

search_eu_datasetsB

Search for datasets on the European Union Open Data Portal.

Args:
    query: Search terms (e.g., 'environment', 'economy', 'transport')
    limit: Number of results to return (default: 10, max: 50)

Returns:
    List of matching EU datasets with titles and descriptions
ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/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 mentions the return format ('List of matching EU datasets with titles and descriptions') but lacks details on permissions, rate limits, error handling, or pagination behavior. For a search tool with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves.

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 efficiently structured with a clear purpose statement followed by bullet-point-like sections for Args and Returns. Every sentence adds value without redundancy, making it easy to parse and front-loaded with essential information.

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's moderate complexity (2 parameters, no annotations, but with an output schema), the description is reasonably complete. It covers the purpose, parameters, and return format, though it lacks usage guidelines and detailed behavioral context. The presence of an output schema reduces the need to explain return values in depth.

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 description adds semantic context for both parameters: 'query' is explained as 'Search terms (e.g., 'environment', 'economy', 'transport')' and 'limit' as 'Number of results to return (default: 10, max: 50)'. With 0% schema description coverage, this compensates well, but it doesn't provide deeper insights like query syntax or result ordering.

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's purpose as searching for datasets on the European Union Open Data Portal, using specific verbs ('Search for datasets') and identifying the resource ('European Union Open Data Portal'). However, it doesn't explicitly differentiate from sibling tools like 'search_datasets' or 'query_eu_data', which appear to have overlapping domains.

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?

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'search_datasets', 'query_eu_data', and 'get_eu_dataset_info' available, there's no indication of context, prerequisites, or exclusions to help an agent choose appropriately.

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

search_nasa_imagesB

Search NASA's image and video library.

Args:
    query: Search terms (e.g., 'apollo 11', 'mars', 'hubble')
    media_type: Type of media: 'image', 'video', or 'audio'

Returns:
    Search results with titles, descriptions, and URLs
ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
media_typeNoimage

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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. It mentions the tool searches and returns results, but lacks details on behavioral traits such as rate limits, authentication needs, pagination, error handling, or whether it's read-only/destructive. For a search tool with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves operationally.

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 well-structured and front-loaded with the core purpose, followed by clear sections for Args and Returns. Every sentence earns its place by providing essential information without redundancy. It's appropriately sized for a tool with two parameters and an output schema.

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's moderate complexity (2 parameters, no annotations, but with an output schema), the description is reasonably complete. It covers the purpose, parameters, and return values. The output schema exists, so the description doesn't need to detail return structure. However, it lacks behavioral context and usage guidelines, which slightly reduces completeness for agent decision-making.

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 description adds meaningful context beyond the input schema, which has 0% description coverage. It explains that 'query' accepts search terms with examples ('apollo 11', 'mars', 'hubble') and 'media_type' specifies types like 'image', 'video', or 'audio'. This clarifies parameter usage effectively, though it doesn't cover all possible nuances like format constraints or default behavior for 'media_type'.

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 searches NASA's image and video library, providing a specific verb ('search') and resource ('NASA's image and video library'). It distinguishes from siblings like 'get_astronomy_photo' or 'query_nasa' by specifying it's for searching images/videos/audio rather than fetching specific photos or general queries. However, it doesn't explicitly contrast with all siblings, so it's not a perfect 5.

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?

The description provides no guidance on when to use this tool versus alternatives like 'get_astronomy_photo' or 'query_nasa'. It mentions the tool's function but doesn't specify scenarios, prerequisites, or exclusions. The agent must infer usage from the purpose alone, which is insufficient for optimal tool selection.

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

TDQS

B3.1/5.0
Disambiguation3/5

Tools are grouped by data source and purpose, but there is significant overlap. For example, get_country_indicators and compare_countries both use World Bank data, and get_weather_forecast and get_global_weather both provide weather information. Descriptions help clarify, but an agent might struggle to choose between overlapping tools like query_nasa and get_astronomy_photo.

Naming Consistency4/5

Most tools follow a consistent verb_noun pattern (e.g., get_country_indicators, search_datasets, query_census). However, there are minor deviations, such as compare_countries (verb_noun but not 'get' or 'query') and get_astronomy_photo (abbreviated 'photo' instead of 'picture'). Overall, the naming is readable and predictable.

Tool Count2/5

With 22 tools, the count feels heavy for a 'Civic Data' server, as it spans multiple unrelated domains like astronomy, Mars photos, and global weather. This suggests a lack of focus; a more cohesive set might have 10-15 tools centered on government or economic data. The broad scope makes the toolset overwhelming and less coherent.

Completeness3/5

For each data source (e.g., World Bank, NASA, NOAA), there is basic coverage with get/search/query tools, but gaps exist. For instance, there are no update or delete operations, which is reasonable for read-only data, but some domains lack comprehensive endpoints (e.g., limited NASA tools beyond APOD and images). The surface is functional but not fully rounded for all implied use cases.

Maintenance

ActivityStale
ResponsivenessSyncing

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
    B
    maintenance
    MCP server + TypeScript SDK for 36 U.S. government data APIs — 188 tools. Treasury, FRED, Congress, FDA, CDC, FEC, lobbying, and more. Works with VS Code Copilot, Claude Desktop, Cursor.
    100
    142
    108
    MIT
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Connects AI agents to 28 Brazilian public APIs, providing over 200 tools to access data on economy, legislation, transparency, and the judiciary. It enables complex queries and cross-referencing of government datasets like IBGE, the Central Bank, and the National Congress through natural language.
  • A
    license
    B
    quality
    D
    maintenance
    MCP server with 562 tools accessing 114 government data APIs covering economic, health, education, energy, and more from federal, state, and international sources.
    4
    100
    1
    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/EricGrill/mcp-civic-data'

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