Skip to main content
Glama
IBM

chuk-mcp-her

Official
by IBM

chuk-mcp-her

Historic Environment Records MCP Server -- A Model Context Protocol (MCP) server for querying Historic Environment Records across England and Scotland. Searches listed buildings, scheduled monuments, registered parks, battlefields, protected wrecks, and World Heritage Sites via live ArcGIS REST APIs from Historic England and Historic Environment Scotland.

This is a demonstration project provided as-is for learning and testing purposes.

Python 3.11+ License

Features

This MCP server provides structured access to Historic Environment Records through 28 tools across 10 categories, querying 6 data sources via live ArcGIS REST APIs and Heritage Gateway web scraping.

Key capabilities:

  • Source registry pattern -- pluggable adapters for NHLE, AIM, Conservation Areas, Heritage at Risk, Heritage Gateway, and Scotland (HES) with unified query interface

  • England + Scotland coverage -- English heritage via Historic England, Scottish heritage via Historic Environment Scotland (320,000+ NRHE records + designated assets)

  • Spatial-first queries -- bounding box, point+radius, and area searches via ArcGIS Feature/Map Services

  • BNG/WGS84 coordinate support -- automatic conversion between British National Grid (EPSG:27700) and WGS84 (EPSG:4326)

  • Interactive map views -- her_map and her_crossref_map return structured MapContent for rendering in chuk-mcp-ui-compatible clients

  • All tools return fully-typed Pydantic v2 models for type safety, validation, and excellent IDE support

  • Most tools support output_mode="text" for human-readable output alongside the default JSON

1. Server Discovery (her_status, her_list_sources, her_capabilities)

Check server health, list registered data sources, and get full capabilities:

  • Source availability and status

  • Supported query types per source

  • LLM guidance for query planning

2. NHLE Queries (her_search_monuments, her_get_monument, her_search_listed_buildings, her_search_designations, her_count_features)

Search the National Heritage List for England:

  • Scheduled monuments by location, name, or description

  • Listed buildings with grade filtering (I, II*, II)

  • Generic designation search across all 6 designation types

  • Fast feature counts without fetching full records

  • Pagination with offset-based paging

3. Aerial Mapping (her_search_aerial, her_count_aerial, her_get_aerial_feature)

Search aerial investigation mapping data:

  • Archaeological features from aerial photographs and LiDAR

  • Cropmarks, earthworks, and features not in the NHLE

  • Monument type and period filtering

  • Fast feature counts without fetching full records

  • Full details for individual aerial mapping features

4. Conservation Areas (her_search_conservation_areas, her_count_conservation_areas, her_get_conservation_area)

Search Historic England's 8,000+ conservation areas:

  • Search by name, Local Planning Authority, or location

  • Bounding box and point+radius spatial queries

  • Fast counts without fetching full records

  • Full details including designation date and area

5. Heritage at Risk (her_search_heritage_at_risk, her_count_heritage_at_risk, her_get_heritage_at_risk)

Search the Heritage at Risk Register:

  • Annual register of heritage assets at risk of loss

  • Filter by heritage category (Listed Building, Scheduled Monument, etc.)

  • Spatial search by bounding box or point+radius

  • Risk methodology details for each entry

6. Heritage Gateway (her_search_heritage_gateway)

Search local Historic Environment Records via Heritage Gateway:

  • Best-effort access to 60+ local HERs via web scraping

  • Undesignated sites, findspots, and HER monument entries

  • Returns empty results gracefully when Gateway unavailable

7. Scotland (her_search_scotland, her_get_scotland_record, her_search_scotland_designations)

Search Historic Environment Scotland records:

  • 320,000+ National Record of the Historic Environment (NRHE) records via Canmore Points

  • Designated assets: listed buildings, scheduled monuments, gardens and designed landscapes, battlefields, world heritage sites, conservation areas, historic marine protected areas

  • Site type, broad class, and council area filtering

  • Full details for individual records by Canmore ID

8. Cross-Referencing (her_cross_reference, her_enrich_gateway, her_nearby)

Spatial matching, enrichment, and proximity search:

  • Cross-reference candidate locations against known heritage assets

  • Classify candidates as match, near, or novel

  • Grid-based spatial indexing for efficient batch processing (O(n+m) amortised)

  • Optional AIM aerial feature integration (include_aim parameter)

  • Designation type filtering (single type or comma-separated)

  • Enriched match output with 11 fields per asset (source, grade, monument_type, period, form, evidence)

  • Enrich Gateway records with resolved BNG coordinates for cross-referencing

  • Find nearby heritage assets with distance and bearing

  • Accepts both WGS84 and BNG coordinates

9. Export (her_export_geojson, her_export_for_lidar)

Export and format results:

  • GeoJSON FeatureCollection for QGIS, Leaflet, or other GIS tools

  • LiDAR cross-reference format with enriched metadata per source:

    • NHLE sites with grade

    • AIM aerial features with monument_type, period, form, evidence

    • Gateway sites with monument_type and period

  • Optional AIM integration (include_aim) and Gateway sites (gateway_sites) for LiDAR export

10. Map Visualisation (her_map, her_crossref_map)

Interactive heritage maps rendered as structured MapContent for chuk-mcp-ui clients:

  • her_map -- queries up to five sources in parallel (NHLE, AIM, Conservation Areas, Heritage at Risk, Scotland) and renders each as a distinctly colour-coded layer; NHLE results are split by designation type for visual separation

  • her_crossref_map -- runs the same analysis as her_cross_reference then renders four colour-coded layers: green (match), amber (near), red (novel/potential new discovery), grey (known assets)

  • Marker clustering, popup templates, and layer toggle controls

  • Accepts WGS84 bbox or lat/lon/radius_m; BNG candidates for crossref map

Related MCP server: Edinburgh Festivals MCP Server

Tool Reference

All tools accept an optional output_mode parameter ("json" default, or "text" for human-readable output).

Tool

Category

Description

Status

her_status

Discovery

Server health and source availability

Active

her_list_sources

Discovery

List registered data sources with capabilities

Active

her_capabilities

Discovery

Full server capability listing for LLM planning

Active

her_search_monuments

NHLE

Search scheduled monuments by location or name

Active

her_get_monument

NHLE

Get full details for a specific monument

Active

her_search_listed_buildings

NHLE

Search listed buildings with grade filter

Active

her_search_designations

NHLE

Search across all designation types

Active

her_count_features

NHLE

Fast count of features in an area

Active

her_search_aerial

Aerial

Search aerial investigation mapping data

Active

her_count_aerial

Aerial

Count aerial mapping features in an area

Active

her_get_aerial_feature

Aerial

Get full details of an aerial mapping feature

Active

her_search_conservation_areas

Conservation

Search conservation areas by name, LPA, or location

Active

her_count_conservation_areas

Conservation

Count conservation areas in an area

Active

her_get_conservation_area

Conservation

Get full details of a conservation area

Active

her_search_heritage_at_risk

At Risk

Search heritage at risk register entries

Active

her_count_heritage_at_risk

At Risk

Count heritage at risk entries in an area

Active

her_get_heritage_at_risk

At Risk

Get full details of a heritage at risk entry

Active

her_search_heritage_gateway

Gateway

Search local HER data via Heritage Gateway

Active

her_search_scotland

Scotland

Search Scottish NRHE records (320K+ sites)

Active

her_get_scotland_record

Scotland

Get full details of a Scottish NRHE record

Active

her_search_scotland_designations

Scotland

Search Scottish designated heritage assets

Active

her_cross_reference

Cross-Ref

Cross-reference candidates against known assets

Active

her_enrich_gateway

Cross-Ref

Resolve Gateway record coordinates for cross-referencing

Active

her_nearby

Cross-Ref

Find NHLE heritage assets near a point (England only)

Active

her_export_geojson

Export

Export results as GeoJSON FeatureCollection

Active

her_export_for_lidar

Export

Export known sites for LiDAR cross-referencing

Active

her_map

Map

Multi-source heritage map with colour-coded layers

Active

her_crossref_map

Map

Colour-coded cross-reference map (match/near/novel/known)

Active

Data Sources

Source

Name

Organisation

Coverage

API Type

Status

nhle

National Heritage List for England

Historic England

England

ArcGIS Feature Service

Active

aim

Aerial Investigation and Mapping

Historic England

England

ArcGIS Feature Service

Active

conservation_area

Conservation Areas

Historic England / LPAs

England

ArcGIS Feature Service

Active

heritage_at_risk

Heritage at Risk Register

Historic England

England

ArcGIS Feature Service

Active

heritage_gateway

Heritage Gateway (Local HERs)

Historic England / Local HERs

England

Web scraper

Active

scotland

Historic Environment Scotland

Historic Environment Scotland

Scotland

ArcGIS Map Service

Active

NHLE Designation Types

Type

Description

listed_building

Listed buildings (Grades I, II*, II)

scheduled_monument

Scheduled monuments

park_and_garden

Registered parks and gardens

battlefield

Registered battlefields

protected_wreck

Protected wreck sites

world_heritage_site

World Heritage Sites

Installation

uvx chuk-mcp-her
# Install from PyPI
uv pip install chuk-mcp-her

# Or clone and install from source
git clone <repository-url>
cd chuk-mcp-her
uv sync --dev

Using pip (Traditional)

pip install chuk-mcp-her

Optional: Sub-metre Coordinate Accuracy

# Install pyproj for sub-metre BNG<->WGS84 conversion
# Without pyproj, Helmert approximation (~5m accuracy) is used
pip install chuk-mcp-her[pyproj]

Usage

With Claude Desktop

Option 1: Run Locally with uvx

MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "her": {
      "command": "uvx",
      "args": ["chuk-mcp-her"]
    }
  }
}

Option 2: Run Locally with pip

{
  "mcpServers": {
    "her": {
      "command": "chuk-mcp-her"
    }
  }
}

With Python SDK

from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

server_params = StdioServerParameters(
    command="uvx",
    args=["chuk-mcp-her"],
)

async with stdio_client(server_params) as (read, write):
    async with ClientSession(read, write) as session:
        await session.initialize()
        result = await session.call_tool(
            "her_search_monuments",
            {"name": "Stonehenge", "max_results": 5},
        )

Standalone

# STDIO mode (default, for MCP clients)
chuk-mcp-her stdio

# HTTP mode (for web access)
chuk-mcp-her http
chuk-mcp-her http --port 8010

# Auto-detect mode
chuk-mcp-her

STDIO mode is for MCP clients like Claude Desktop and mcp-cli. HTTP mode runs a web server on http://localhost:8010 for HTTP-based MCP clients.

CLI (mcp-cli)

mcp-cli chat --server her

Example Usage

Once configured, you can ask questions like:

  • "List the available heritage data sources"

  • "Search for scheduled monuments near Stonehenge"

  • "Find Grade I listed buildings in central London"

  • "How many heritage assets are in this bounding box?"

  • "Get the full record for monument 1002345"

  • "What heritage assets are within 500m of the Tower of London?"

  • "Export all scheduled monuments in the Maldon area as GeoJSON"

  • "Cross-reference these LiDAR survey points against known heritage assets"

  • "Show all heritage assets within 2km of Stonehenge on a map"

  • "Map my LiDAR candidates against known scheduled monuments and show which are potential new discoveries"

  • "Search for protected wrecks along the English coast"

  • "Find registered parks and gardens near Bath"

  • "Search for all red hills along the north bank of the Blackwater estuary between Heybridge Basin and Tollesbury"

  • "Find castles in the Scottish Highlands"

  • "Search for brochs near Inverness"

  • "What scheduled monuments are in Edinburgh?"

Multi-source queries: The tool descriptions guide LLM agents to combine multiple sources automatically. A query like "find all red hills near the Blackwater" will prompt the agent to search NHLE (designated monuments), AIM (aerial mapping features), and Heritage Gateway (local HER records), then merge the results for comprehensive coverage.

Model-agnostic: The MCP server works with any LLM provider that supports function calling -- Claude, GPT, Gemini, or any other MCP-compatible client. The same tools work identically through Claude Desktop, mcp-cli, or the Python SDK.

Running the Examples

cd examples

python capabilities_demo.py          # server capabilities, sources, tools
python quick_start.py                # quick intro: status, count, search, nearby
python nhle_search_demo.py           # scheduled monument and listed building search
python aerial_search_demo.py         # aerial investigation mapping features
python conservation_area_demo.py     # conservation area search
python heritage_at_risk_demo.py      # heritage at risk register
python nearby_demo.py                # find heritage assets near a point
python export_demo.py                  # GeoJSON export
python gateway_search_demo.py          # Heritage Gateway local HER search
python cross_reference_demo.py         # cross-reference candidates (with AIM)
python enrichment_pipeline_demo.py     # Gateway enrichment + cross-reference
python blackwater_estuary_scenario.py  # multi-source scenario
python scotland_search_demo.py         # Scottish NRHE search (Canmore)
python scotland_designations_demo.py   # Scottish designated heritage assets

Script

Network

Tools Demonstrated

capabilities_demo.py

No

her_capabilities, her_list_sources, her_status

quick_start.py

Yes

her_status, her_count_features, her_search_monuments, her_get_monument, her_nearby

nhle_search_demo.py

Yes

her_search_monuments, her_get_monument, her_search_listed_buildings, her_search_designations, her_count_features

aerial_search_demo.py

Yes

her_search_aerial, her_count_aerial, her_get_aerial_feature

conservation_area_demo.py

Yes

her_search_conservation_areas, her_count_conservation_areas, her_get_conservation_area

heritage_at_risk_demo.py

Yes

her_search_heritage_at_risk, her_count_heritage_at_risk, her_get_heritage_at_risk

nearby_demo.py

Yes

her_nearby

export_demo.py

Yes

her_export_geojson, her_export_for_lidar

gateway_search_demo.py

Yes

her_search_heritage_gateway

cross_reference_demo.py

Yes

her_cross_reference (with include_aim)

enrichment_pipeline_demo.py

Yes

her_enrich_gateway, her_search_heritage_gateway, her_cross_reference, her_count_features

blackwater_estuary_scenario.py

Yes

Multi-source scenario using NHLE, AIM, Conservation Areas, Heritage at Risk

scotland_search_demo.py

Yes

her_search_scotland, her_get_scotland_record

scotland_designations_demo.py

Yes

her_search_scotland_designations, her_search_scotland

Architecture

                    MCP Client (Claude, mcp-cli, etc.)
                              |
                              | MCP protocol (stdio / HTTP)
                              v
                  +-------------------------------+
                  |       Tool Functions          |
                  | discovery/ nhle/ aerial/      |
                  | conservation_area/ scotland/  |
                  | heritage_at_risk/ gateway/    |
                  | crossref/ export/ map/        |
                  +-------------------------------+
                              |
                              | validate params, format response
                              v
                  +-------------------------------+
                  |       SourceRegistry          |
                  |   (unified query interface)   |
                  +-------------------------------+
                  |     |     |     |     |     |
          NHLEAdapter   |  CA     HAR    |  ScotlandAdapter
            AIMAdapter  |  Adapter Adapter|  (2 clients)
                        |               GatewayAdapter
                v       v       v             v           v
        +------------------+  +------------------+  +------------------+
        |  ArcGIS Client   |  |  Gateway Client  |  |  ArcGIS Client   |
        | (HE FeatureSvr)  |  | (httpx, bs4)     |  | (HES MapServer)  |
        +------------------+  +------------------+  +------------------+
                |                      |                      |
                v                      v                      v
        +------------------+  +------------------+  +------------------+
        | HE ArcGIS Svc    |  | Heritage Gateway |  | inspire.hes.scot |
        | NHLE,AIM,CA,HAR  |  | (60+ local HERs) |  | Canmore, HES Des |
        +------------------+  +------------------+  +------------------+

Built on top of chuk-mcp-server, this server uses:

  • Async-First: Native async/await with httpx for all HTTP requests

  • Type-Safe: Pydantic v2 models with extra="forbid" for all responses

  • Source Registry Pattern: Pluggable adapters registered at startup, queried through unified interface

  • BNG/WGS84 Conversion: Helmert transformation with optional pyproj for sub-metre accuracy

  • Filesystem Cache: TTL-based per-source caching to reduce API load

  • Rate Limiting: Per-client rate limiting with exponential backoff on 429/5xx

  • chuk-view-schemas: Map tools return MapContent structured views via chuk_view_schemas.chuk_mcp.map_tool decorator

  • Dual Output: Most tools support output_mode="text" for human-readable responses; map tools return structured MapContent

  • Error Messages: All error strings from ErrorMessages constants -- no hardcoded strings

See ARCHITECTURE.md for design principles and data flow diagrams. See SPEC.md for the full tool specification with parameter tables. See ROADMAP.md for the development roadmap and planned features.

Development

Setup

# Clone the repository
git clone <repository-url>
cd chuk-mcp-her

# Install with uv (recommended)
uv sync --dev

# Or with pip
pip install -e ".[dev]"

Running Tests

# Run tests
pytest tests/

# Run tests with coverage
pytest tests/ --cov=src/chuk_mcp_her --cov-report=term-missing

# Run a specific test file
pytest tests/test_coordinates.py -v

Code Quality

# Lint and format with ruff
ruff check src/ tests/
ruff format src/ tests/

# Type checking
mypy src/

# Security scan
bandit -r src/ -x tests/

Building

# Build package
python -m build

# Or with uv
uv build

Configuration

Environment Variables

Variable

Default

Description

MCP_STDIO

-

Set to any value to force stdio mode

HER_CACHE_DIR

~/.cache/chuk-mcp-her

Filesystem cache directory

HER_NHLE_CACHE_TTL

86400

NHLE cache TTL in seconds (24 hours)

HER_AIM_CACHE_TTL

604800

AIM cache TTL in seconds (7 days)

HER_HG_CACHE_TTL

3600

Heritage Gateway cache TTL in seconds (1 hour)

HER_RATE_LIMIT

5.0

Max requests per second to ArcGIS

HER_TIMEOUT

30.0

HTTP request timeout in seconds

License

Apache License 2.0 -- See LICENSE for details.

References

Available Tools

28 tools
her_capabilitiesA

List full server capabilities: sources, tools, and supported queries.

Provides complete information about the server including all available tools, registered sources, supported spatial references, and guidance for LLM query planning.

Args: output_mode: Response format — "json" (default) or "text"

Returns: Complete capability listing with LLM guidance

Tips for LLMs: Call this once at the start of a session to understand what tools are available and how to use them effectively.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_modeNojson

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It explains the output modes ('json' default or 'text'), what is returned (all available tools, sources, spatial references, LLM guidance), and the practical implication of being a startup call. For a low-risk read-only tool, this is sufficient transparency without being verbose.

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 (intro, Args, Returns, Tips) and is appropriately sized for a capabilities tool. It is slightly repetitive (e.g., 'complete information' and 'Complete capability listing' both appear), but overall every sentence contributes useful 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?

There is no output schema, so the description appropriately explains the return value ('Complete capability listing with LLM guidance') and provides usage context. For a simple one-parameter meta-tool, this is adequate; it could be slightly more detailed about the structure of the 'text' output, but overall it is complete.

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

Parameters5/5

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

The input schema only lists output_mode with a type and default, with 0% schema description coverage. The description fully compensates by stating 'Response format — "json" (default) or "text"', adding the accepted values that the schema does not enumerate. This is strong parameter-level guidance.

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 opens with 'List full server capabilities: sources, tools, and supported queries,' which is a specific verb+resource statement. It clearly distinguishes this meta-tool from the data-query siblings (e.g., her_search_monuments, her_get_monument) by explaining it provides an overview of the server rather than domain-specific lookups.

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 'Tips for LLMs' section explicitly instructs 'Call this once at the start of a session to understand what tools are available and how to use them effectively,' providing clear situational guidance. However, it does not mention when not to use it or explicitly name alternative tools, so it stops short of a 5.

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

her_count_aerialA

Count aerial mapping features in an area (fast, no geometry returned).

Returns a quick count of AIM features matching spatial and attribute filters. Use before her_search_aerial to gauge result size.

Args: bbox: Bounding box as "xmin,ymin,xmax,ymax" in BNG (EPSG:27700) monument_type: Monument type keyword (e.g. "ENCLOSURE", "MOUND") period: Period filter (e.g. "IRON AGE", "ROMAN") output_mode: Response format — "json" (default) or "text"

Returns: Feature count

Tips for LLMs: Call this before her_search_aerial to check how many features match before fetching full records.

ParametersJSON Schema
NameRequiredDescriptionDefault
bboxNo
periodNo
output_modeNojson
monument_typeNo

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it states the operation is 'fast,' emphasizes 'no geometry returned,' and discloses that output can be 'json' or 'text.' It stops short of detailing error behavior, authorization, or limits, so it is not a perfect 5, but it covers the key behavioral traits an agent needs.

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-organized with summary, Returns, Args, and Tips sections, making it scannable. Minor redundancy exists—'Count aerial mapping features' and 'Returns a quick count' say similar things, and 'use before her_search_aerial' appears twice—but each section earns its place overall.

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

Completeness4/5

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

For a simple count tool with no output schema, the description covers purpose, parameters, return value, and a usage tip, which is largely complete. It lacks edge-case details like behavior with no filters or error responses, but this is a minor gap given the tool's simplicity and the rich parameter documentation.

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?

Though schema coverage is 0%, the description's Args section explains every parameter: bbox format ('xmin,ymin,xmax,ymax' in EPSG:27700), monument_type and period examples, and output_mode choices with default. This fully compensates for the bare schema and adds meaning beyond the parameter names.

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 opens with a specific verb and resource: 'Count aerial mapping features in an area (fast, no geometry returned).' It clearly distinguishes the tool from siblings like her_search_aerial and her_count_features by scoping it to aerial features and clarifying that it returns no geometry.

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

Usage Guidelines5/5

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

The description explicitly instructs to 'Use before her_search_aerial to gauge result size' and repeats this in the 'Tips for LLMs' section. This gives the agent a clear when-to-use directive and names the alternative tool for fetching full records, satisfying the highest bar for usage guidance.

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

her_count_conservation_areasA

Count conservation areas in an area (fast, no geometry returned).

Returns a quick count of conservation areas matching filters. Use before her_search_conservation_areas to gauge result size.

Args: bbox: Bounding box as "xmin,ymin,xmax,ymax" in BNG (EPSG:27700) query: Name filter (e.g. "Maldon") lpa: Local Planning Authority filter output_mode: Response format — "json" (default) or "text"

Returns: Conservation area count

Tips for LLMs: Call this before her_search_conservation_areas to check how many areas match before fetching full records.

ParametersJSON Schema
NameRequiredDescriptionDefault
lpaNo
bboxNo
queryNo
output_modeNojson

TDQS

A4.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses that the operation is fast, returns only a count, and supports output modes. It does not explicitly state side effects or auth requirements, but the read-only nature is implied and the behavioral traits are adequately described.

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-organized with sections for arguments, returns, and tips. Every sentence adds value, and it is appropriately sized for the tool's simplicity.

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

Completeness5/5

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

For a simple count tool with no output schema, the description fully explains returns and usage context. It even provides an example of how to use the result. The sibling tool relationship is clearly established, making the description complete.

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?

Schema description coverage is 0%, so the description must compensate. It explains each parameter: bbox format with example, query as name filter, lpa as authority filter, and output_mode values. This fully covers the semantics beyond the schema.

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

Purpose5/5

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

The description clearly states the tool counts conservation areas in an area, noting it is fast and returns no geometry. It explicitly distinguishes itself from the sibling search tool, making its purpose unambiguous.

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

Usage Guidelines5/5

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

The description explicitly instructs to call this tool before her_search_conservation_areas to gauge result size, and provides a 'Tips for LLMs' section reinforcing the workflow. This is clear when-to-use guidance with a named alternative.

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

her_count_featuresA

Fast count of heritage features in an area.

Returns counts by designation type without fetching full records. Use this before her_search_designations to estimate result sizes.

Args: designation_type: Filter by type (None = count all types) bbox: Bounding box as "xmin,ymin,xmax,ymax" in BNG output_mode: Response format — "json" (default) or "text"

Returns: Feature counts by designation type

Tips for LLMs: - Much faster than a full search when you just need totals - Use this to decide whether to narrow your search area - Counts are broken down by designation type

ParametersJSON Schema
NameRequiredDescriptionDefault
bboxNo
output_modeNojson
designation_typeNo

TDQS

A4.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses speed ('fast'), that it avoids fetching full records, and that it returns counts grouped by designation type. It also notes the output can be json or text. While it doesn't cover error conditions, rate limits, or exact data structure, the provided behavioral traits are useful and non-contradictory.

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 purpose in the first sentence. It uses brief sections for Args, Returns, and Tips for LLMs, with every sentence adding value and no redundancy.

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

Completeness5/5

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

Given the tool is a simple count operation with three optional parameters and no output schema, the description is complete. It covers purpose, parameter formats, return value summary, and practical tips for LLM usage (speed, use case, breakdown). No additional context is necessary for correct invocation.

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?

Schema description coverage is 0%, so the description fully compensates by explicitly explaining each parameter in the Args section: designation_type (filter, None for all), bbox (format 'xmin,ymin,xmax,ymax' in BNG), and output_mode (json default, text alternative). This adds meaning well 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 states a specific action: 'Fast count of heritage features in an area.' It clearly defines the resource (heritage features) and scope (area), and distinguishes itself by mentioning it returns counts by designation type without fetching full records, contrasting with sibling search tools.

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

Usage Guidelines5/5

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

Explicit usage guidance is provided: 'Use this before her_search_designations to estimate result sizes' and 'Use this to decide whether to narrow your search area.' It also mentions being 'much faster than a full search when you just need totals,' giving clear when-to-use versus alternatives.

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

her_count_heritage_at_riskA

Count heritage at risk entries in an area (fast, no geometry returned).

Returns a quick count of at-risk heritage assets matching filters. Use before her_search_heritage_at_risk to gauge result size.

Args: bbox: Bounding box as "xmin,ymin,xmax,ymax" in BNG (EPSG:27700) heritage_category: Filter by category (e.g. "Listed Building") output_mode: Response format — "json" (default) or "text"

Returns: Heritage at risk count

Tips for LLMs: Call this before her_search_heritage_at_risk to check how many entries match before fetching full records.

ParametersJSON Schema
NameRequiredDescriptionDefault
bboxNo
output_modeNojson
heritage_categoryNo

TDQS

A4.7/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that the operation is 'fast' and returns 'no geometry', indicating a lightweight read. It also specifies the return type (count) and output_mode options. However, it does not mention error handling or behavior when no filters are applied, which prevents a perfect score.

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 concise and well-structured with a headline, Args section, Returns line, and a Tips for LLMs section. Every sentence adds value, and the tip reinforces usage without redundancy. It is front-loaded with the core purpose and scannable.

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 lack of schema descriptions and output schema, this description is remarkably complete: it covers all parameters, the return value, and usage context. The only minor gap is that it doesn't specify behavior when no filters are provided (e.g., counts all entries), but overall it provides sufficient information for an agent to invoke the tool correctly.

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?

Schema description coverage is 0%, so the description fully compensates. It explains bbox format explicitly as 'xmin,ymin,xmax,ymax' in BNG (EPSG:27700), provides an example for heritage_category ('Listed Building'), and notes output_mode default ('json') and alternatives ('text'). This adds crucial 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 opens with 'Count heritage at risk entries in an area (fast, no geometry returned)', which is a specific verb+resource+modifier. It clearly distinguishes from the sibling tool her_search_heritage_at_risk by noting it returns a count without geometry, making the purpose unambiguous.

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

Usage Guidelines5/5

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

Explicitly states 'Use before her_search_heritage_at_risk to gauge result size' and repeats in Tips: 'Call this before her_search_heritage_at_risk to check how many entries match before fetching full records.' This names the specific alternative and gives clear when-to-use guidance.

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

her_cross_referenceA

Cross-reference candidate locations against known heritage assets.

Takes a list of candidate locations (e.g. from LiDAR survey) and classifies each as match, near, or novel based on proximity to known NHLE records, AIM aerial mapping features, and optionally Heritage Gateway records.

Args: candidates: JSON array of {"easting": x, "northing": y} dicts match_radius_m: Distance threshold for "match" (default 50m) near_radius_m: Distance threshold for "near" (default 200m) designation_types: Comma-separated NHLE designation types to match against (e.g. "scheduled_monument,listed_building") include_aim: Include AIM aerial mapping features in known assets (adds monument_type, period, form from aerial archaeology) gateway_sites: JSON array of Gateway records with easting/northing (output of her_enrich_gateway) to merge into known sites output_mode: Response format — "json" (default) or "text"

Returns: Classification of each candidate as match, near, or novel

Tips for LLMs: - Input candidates as BNG easting/northing coordinates - "match" means the candidate is within match_radius_m of a known asset - "near" means within near_radius_m but not a match - "novel" means no known asset within near_radius_m - Set include_aim=true for LiDAR workflows to include aerial features - Use her_enrich_gateway first to resolve Gateway record coordinates, then pass the output as gateway_sites for richer cross-referencing - Use her_export_for_lidar to get known sites in the same area

ParametersJSON Schema
NameRequiredDescriptionDefault
candidatesNo[]
include_aimNo
output_modeNojson
gateway_sitesNo[]
near_radius_mNo
match_radius_mNo
designation_typesNo

TDQS

A4.8/5.0
Behavior4/5

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

Despite having no annotations, the description discloses the core algorithm: it classifies each candidate based on proximity thresholds (match_radius_m, near_radius_m), explains the meaning of match/near/novel, and notes optional inclusion of AIM and Gateway data. It doesn't mention error handling or side effects, but the tool's read-only nature is implied.

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 structured with Args, Returns, and Tips sections. All information is relevant; the tips provide actionable workflow guidance without redundancy. It's longer than some but efficient for a 7-parameter tool.

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

Completeness5/5

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

With no output schema and 7 parameters, the description covers all inputs, defines the output classification, and provides integration context with sibling tools. It gives enough to invoke the tool correctly without further research.

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?

Schema description coverage is 0%, but the description thoroughly documents all 7 parameters with types, defaults, and examples (e.g., candidates as JSON array with easting/northing, designation_types as comma-separated values). This fully compensates for the schema gap.

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 uses a specific verb 'Cross-reference' with a clear object 'candidate locations against known heritage assets', and defines the output classification (match/near/novel), distinguishing it from sibling search tools by its proximity-classification behavior.

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

Usage Guidelines5/5

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

The 'Tips for LLMs' section explicitly instructs when to use complementary tools: 'Use her_enrich_gateway first', 'Use her_export_for_lidar to get known sites in the same area', and recommends include_aim for LiDAR workflows. This provides clear workflow context and alternatives.

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

her_crossref_mapA
Read-only

Visualise cross-reference results as a colour-coded map: green (match), amber (near), red (novel), grey (known assets). Runs the same analysis as her_cross_reference.

ParametersJSON Schema
NameRequiredDescriptionDefault
basemapNoosm
candidatesNo[]
include_aimNo
near_radius_mNo
match_radius_mNo
designation_typesNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so safety is covered. The description adds useful context like color categories and linkage to her_cross_reference, but does not disclose map format or potential response structure, which would enrich transparency.

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

Conciseness5/5

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

Two sentences deliver the core purpose, color legend, and relationship to a sibling tool with no fluff. The information is front-loaded 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?

Despite having 6 parameters and no output schema, the description does not explain parameters or return value. It provides a helpful pointer to her_cross_reference but leaves significant gaps for an agent to invoke the tool correctly.

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

Parameters1/5

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

Input schema has 6 parameters with 0% description coverage, and the description provides no explanation of what basemap, candidates, radii, etc. mean. The only hint is 'runs the same analysis as her_cross_reference', which is insufficient for correct parameter usage.

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

Purpose5/5

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

Description uses specific verb 'Visualise' with resource 'cross-reference results' and specifies color-coded map categories. It clearly distinguishes from sibling her_cross_reference by noting it runs the same analysis but in map form.

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 implies use for visualising cross-reference results rather than raw analysis, and explicitly names her_cross_reference as the alternative. However, it does not state explicit when-to-use/when-not-to-use conditions, leaving some inference needed.

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

her_enrich_gatewayA

Fetch Heritage Gateway records with resolved coordinates.

Searches the Heritage Gateway for local HER records and resolves their BNG coordinates by parsing grid references and/or fetching detail pages. Returns only records with valid easting/northing, suitable for cross-referencing with her_cross_reference.

Args: what: Monument type or keyword (e.g. "red hill", "saltern") where: Place name (e.g. "Blackwater", "Essex") when: Period (e.g. "Roman", "Iron Age") max_results: Maximum records to return (default 100) fetch_details: Fetch detail pages for coordinates (default true) output_mode: Response format — "json" (default) or "text"

Returns: Gateway records with resolved BNG easting/northing coordinates

Tips for LLMs: - This tool is SLOW (may take 1-2 minutes for 100 records) - Use it before her_cross_reference to enrich the known-sites pool - Pass the output records as gateway_sites to her_cross_reference - Set fetch_details=false for faster results (grid refs only) - Results include only records with successfully resolved coordinates - While waiting for this, also run her_search_monuments and/or her_search_aerial in the same area for comprehensive coverage — Gateway records are local HER data not in NHLE or AIM

ParametersJSON Schema
NameRequiredDescriptionDefault
whatNo
whenNo
whereNo
max_resultsNo
output_modeNojson
fetch_detailsNo

TDQS

A5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so excellently. It discloses that the tool is slow (1-2 minutes for 100 records), only returns records with valid easting/northing, and explains the mechanism (parsing grid references and/or fetching detail pages). It also mentions default behavior for fetch_details and output_mode.

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 with a summary paragraph, args list, returns line, and a Tips section. Every sentence provides valuable information—performance guidance, workflow integration, and complementary tools—with no filler. The bullet-point formatting enhances scannability.

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

Completeness5/5

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

For a tool with 6 parameters and no output schema, the description thoroughly covers the purpose, parameters, return value (Gateway records with resolved coordinates), performance behavior, and workflow context. The Tips section addresses practical usage patterns, making it complete for an agent to use the tool effectively.

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?

Schema coverage is 0%, but the description compensates fully by explaining each parameter with examples (what, where, when) and defaults (max_results, fetch_details, output_mode). This goes beyond the schema, providing all necessary semantic detail for an agent to construct correct inputs.

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

Purpose5/5

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

The description clearly states it fetches Heritage Gateway records with resolved coordinates, distinguishing it from a plain search tool. It also explains the enrichment purpose (resolving BNG coordinates) and mentions its suitability for her_cross_reference, making the tool's purpose unambiguous.

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

Usage Guidelines5/5

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

The Tips for LLMs section provides explicit workflow guidance: use before her_cross_reference, pass output as gateway_sites, and run complementary tools (her_search_monuments, her_search_aerial) in parallel. It also clarifies scope by noting Gateway records are local HER data not in NHLE or AIM, effectively indicating when this tool is appropriate.

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

her_export_for_lidarA

Export heritage assets for LiDAR cross-referencing.

Produces a list of known monument centroids with metadata in the format expected by chuk-mcp-lidar spatial matching.

Args: bbox: Bounding box as "xmin,ymin,xmax,ymax" in BNG (required) include_aim: Include aerial mapping features (when available) include_nhle: Include NHLE designations (default true) gateway_sites: JSON array of Gateway records with easting/northing (output of her_enrich_gateway) to include as known sites output_mode: Response format — "json" (default) or "text"

Returns: Known sites in LiDAR cross-reference format

Tips for LLMs: - bbox is required for LiDAR export - Output includes easting/northing in BNG for spatial matching - Each site has id, source, name, type, monument_type, period - Use her_enrich_gateway first, then pass output as gateway_sites

ParametersJSON Schema
NameRequiredDescriptionDefault
bboxNo
include_aimNo
output_modeNojson
include_nhleNo
gateway_sitesNo[]

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It discloses output behavior: 'Output includes easting/northing in BNG for spatial matching' and 'Each site has id, source, name, type, monument_type, period.' It also explains parameter behavior like include_aim 'when available' and include_nhle 'default true.' It does not explicitly state side effects or whether the operation is read-only, but for an export tool this is largely implied.

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 sections for Args, Returns, and Tips, and it front-loads the core purpose. It is slightly longer than necessary due to redundancy (e.g., bbox required mentioned in both Args and Tips), but each section provides useful information and the prose is efficient.

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 lack of output schema, the description compensates by explaining return format ('Known sites in LiDAR cross-reference format') and key fields. It also covers the prerequisite workflow with her_enrich_gateway. It does not mention potential errors or limitations, but for a moderately complex export tool, the provided details are largely sufficient.

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?

Schema coverage is 0%, so the description must compensate. It does so thoroughly by explaining all 5 parameters: bbox format ('xmin,ymin,xmax,ymax' in BNG), gateway_sites as 'JSON array of Gateway records with easting/northing (output of her_enrich_gateway)', and output_mode as 'json' or 'text'. It also clarifies defaults and requiredness, adding significant value beyond the schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Export heritage assets for LiDAR cross-referencing' and 'Produces a list of known monument centroids with metadata in the format expected by chuk-mcp-lidar spatial matching.' This distinguishes it from siblings like her_export_geojson by specifying the LiDAR-specific output format.

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?

Provides clear context and workflow: 'Use her_enrich_gateway first, then pass output as gateway_sites' and 'bbox is required for LiDAR export.' It implies when to use (LiDAR cross-referencing) but does not explicitly state when not to use or name alternatives, so it falls short of a 5.

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

her_export_geojsonA

Export heritage assets as GeoJSON FeatureCollection.

Exports query results in GeoJSON format suitable for use in QGIS, Leaflet, or other GIS tools.

Args: bbox: Bounding box as "xmin,ymin,xmax,ymax" in BNG designation_type: Filter by designation type name: Name filter (partial match) max_results: Maximum features to export (default 500, max 2000) output_mode: Response format — "json" (default) or "text"

Returns: GeoJSON FeatureCollection with matching heritage assets

Tips for LLMs: - Use bbox to limit the export area - Output is a standard GeoJSON FeatureCollection - Coordinates are in WGS84 (EPSG:4326)

ParametersJSON Schema
NameRequiredDescriptionDefault
bboxNo
nameNo
max_resultsNo
output_modeNojson
designation_typeNo

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the transparency burden. It discloses meaningful behavioral details: bbox is expected in BNG, output coordinates are WGS84, max_results has a ceiling of 2000, and output_mode supports json or text. It does not mention errors or rate limits, but the disclosed behavior is substantial.

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-organized with Args, Returns, and Tips sections, and the opening sentence is front-loaded. There is minor redundancy between the first sentence and the second paragraph, but each section earns its place.

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?

With no output schema and no annotations, the description covers parameter meanings, return type (GeoJSON FeatureCollection), coordinate system, and practical tips. It lacks possible values for designation_type and the exact meaning of text output mode, but for a straightforward export tool it is sufficiently complete.

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?

Schema description coverage is 0%, but the description documents all five parameters with concrete detail: bbox format ('xmin,ymin,xmax,ymax' in BNG), name partial match, max_results default and maximum, and output_mode default. This fully compensates for the empty 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 first sentence is specific: 'Export heritage assets as GeoJSON FeatureCollection.' This clearly states the verb, resource, and output format, distinguishing it from the search/get/count siblings and even from her_export_for_lidar by naming GeoJSON.

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 usage context by mentioning suitability for QGIS, Leaflet, or other GIS tools, and includes LLM tips such as using bbox to limit the export area. It does not explicitly name alternatives or state when not to use this tool, so it falls short of a 5.

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

her_get_aerial_featureA

Get full details of a specific aerial mapping feature.

Retrieves a single AIM feature by its HE_UID. Accepts either "aim:HE_UID" or just the HE_UID.

Args: record_id: AIM feature ID (e.g. "aim:12345" or "12345") output_mode: Response format — "json" (default) or "text"

Returns: Full feature details including monument type, period, evidence, location

Tips for LLMs: Use record_id from her_search_aerial results.

ParametersJSON Schema
NameRequiredDescriptionDefault
record_idNo
output_modeNojson

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the burden; it discloses accepted ID formats (aim:HE_UID or HE_UID), output modes (json/text), and the return content (monument type, period, evidence, location). It does not mention error cases or whether the operation is read-only, but the verb 'Get' strongly implies no side effects.

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

Conciseness5/5

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

The description is well-structured with clear sections (description, args, returns, tips) and is concise—no redundant content. Every sentence adds value, and the LLM tip is directly actionable.

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

Completeness5/5

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

For a simple get-by-ID tool with two parameters and no output schema, the description covers the operation, parameter behavior, return value, and integration with search. It is complete enough for an agent to invoke correctly without additional information.

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

Parameters5/5

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

The schema has no descriptions (0% coverage), but the description fully documents both parameters: record_id with examples, and output_mode with default and allowed values. This adds complete semantics beyond the schema.

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

Purpose5/5

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

The description uses specific verbs 'Get' and 'Retrieves' and clearly states the resource: a single aerial mapping feature identified by HE_UID. It distinguishes from siblings by referencing her_search_aerial as the source of record_id, implying this is the follow-up retrieval tool.

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?

It provides explicit context: use record_id from her_search_aerial results, which tells the agent when to call this tool. It does not explicitly exclude other tools, but the name and reference to search results establish the correct workflow. It also documents output_mode options, giving the agent choice.

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

her_get_conservation_areaA

Get full details of a specific conservation area.

Retrieves a single conservation area by its UID. Accepts either "ca:UID" or just the UID number.

Args: record_id: Conservation area ID (e.g. "ca:1234" or "1234") output_mode: Response format — "json" (default) or "text"

Returns: Full conservation area details including name, LPA, location

Tips for LLMs: Use record_id from her_search_conservation_areas results.

ParametersJSON Schema
NameRequiredDescriptionDefault
record_idNo
output_modeNojson

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the burden of disclosing behavior. It states the tool 'Retrieves a single conservation area' (read-only) and explains the two accepted input formats for record_id. It also specifies the output_mode behavior. While it doesn't discuss auth or errors, the provided information goes beyond a minimal description.

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 with clear sections: summary, args, returns, and a tip. Every sentence adds value, and the key purpose is front-loaded in the first line. It is concise without being sparse, earning a perfect score.

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

Completeness5/5

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

For a simple get tool with two parameters and no output schema, the description covers all essential aspects: what it does, how to specify the ID, response format, return contents, and a practical tip. It is sufficiently complete for an agent to select and invoke the tool correctly.

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?

Schema description coverage is 0%, so the description must compensate. It does so thoroughly: record_id is explained with examples ('ca:1234' or '1234'), and output_mode is documented with its default ('json') and alternative ('text'). This adds significant meaning beyond the raw 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 opens with 'Get full details of a specific conservation area,' which is a specific verb+resource combination. It clearly distinguishes from sibling getters by specifying conservation_area and aligns with the naming convention of other get tools.

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 a usage tip: 'Use record_id from her_search_conservation_areas results.' This implies the tool should be used after a search and not for listing. However, it lacks explicit exclusions or comparison with sibling getters (e.g., her_get_monument), so it falls short of a 5.

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

her_get_heritage_at_riskA

Get full details of a specific heritage at risk entry.

Retrieves a single at-risk entry by its List Entry number. Accepts either "har:LIST_ENTRY" or just the number.

Args: record_id: Heritage at Risk ID (e.g. "har:1021506" or "1021506") output_mode: Response format — "json" (default) or "text"

Returns: Full heritage at risk details including category, risk methodology

Tips for LLMs: Use record_id from her_search_heritage_at_risk results.

ParametersJSON Schema
NameRequiredDescriptionDefault
record_idNo
output_modeNojson

TDQS

A4.6/5.0
Behavior4/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 explains the accepted input formats ('har:LIST_ENTRY' or just the number), output mode options ('json' or 'text'), and return contents (category, risk methodology). It does not mention error handling or side effects, but for a read-only retrieval tool this is adequate, earning a 4.

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, with clear sections (Args, Returns, Tips). It is front-loaded with a one-line summary, and every sentence adds value with no fluff or repetition.

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

Completeness5/5

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

Despite having no output schema, the description covers the essential aspects: how to pass arguments, what output to expect, and how to obtain the correct ID. The 'Tips for LLMs' section provides practical guidance linking this tool to its sibling, making it complete for a simple get-by-ID operation.

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

Parameters5/5

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

The schema has no descriptions and 0% coverage, so the description must compensate. It fully explains both parameters: record_id with concrete examples and output_mode with default and possible values. This adds significant meaning beyond the bare schema, justifying a 5.

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

Purpose5/5

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

The description clearly states the tool's function: 'Get full details of a specific heritage at risk entry' and 'Retrieves a single at-risk entry by its List Entry number.' It uses a specific verb ('Get'/'Retrieves'), names the resource ('heritage at risk entry'), and distinguishes itself from sibling search tools like her_search_heritage_at_risk by emphasizing singular 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 context on when to use this tool by instructing 'Use record_id from her_search_heritage_at_risk results,' which implies a follow-up after search. However, it does not explicitly state exclusions or when NOT to use this tool versus alternatives, so it falls short of a 5.

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

her_get_monumentA

Get full details for a specific scheduled monument.

Returns the complete record including name, designation, location, listing dates, and URL to the Historic England listing page.

Args: nhle_id: NHLE list entry number (e.g. "1002345") output_mode: Response format — "json" (default) or "text"

Returns: Full monument record

Tips for LLMs: - Use the nhle_id from search results - The URL links to the full Historic England listing page

ParametersJSON Schema
NameRequiredDescriptionDefault
nhle_idYes
output_modeNojson

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses that the tool returns a complete record including name, designation, location, listing dates, and a URL, and explains the output_mode parameter. It does not mention error cases or rate limits, but for a simple read-only get operation this is sufficient.

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 sections for args, returns, and tips. It is mostly concise, though 'Returns: Full monument record' repeats the opening sentence and the URL tip is mentioned twice. Minor redundancy prevents a perfect score.

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

Completeness5/5

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

For a simple 2-parameter tool with no annotations or output schema, the description covers purpose, parameters, return value, and usage tips. It is complete enough for an agent to select and invoke the tool correctly.

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

Parameters5/5

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

The description adds substantial meaning to both parameters. nhle_id is given a concrete example ('1002345'), and output_mode is clarified with allowed values ('json' default or 'text'). This goes well beyond the bare schema, which has zero description coverage.

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

Purpose5/5

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

The description clearly states the verb ('Get') and resource ('full details for a specific scheduled monument'), distinguishing it from sibling get_* tools that target different heritage asset types (aerial features, heritage at risk, conservation areas, Scotland records).

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 usage context by specifying the tool handles scheduled monuments and advises using the nhle_id from search results. It does not explicitly exclude alternatives, but the scope is clear enough.

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

her_get_scotland_recordA

Get full details of a Scottish NRHE record by Canmore ID.

Retrieves a single record from the National Record of the Historic Environment. Accepts either "scotland:CANMOREID" or just the ID.

Args: record_id: Canmore ID (e.g. "scotland:12345" or "12345") output_mode: Response format — "json" (default) or "text"

Returns: Full record details including site type, form, location, grid reference

Tips for LLMs: Use record_id from her_search_scotland results.

ParametersJSON Schema
NameRequiredDescriptionDefault
record_idNo
output_modeNojson

TDQS

A4.6/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that this is a retrieval operation and details the return fields ('site type, form, location, grid reference'). It also explains the output_mode options. It doesn't cover error handling or permissions, but for a read-only get operation this is reasonably transparent.

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 opens with a concise one-sentence summary, then uses clearly labeled Args, Returns, and Tips for LLMs sections. Every sentence adds value, and the structure makes it easy to scan. It is appropriately sized without redundancy.

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

Completeness5/5

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

The tool has only 2 optional parameters and no output schema or annotations. The description covers the meaning and format of both parameters, the content of the return value, and provides a practical tip on sourcing record_id from her_search_scotland. This is complete for an agent to select and invoke the tool correctly.

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?

Schema coverage is 0% and the schema only lists types and defaults. The description compensates thoroughly: it explains that record_id accepts 'scotland:CANMOREID' or just the ID, and that output_mode can be 'json' (default) or 'text'. Both parameters are fully documented beyond the schema.

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

Purpose5/5

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

The first sentence 'Get full details of a Scottish NRHE record by Canmore ID' uses a specific verb ('Get'), names the resource ('Scottish NRHE record'), and references the Canmore ID. This clearly identifies the tool's purpose and distinguishes it from sibling get_ tools like her_get_monument or her_get_aerial_feature by scope.

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 a clear workflow context by advising 'Use record_id from her_search_scotland results.' It also explains accepted input formats. However, it does not explicitly state when not to use this tool or mention alternatives, so it lacks exclusions.

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

her_list_sourcesA

List all registered heritage data sources and their capabilities.

Returns metadata about each source including what query types it supports, its coverage area, and current status.

Args: output_mode: Response format — "json" (default) or "text"

Returns: List of sources with capabilities

Tips for LLMs: Use this to discover which sources are available and what each one can do before running queries.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_modeNojson

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses the read-only nature by using 'List' and 'Returns metadata,' and details the output including content (query types, coverage, status) and format options (json/text). While it doesn't mention error conditions or pagination, for a simple listing tool this is adequate 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 with a clear one-sentence purpose, followed by a concise return description, then formatted Args/Returns sections, and a final tip. Every section adds value without redundancy. It's appropriately sized for a simple tool.

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

Completeness5/5

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

Despite having no output schema and no annotations, the description covers all essential aspects: what the tool does, what it returns, the parameter, and when to use it. The return format is described with examples of included metadata (query types, coverage, status), which is sufficient for an agent to understand the tool's behavior.

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

Parameters5/5

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

The input schema only provides a type string with a default, but the description explains the semantic meaning: 'Response format — "json" (default) or "text"'. It clarifies the allowed values and default, fully compensating for the 0% schema description coverage. Additionally, there are no other parameters to explain.

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

Purpose5/5

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

The description starts with a clear verb+resource statement: 'List all registered heritage data sources and their capabilities.' This immediately distinguishes it from sibling tools like her_search_monuments or her_status, which focus on querying specific data. It also explains the return metadata, making the purpose unambiguous.

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 'Tips for LLMs' section explicitly recommends using this tool 'before running queries' to discover available sources and their capabilities. This provides clear usage context. However, it doesn't mention any exclusions or when not to use it, which would merit a 5.

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

her_mapA
Read-only

Visualise heritage assets from multiple sources as a multi-layer interactive map. Returns a structured map view with colour-coded layers by designation type and source.

ParametersJSON Schema
NameRequiredDescriptionDefault
latNo
lonNo
bboxNo
basemapNoosm
sourcesNo
radius_mNo
max_resultsNo
designation_typeNo

TDQS

A3.5/5.0
Behavior3/5

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

The readOnlyHint annotation already covers safety. The description adds useful context about the return format ('structured map view with colour-coded layers'), but does not disclose potential pitfalls such as how results are aggregated, what happens with excessive results, or any pagination/limits beyond the schema defaults. It provides moderate additional value beyond the annotation.

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 only two sentences, front-loaded with the primary verb and resource. It wastes no words and efficiently conveys both purpose and output structure. Every sentence contributes valuable information.

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?

With 8 parameters and no output schema, the description is too sparse. It fails to mention that the tool requires some form of location specification (lat/lon or bbox) and radius, which are central to a map tool. An agent has no idea how to use the tool correctly without further parameter documentation.

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 coverage is 0%, so the description must compensate. It makes sparse connections to parameters by mentioning 'sources' and 'designation type', but says nothing about lat/lon, bbox, radius_m, max_results, or basemap. The description does not meaningfully clarify the meaning of most input fields beyond their schema types and defaults.

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

Purpose5/5

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

The description uses a specific verb 'Visualise' with a clear resource ('heritage assets from multiple sources') and distinguishes its output ('multi-layer interactive map', 'colour-coded layers by designation type and source') from sibling search/export tools. This makes the tool's unique purpose immediately obvious.

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 clearly implies when to use this tool (for spatial visualization of multiple heritage sources) but does not explicitly mention alternatives or say when not to use it. There is no naming of sibling tools or exclusions, so usage guidance is only implied.

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

her_nearbyA

Find NHLE heritage assets near a single point.

Searches the National Heritage List for England (NHLE) for designated heritage assets within a radius of the given point. Returns assets sorted by distance.

NOTE: This tool searches NHLE only (England). For Scottish sites use her_search_scotland with lat/lon/radius_m. For aerial features use her_search_aerial with lat/lon/radius_m.

Args: lat: WGS84 latitude (use with lon) lon: WGS84 longitude (use with lat) easting: BNG easting (use with northing, alternative to lat/lon) northing: BNG northing (use with easting) radius_m: Search radius in metres (default 500) max_results: Maximum results (default 20) output_mode: Response format — "json" (default) or "text"

Returns: Nearby NHLE heritage assets with distance and bearing

Tips for LLMs: - Use lat/lon OR easting/northing (not both) - Results are sorted by distance from the centre point - Each result includes distance_m and bearing_deg - For comprehensive nearby search, ALSO call her_search_aerial and her_search_scotland (if near/in Scotland) with the same lat/lon/radius_m parameters

ParametersJSON Schema
NameRequiredDescriptionDefault
latNo
lonNo
eastingNo
northingNo
radius_mNo
max_resultsNo
output_modeNojson

TDQS

A5/5.0
Behavior5/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 disclosing behavior. It reveals key constraints (NHLE-only, coordinate system exclusivity), output ordering (sorted by distance), and result fields (distance_m, bearing_deg), which go beyond the basic search semantics.

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 with clear sections (NOTE, Args, Returns, Tips) and front-loads the primary purpose. Despite its length, every sentence adds value, and the 'Tips for LLMs' section is practical without being redundant.

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

Completeness5/5

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

The tool has no annotations or output schema, so the description must provide complete context. It covers purpose, scope, parameters, output structure, and usage caveats, including recommendations for complementary tools – making it adequately complete for effective tool selection and invocation.

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

Parameters5/5

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

The schema provides only type and default for each parameter, so the description's Args section is essential. It explains coordinate systems (WGS84, BNG), pairing requirements (lat with lon, easting with northing), and output_mode options, fully compensating for the 0% schema coverage.

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 opens with a concrete verb phrase 'Find NHLE heritage assets near a single point' and then elaborates on scope (England only) and output (sorted by distance). It clearly distinguishes itself from sibling tools by explicitly noting the NHLE-only scope and directing to Scottish and aerial alternatives.

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

Usage Guidelines5/5

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

It directly states when to use this tool and when not, with a dedicated NOTE listing alternative tools for Scotland and aerial features. The Tips section even recommends combining this with other searches for comprehensive results, giving clear context.

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

her_search_aerialA

Search aerial investigation mapping data for archaeological features.

Queries Historic England AIM data for features identified from aerial photographs and LiDAR. Includes cropmarks, earthworks, enclosures, ring ditches, saltern mounds, and other features not in the NHLE.

Args: monument_type: Monument type keyword (e.g. "SALTERN MOUND", "ENCLOSURE") period: Period filter (e.g. "IRON AGE", "ROMAN", "MEDIEVAL") bbox: Bounding box as "xmin,ymin,xmax,ymax" in BNG (EPSG:27700) lat: WGS84 latitude for radius search lon: WGS84 longitude for radius search radius_m: Search radius in metres (requires lat/lon) max_results: Maximum results (1-2000, default 50) offset: Pagination offset output_mode: Response format — "json" (default) or "text"

Returns: Matching aerial mapping features with monument type, period, evidence

Tips for LLMs: Use monument_type and period as uppercase keywords matching the AIM vocabulary. Key monument types: "SALTERN MOUND" or "RED HILL" for salt-production mounds, "ENCLOSURE" for prehistoric/Roman enclosures, "RING DITCH" for barrow ditches, "EARTHWORK" for general earthworks, "FIELD SYSTEM" for field boundaries. Periods: "IRON AGE", "ROMAN", "MEDIEVAL". These features are NOT in the NHLE — they complement her_search_monuments. For comprehensive area surveys, run all three sources: her_search_monuments (NHLE designated), her_search_aerial (AIM cropmarks/earthworks), and her_search_heritage_gateway (local HER undesignated sites), then merge and deduplicate the results. Use her_map to display the combined results on a map.

ParametersJSON Schema
NameRequiredDescriptionDefault
latNo
lonNo
bboxNo
offsetNo
periodNo
radius_mNo
max_resultsNo
output_modeNojson
monument_typeNo

TDQS

A4.8/5.0
Behavior4/5

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

No annotations are present, so the description carries the full transparency burden. It discloses the data source, feature scope, the exclusion of NHLE entries, and the available output modes. It does not detail potential pagination behavior, rate limits, or explicit read-only guarantees, but the search context plus parameter descriptions provide solid 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?

Though long, the description is organized into Args, Returns, and Tips for LLMs, and each section adds value. The first sentence is a clear summary, and the Tips section provides vocabulary, workflow, and sibling-tool coordination without redundancy.

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

Completeness5/5

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

With 9 parameters, no output schema, and no annotations, this description is unusually complete. It explains every parameter, describes return content, provides query vocabulary, and outlines a multi-tool workflow for comprehensive surveys. It lacks deep error semantics but is sufficient for correct tool selection and invocation.

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

Parameters5/5

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

The input schema provides no descriptions (0% coverage), so the description's Args section is essential. It compensates fully by giving formats ('xmin,ymin,xmax,ymax' in EPSG:27700), dependencies (radius_m requires lat/lon), defaults (max_results default 50, output_mode default 'json'), and value ranges (1-2000).

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 uses a clear verb ('Search') and names a specific resource ('Historic England AIM data' for aerial investigation mapping). It lists concrete feature types (cropmarks, earthworks, enclosures, ring ditches, saltern mounds) and explicitly distinguishes itself from sibling tools by noting these features are NOT in the NHLE.

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

Usage Guidelines5/5

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

The description provides explicit usage guidance: use uppercase AIM vocabulary, recognized monument types and periods, and run all three HER sources together for comprehensive surveys. It names alternatives (her_search_monuments, her_search_heritage_gateway) and recommends her_map for visualizing combined results.

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

her_search_conservation_areasA

Search conservation areas across England.

Queries Historic England's Conservation Areas dataset for areas of special architectural or historic interest designated by Local Planning Authorities.

Args: query: Name search (e.g. "Maldon", "Bath") lpa: Local Planning Authority filter (e.g. "Maldon District") bbox: Bounding box as "xmin,ymin,xmax,ymax" in BNG (EPSG:27700) lat: WGS84 latitude for radius search lon: WGS84 longitude for radius search radius_m: Search radius in metres (requires lat/lon) max_results: Maximum results (1-2000, default 50) offset: Pagination offset output_mode: Response format — "json" (default) or "text"

Returns: Matching conservation areas with name, LPA, designation date

Tips for LLMs: Use lpa to filter by local authority. Combine with bbox or lat/lon for spatial queries. Use her_count_conservation_areas first to gauge result size.

ParametersJSON Schema
NameRequiredDescriptionDefault
latNo
lonNo
lpaNo
bboxNo
queryNo
offsetNo
radius_mNo
max_resultsNo
output_modeNojson

TDQS

A4.6/5.0
Behavior4/5

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

No annotations are provided, but the description uses 'Search' and 'Queries' to clearly convey read-only behavior. It adds useful context about the dataset source and return fields, and notes that radius_m requires lat/lon. This is sufficient for a search tool, though it does not explicitly state 'read-only' or mention rate limits.

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 with intro, Args, Returns, and Tips sections. Each parameter is given a single concise line, and the tips are actionable. No redundant or unnecessary content is present.

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

Completeness5/5

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

For a 9-parameter search tool with no output schema, the description covers all parameters, return fields, and usage tips, including a pointer to the counting tool. It is comprehensive enough for an agent to select and invoke the tool correctly.

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

Parameters5/5

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

The input schema has 0% description coverage, so the description carries the full burden. It explains every parameter with formats (e.g., bbox as 'xmin,ymin,xmax,ymax' in BNG), defaults (max_results 1-2000 default 50), and dependencies (radius_m requires lat/lon), adding substantial 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 'Search conservation areas across England' and identifies the specific dataset (Historic England's Conservation Areas) and subject (areas of special architectural or historic interest). This distinguishes it from sibling search tools like her_search_monuments or her_search_listed_buildings.

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 a 'Tips for LLMs' section recommending the use of lpa, bbox, or lat/lon filters, and explicitly suggests using her_count_conservation_areas first to gauge result size. This is clear practical guidance, though it does not explicitly discuss when not to use this tool versus fetching a single conservation area.

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

her_search_designationsA

Search across all designation types in the NHLE.

Generic search covering listed buildings, scheduled monuments, registered parks and gardens, battlefields, protected wrecks, and World Heritage Sites.

Args: designation_type: Filter by type — listed_building, scheduled_monument, park_and_garden, battlefield, protected_wreck, world_heritage_site name: Name search (partial match) description: Description search bbox: Bounding box as "xmin,ymin,xmax,ymax" in BNG lat: WGS84 latitude for radius search lon: WGS84 longitude for radius search radius_m: Search radius in metres max_results: Maximum results (1-2000, default 50) offset: Pagination offset output_mode: Response format — "json" (default) or "text"

Returns: Matching designations across all types

Tips for LLMs: - Leave designation_type empty to search all types - Use her_count_features first for quick totals - Results include designation_type so you can see the mix

ParametersJSON Schema
NameRequiredDescriptionDefault
latNo
lonNo
bboxNo
nameNo
offsetNo
radius_mNo
descriptionNo
max_resultsNo
output_modeNojson
designation_typeNo

TDQS

A4.3/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 discloses search behavior, parameter formats (BNG vs WGS84), and that results include designation_type. However, it omits details like rate limits, error conditions, or how bbox and radius modes interact.

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 with a clear intro, parameter list, return info, and LLM-specific tips. Each section serves a purpose; the formatting makes it easy to scan despite its length.

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

Completeness4/5

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

The description covers all parameters and offers practical usage tips, which is strong for a 10-parameter tool with no output schema. However, it lacks a description of the response structure beyond the designation_type field; a sample or field list would increase completeness.

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?

All 10 parameters are described with types, formats, defaults, and allowed values (e.g., bbox format in BNG, designation_type options). The schema has 0% description coverage, so this detailed documentation is essential and fully compensates.

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 opens with a specific verb and resource ('Search across all designation types in the NHLE') and enumerates the covered types, clearly distinguishing it from specialized sibling searches like her_search_listed_buildings and her_search_monuments.

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 'Tips for LLMs' section gives explicit guidance on using this tool for all types, suggests her_count_features for quick totals, and notes that results include designation_type. It implies this is the cross-type search alternative but does not explicitly state when to prefer a sibling tool.

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

her_search_heritage_at_riskA

Search the Heritage at Risk Register for endangered heritage assets.

Queries Historic England's annual register of heritage assets at risk of loss through neglect, decay, or inappropriate development.

Args: query: Name search (e.g. "church", "castle") heritage_category: Filter by category — one of: "Scheduled Monument", "Listed Building", "Conservation Area", "Registered Park and Garden", "Registered Battlefield", "Protected Wreck Site" bbox: Bounding box as "xmin,ymin,xmax,ymax" in BNG (EPSG:27700) lat: WGS84 latitude for radius search lon: WGS84 longitude for radius search radius_m: Search radius in metres (requires lat/lon) max_results: Maximum results (1-2000, default 50) offset: Pagination offset output_mode: Response format — "json" (default) or "text"

Returns: Matching heritage at risk entries with category, risk methodology

Tips for LLMs: Use heritage_category to filter by asset type. Combine with bbox or lat/lon for spatial queries. These entries are designated assets that are at risk — they will also appear in NHLE searches.

ParametersJSON Schema
NameRequiredDescriptionDefault
latNo
lonNo
bboxNo
queryNo
offsetNo
radius_mNo
max_resultsNo
output_modeNojson
heritage_categoryNo

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It clearly states the tool queries a register, what parameters do, and what it returns ('Matching heritage at risk entries with category, risk methodology'). It implies a read-only search operation but does not explicitly state side effects, rate limits, or authentication needs. Still, for a search tool, it provides above-baseline 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 with clear sections (Args, Returns, Tips for LLMs). It is detailed yet every sentence adds value. The front-loaded purpose statement immediately tells the agent what the tool does, and the structured parameter list is easy to scan.

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 complexity (9 parameters, no output schema, no annotations), the description is largely complete: it covers all parameters, provides spatial query guidance, and notes overlap with NHLE. However, the return description is minimal ('Matching heritage at risk entries with category, risk methodology'), and without an output schema, more detail about the response structure would improve completeness.

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

Parameters5/5

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

The input schema has 0% description coverage, so the description must fully compensate. It does: each parameter is explained with examples, constraints (e.g., 'radius_m requires lat/lon', max_results range 1-2000), and enumerated values for heritage_category. This far exceeds what the bare schema provides.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Search the Heritage at Risk Register for endangered heritage assets.' This clearly distinguishes it from sibling tools like her_get_heritage_at_risk (single record retrieval) and her_count_heritage_at_risk (counting). The resource is unambiguous.

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: it queries Historic England's annual register of assets at risk. It also offers usage tips ('Use heritage_category to filter by asset type', 'Combine with bbox or lat/lon for spatial queries'). However, it does not explicitly state when to use this tool instead of other search tools, nor does it mention exclusions or alternatives beyond a note about NHLE overlap.

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

her_search_heritage_gatewayA

Search local Historic Environment Records via Heritage Gateway.

Searches across 60+ local HERs for undesignated sites not in the NHLE — red hills, findspots, fieldwork records, HER monument entries. Best-effort access via web scraping; returns empty results gracefully when the Gateway is unavailable.

Args: what: Monument type or keyword (e.g. "red hill", "saltern") where: Place name or area (e.g. "Goldhanger", "Blackwater") when: Period (e.g. "Iron Age", "Roman", "Medieval") max_results: Maximum results (default 50) output_mode: Response format — "json" (default) or "text"

Returns: Matching Heritage Gateway records from local HERs

Tips for LLMs: This is the best source for undesignated sites and local HER data. Results may be empty if the Gateway is temporarily unavailable. IMPORTANT: Gateway results cover only local HER records. For comprehensive coverage, ALSO run her_search_monuments (NHLE) and her_search_aerial (AIM) in the same area and merge the results. For spatial filtering, use her_enrich_gateway to resolve BNG coordinates, then apply a bbox to filter precisely.

ParametersJSON Schema
NameRequiredDescriptionDefault
whatNo
whenNo
whereNo
max_resultsNo
output_modeNojson

TDQS

A4.6/5.0
Behavior4/5

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

No annotations provided, so the description carries the full burden. It discloses best-effort web scraping, graceful empty results, and temporary unavailability, adding meaningful behavioral context beyond a simple search description. Could mention response format details but is otherwise strong.

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?

Structured with intro, Args, Returns, and Tips sections. It is slightly repetitive ('may be empty' appears twice) but remains focused and scannable for an LLM.

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

Completeness4/5

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

For a tool with no output schema and no annotations, the description covers purpose, usage, params, behavior, and cross-tool guidance. It could detail the return record structure but is otherwise complete.

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?

Schema has 0% parameter descriptions, but the description's Args section defines all five parameters with types and examples, fully compensating for the schema gap.

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 opens with a specific verb+resource ('Search local Historic Environment Records via Heritage Gateway') and elaborates that it covers undesignated sites across 60+ local HERs, distinguishing it from sibling NHLE/AIM search tools.

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

Usage Guidelines5/5

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

Explicitly states when to use it ('best source for undesignated sites and local HER data') and instructs to ALSO run her_search_monuments and her_search_aerial for comprehensive coverage. Also suggests her_enrich_gateway for spatial filtering.

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

her_search_listed_buildingsA

Search listed buildings by location, name, or grade.

Queries the NHLE for listed buildings. Filter by listing grade (I, II*, II) and location.

Args: name: Building name (partial match, case-insensitive) grade: Listing grade filter: "I", "II*", or "II" bbox: Bounding box as "xmin,ymin,xmax,ymax" in BNG lat: WGS84 latitude for radius search lon: WGS84 longitude for radius search radius_m: Search radius in metres max_results: Maximum results (1-2000, default 50) offset: Pagination offset output_mode: Response format — "json" (default) or "text"

Returns: Matching listed buildings with grade and location

Tips for LLMs: - Grade I is the highest (most significant) - Grade II* is between I and II - Grade II is the most common (~92% of all listed buildings) - Use bbox or lat/lon to limit by area

ParametersJSON Schema
NameRequiredDescriptionDefault
latNo
lonNo
bboxNo
nameNo
gradeNo
offsetNo
radius_mNo
max_resultsNo
output_modeNojson

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It discloses the external data source (NHLE), partial-match case-insensitive name matching, coordinate systems (BNG, WGS84), radius units, max result limits, and response formats. It doesn't cover empty-result behavior or pagination details beyond the offset parameter, but the provided behavioral context is substantial.

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 into purpose, args, returns, and tips for LLMs, with no filler. The Tips section adds relevant domain knowledge (grade hierarchy, area-limiting advice) rather than repetition. Each sentence contributes practical value.

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

Completeness5/5

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

Given the tool's complexity (9 parameters, no output schema, no annotations), the description covers the full contract: what is searched, all parameter semantics, and the return value ('Matching listed buildings with grade and location'). It is complete enough for an agent to invoke correctly and interpret basic results.

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

Parameters5/5

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

The input schema has 0% description coverage, but the description fully documents all 9 parameters, including formats ('bbox as xmin,ymin,xmax,ymax in BNG'), units ('radius_m in metres'), ranges and defaults ('max_results: Maximum results (1-2000, default 50)'), and allowed values ('grade: Listing grade filter: "I", "II*", or "II"'). This richly compensates for the schema's lack of explanations.

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 opens with 'Search listed buildings by location, name, or grade' and clarifies 'Queries the NHLE for listed buildings,' naming a specific resource and search dimensions. This clearly distinguishes it from sibling search tools like her_search_monuments and her_search_conservation_areas.

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?

It provides clear contextual guidance: the tool is for searching listed buildings with optional name, grade, and location filters, and the Tips section advises using bbox or lat/lon to limit by area. It does not explicitly name alternatives or state when not to use the tool, preventing a 5.

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

her_search_monumentsA

Search scheduled monuments by location, name, or description.

Queries the National Heritage List for England for scheduled monuments. Supports spatial queries (bounding box or point+radius) and text search on monument names.

Args: name: Monument name (partial match, case-insensitive) description: Full-text search on description field bbox: Bounding box as "xmin,ymin,xmax,ymax" in BNG (EPSG:27700) lat: WGS84 latitude for radius search lon: WGS84 longitude for radius search radius_m: Search radius in metres (requires lat/lon) max_results: Maximum results (1-2000, default 50) offset: Pagination offset output_mode: Response format — "json" (default) or "text"

Returns: Matching scheduled monuments with location and metadata

Tips for LLMs: - Use bbox for area searches (e.g. "586000,205000,602500,215000") - Use lat/lon + radius_m for point searches - Use name for text-based searches (e.g. "red hill") - Follow up with her_get_monument for full details - Use her_count_features first for quick totals - NHLE only contains designated assets. For undesignated sites (red hills, findspots, local HER records), ALSO search her_search_heritage_gateway and her_search_aerial in the same area to get comprehensive coverage.

ParametersJSON Schema
NameRequiredDescriptionDefault
latNo
lonNo
bboxNo
nameNo
offsetNo
radius_mNo
descriptionNo
max_resultsNo
output_modeNojson

TDQS

A4.8/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses that NHLE only contains designated assets and advises additional searches for undesignated sites. It also mentions pagination (offset), result limits, and output modes, though it stops short of describing rate limits or exact response shape.

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 organized into an opening summary, Args list, Returns line, and a 'Tips for LLMs' section. Each section adds distinct value, and the text is front-loaded with the primary purpose before moving to parameters and guidance.

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

Completeness5/5

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

Despite having no output schema or annotations, the description covers the core query capabilities, parameter semantics, default behaviors, and important coverage limitations. It also points to follow-up tool usage, making it self-sufficient for an agent to select and invoke this tool.

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?

Even though the JSON schema's property descriptions are absent, the description's Args section gives every parameter meaning: bbox format with example, radius_m requires lat/lon, max_results bounds (1-2000, default 50), offset for pagination, and output_mode choices. This fully compensates for the 0% schema coverage.

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 opens with a specific verb and resource: 'Search scheduled monuments by location, name, or description.' It also names the exact data source (NHLE) and distinguishes from sibling search tools by focusing on scheduled monuments.

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

Usage Guidelines5/5

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

Provides explicit when-to-use guidance: bbox for area searches, lat/lon+radius for point searches, name for text searches. It also names alternatives and complements, including her_get_monument for follow-up and her_search_heritage_gateway/her_search_aerial for undesignated coverage.

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

her_search_scotlandA

Search Scottish NRHE records (320,000+ sites from Canmore).

Queries the National Record of the Historic Environment for terrestrial archaeological sites, monuments, and buildings in Scotland. Covers 320,000+ records including castles, brochs, cairns, standing stones, churches, and industrial heritage.

Args: name: Site name keyword (partial, case-insensitive) site_type: Site type keyword (e.g. "CASTLE", "BROCH", "CAIRN") broad_class: Broad classification (e.g. "DOMESTIC", "RELIGIOUS") council: Council area (e.g. "Highland", "Edinburgh") bbox: Bounding box as "xmin,ymin,xmax,ymax" in BNG (EPSG:27700) lat: WGS84 latitude for radius search lon: WGS84 longitude for radius search radius_m: Search radius in metres (requires lat/lon) max_results: Maximum results (1-1000, default 50) output_mode: Response format — "json" (default) or "text"

Returns: Matching NRHE records with site type, classification, location

Tips for LLMs: - This covers ALL known Scottish heritage sites, not just designated ones - For designated assets only, use her_search_scotland_designations - For cross-border queries near England/Scotland border, also run her_search_monuments (NHLE) and her_search_aerial (AIM) for English sites - site_type keywords: CASTLE, BROCH, CAIRN, STONE CIRCLE, CHURCH, FORT, CRANNOG, DUN, STANDING STONE, SOUTERRAIN - MapServer max is 1,000 records per request

ParametersJSON Schema
NameRequiredDescriptionDefault
latNo
lonNo
bboxNo
nameNo
councilNo
radius_mNo
site_typeNo
broad_classNo
max_resultsNo
output_modeNojson

TDQS

A4.7/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses key behavioral details: the dataset size (320,000+ records), the MapServer limit (1,000 records per request), return format options (json/text), and the requirement that radius_m needs lat/lon. This is strong transparency for a search tool, though it doesn't explicitly state how errors or empty results are handled, which prevents a 5.

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 structured with a front-loaded summary, an Args block, a Returns line, and Tips for LLMs. While it is longer than usual, every section provides necessary information for a tool with 10 parameters and no annotations. No redundant sentences are present, though the tips section could be seen as slightly verbose; however, it contains only actionable advice.

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

Completeness5/5

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

Given the tool's complexity (10 optional parameters, no output schema) and the absence of annotations, the description is remarkably complete. It covers what the tool does, what data it searches, parameter semantics, result format, limitations, and alternatives. The only minor omission is a detailed breakdown of the return record structure, but the Returns line gives sufficient context for a search tool.

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 coverage, the description must fully explain parameters, and it does. The Args section details each of the 10 parameters, including format ('bbox as "xmin,ymin,xmax,ymax" in BNG (EPSG:27700)'), constraints ('radius_m requires lat/lon'), defaults ('max_results default 50'), and available options ('output_mode: json or text'). This goes beyond minimal descriptions and directly compensates for the incomplete 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: 'Search Scottish NRHE records' and specifies the resource (Canmore, 320,000+ sites). It distinguishes from siblings by noting this covers ALL known Scottish heritage sites versus her_search_scotland_designations for designated assets only, and her_search_monuments for English sites. The verb 'search' plus the resource and scope makes the tool's function unambiguous.

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

Usage Guidelines5/5

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

The 'Tips for LLMs' section provides explicit guidance on when to use this tool versus alternatives: 'For designated assets only, use her_search_scotland_designations' and 'For cross-border queries near England/Scotland border, also run her_search_monuments (NHLE) and her_search_aerial (AIM) for English sites'. It also includes practical usage tips like recommended site_type keywords and the maximum result limit.

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

her_search_scotland_designationsA

Search Scottish designated heritage assets.

Queries HES Designations for listed buildings, scheduled monuments, gardens and designed landscapes, battlefields, world heritage sites, conservation areas, and historic marine protected areas in Scotland.

Args: designation_type: Filter by type — one of: listed_building, scheduled_monument, garden_designed_landscape, battlefield, world_heritage_site, conservation_area, historic_marine_protected_area name: Name keyword (partial, case-insensitive) bbox: Bounding box as "xmin,ymin,xmax,ymax" in BNG (EPSG:27700) lat: WGS84 latitude for radius search lon: WGS84 longitude for radius search radius_m: Search radius in metres (requires lat/lon) max_results: Maximum results (default 50) output_mode: Response format — "json" (default) or "text"

Returns: Matching designated heritage assets with type, category, location

Tips for LLMs: - Use this for formally designated Scottish assets - For ALL known Scottish sites (not just designated), use her_search_scotland - Scottish designation types differ slightly from English NHLE types: Scotland has garden_designed_landscape and historic_marine_protected_area - For cross-border queries, also search English sources (her_search_designations for NHLE)

ParametersJSON Schema
NameRequiredDescriptionDefault
latNo
lonNo
bboxNo
nameNo
radius_mNo
max_resultsNo
output_modeNojson
designation_typeNo

TDQS

A4.8/5.0
Behavior4/5

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

No annotations are provided, so the description fully bears the transparency burden. It says the tool 'Queries HES Designations' (implying read-only), lists the output fields (type, category, location), and discloses parameter constraints (radius_m requires lat/lon). It lacks explicit mention of authentication or rate limits, but for a search tool, the core behavioral context is well covered.

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 organized with clear 'Args', 'Returns', and 'Tips for LLMs' sections, each sentence providing distinct value. It avoids redundancy and front-loads the core purpose before details, making it appropriately sized for the tool's complexity.

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

Completeness5/5

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

Given a complex 8-parameter tool with no annotations and no output schema, this description is highly complete. It specifies the query types, parameter formats, return contents, and relationships to sibling tools, leaving no major ambiguity for an agent to select and invoke the tool correctly.

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

Parameters5/5

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

The input schema has 8 parameters with zero descriptions, and the description compensates by detailing every parameter: allowed values for designation_type, partial/case-insensitive behavior for name, coordinate system for bbox (BNG EPSG:27700), lat/lon and radius dependency, and defaults for max_results and output_mode. This goes far 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 names the specific verb 'Search' and the resource 'Scottish designated heritage assets', then enumerates the designation types queried (listed buildings, scheduled monuments, gardens, battlefields, world heritage sites, conservation areas, historic marine protected areas). This clearly differentiates it from sibling tools like her_search_designations (English) and her_search_scotland (all Scottish sites).

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

Usage Guidelines5/5

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

The 'Tips for LLMs' section explicitly instructs to use this tool for formally designated Scottish assets, and points to her_search_scotland for non-designated sites and to her_search_designations for English NHLE sources. This is explicit when-to-use and alternative guidance, covering both exclusive and inclusive cases.

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

her_statusA

Check server health and data source availability.

Returns server version, registered source statuses, and tool count.

Args: output_mode: Response format — "json" (default) or "text"

Returns: Server status including source availability

Tips for LLMs: Call this first to check which sources are available.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_modeNojson

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses the function's read-only nature implicitly, details the output contents, and documents the output_mode parameter. It does not mention errors or rate limits, but for a simple health check the behavior is clearly communicated.

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 (Args, Returns, Tips). It is mostly concise, though the second 'Returns' statement partially repeats the opening sentence. Overall it is efficient and front-loaded.

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

Completeness5/5

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

Given the tool's simplicity, one optional parameter, and no output schema, the description is complete. It explains what is returned, the parameter's behavior, and even provides strategic usage guidance relative to sibling tools.

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

Parameters5/5

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

The schema provides only type and default for output_mode, with no description. The description adds concrete semantics: 'Response format — "json" (default) or "text"', which fully explains the parameter's meaning and allowed values.

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 uses a specific verb ('Check') and resource ('server health and data source availability'), and clearly states return contents (server version, source statuses, tool count). This distinguishes it from sibling data-access tools, making the purpose unmistakable.

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 'Tips for LLMs' section explicitly says 'Call this first to check which sources are available', giving clear when-to-use guidance. It does not exclude any alternatives, but for a status-check tool the context is sufficient.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 28 tool updatesv0.3.3
    • First observedher_capabilities
    • First observedher_count_aerial
    • First observedher_count_conservation_areas
    • First observedher_count_features
    • First observedher_count_heritage_at_risk
    • First observedher_cross_reference
    • First observedher_crossref_map
    • First observedher_enrich_gateway
    • First observedher_export_for_lidar
    • First observedher_export_geojson
    • First observedher_get_aerial_feature
    • First observedher_get_conservation_area
    • First observedher_get_heritage_at_risk
    • First observedher_get_monument
    • First observedher_get_scotland_record
    • First observedher_list_sources
    • First observedher_map
    • First observedher_nearby
    • First observedher_search_aerial
    • First observedher_search_conservation_areas
    • First observedher_search_designations
    • First observedher_search_heritage_at_risk
    • First observedher_search_heritage_gateway
    • First observedher_search_listed_buildings
    • First observedher_search_monuments
    • First observedher_search_scotland
    • First observedher_search_scotland_designations
    • First observedher_status

TDQS

A4.1/5.0

Scored across 28 tools

Disambiguation5/5

Each tool has a distinct purpose targeting specific entity types (e.g., aerial features, monuments, conservation areas, heritage at risk) with clear separation between count, search, get, export, cross-reference, and mapping operations. Even overlapping functions like search vs. nearby are distinguished by documentation, minimizing confusion.

Naming Consistency4/5

All tools use 'her_' prefix and snake_case, with most following a verb_noun pattern (e.g., 'her_search_monuments', 'her_get_aerial_feature'). A few outliers like 'her_capabilities', 'her_map', and 'her_nearby' deviate slightly, but the overall pattern is strong and predictable.

Tool Count5/5

With 28 tools, the server covers a broad domain (multiple heritage datasets, search, count, get, export, cross-reference, mapping) without being bloated. Each tool has a clear role, and the count is appropriate for the comprehensive scope described.

Completeness5/5

The tool surface covers all essential operations for a read-only heritage data API: capability discovery, status checks, listing sources, searching/counting/getting details for multiple entity types, cross-referencing, exporting (GeoJSON, LiDAR), and mapping. No obvious gaps for the stated purpose.

Maintenance

ActivityStale
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    A Python-based MCP server that provides access to Ordnance Survey APIs, allowing querying of geographic data through a standardized protocol with features like collection management, feature search, and spatial filtering.
    2
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    MCP server for querying archaeological site information from the EGIPCI service of the Generalitat de Catalunya, enabling AI editors to access Catalan archaeological data.
    1
    5
    MIT