Skip to main content
Glama
joshdels

free-transmission-wildlife

by joshdels

AI-Assisted Transmission Line & Wildlife Analysis

An AI-assisted GIS application for analyzing the relationship between electrical transmission infrastructure and wildlife / public-access lands in California's San Joaquin Valley.

The project combines GIS spatial analysis, DuckDB Spatial, MCP, LLMs, and custom web interfaces to make spatial questions easier to ask and analyze.

Use Case

Wildlife and environmental organizations may need to answer questions such as:

  • Which transmission lines intersect wildlife lands?

  • Which public-access lands are within 1 km of transmission infrastructure?

  • How many transmission segments affect a particular area?

  • Which areas may require further environmental review?

  • What transmission infrastructure is closest to a protected or public-access area?

Instead of manually loading multiple datasets into a GIS application and constructing spatial queries, the system allows these questions to be expressed in natural language and translated into spatial analysis workflows.

Related MCP server: PostGIS Yukon MCP

Screenshots

Claude + MCP

Claude MCP

ArcGIS

ArcGIS

MapLibre

MapLibre

Web Dashboard

Dashboard

Why This Exists

Traditional GIS workflows are powerful, but spatial analysis often requires users to:

  1. Find the appropriate datasets.

  2. Load and inspect the data.

  3. Understand coordinate systems.

  4. Construct spatial queries.

  5. Run geoprocessing operations.

  6. Interpret the results.

This project explores a different interaction model:

Ask a spatial question → perform GIS analysis → receive an interpretable result.

The goal is not to replace GIS software.

It is to explore how AI can become an interface for spatial analysis, while the underlying spatial operations remain deterministic and are executed by GIS-aware tools and databases.

The Bigger Idea

This project explores the intersection of:

GIS + Spatial Databases + AI + MCP + Custom Interfaces

with the goal of building more accessible and automatable spatial-analysis workflows.


For installation instructions, see docs/installation.

For the system architecture, see docs/architecture.

Available Tools

7 tools
calculate_transmission_lines_intersection_with_wildlifeB

Return total transmission-line overlap in kilometers.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states that the tool returns a total in kilometers, but does not clarify what is being overlapped, whether any computations depend on context, whether there are side effects, or what assumptions are made. The description is too minimal to be transparent.

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

Conciseness4/5

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

The description is one efficient sentence with no filler, and the metric and unit are front-loaded. It is concise, though arguably under-specified; however, as a single-sentence definition it is well-structured 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?

With no output schema and no annotations, the description should explain the full context of the calculation. It omits the intersection subject (transmission lines with wildlife), the distinction from sibling summary tools, and what 'overlap' precisely means. This leaves too much to inference for an agent to call the tool confidently.

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

Parameters4/5

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

The tool has zero parameters, so the baseline is 4. The description does not need to elaborate on parameters; it clearly focuses on the output. It does not add any parameter-related meaning, but with 0 params no additional information is required.

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

Purpose4/5

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

The description gives a specific verb ('Return'), a resource ('total transmission-line overlap'), and a unit ('kilometers'), so an agent understands the basic output. However, it does not explicitly mention the 'with wildlife' aspect from the tool name, and the term 'overlap' could be ambiguous without the name, so it is not fully self-contained.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus the sibling tools. Since there are alternative summary tools like get_summary_transmission_lines and get_summary_wildlife_lands, the agent is left to infer which one produces the intersection overlap metric.

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

get_arcgis_map_instructionsA

Return instructions and live data for an ArcGIS Maps SDK for JavaScript 4.29 map.

This tool is ONLY for ArcGIS. It must not generate MapLibre code.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are present, so the description carries the burden of behavioral disclosure. It does communicate that the output is ArcGIS-specific and will not be MapLibre code, which is a useful behavioral constraint. However, it does not explicitly state whether the operation is read-only, whether there are side effects, or what 'live data' entails.

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 three short sentences with no wasted words. The purpose is front-loaded, and the usage constraint is stated immediately after. Every sentence contributes value.

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

Completeness3/5

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

For a zero-parameter tool, the description adequately conveys purpose and usage boundaries. However, there is no output schema, and the description only vaguely mentions 'live data' without explaining the structure or format of the returned instructions. This leaves some ambiguity for an agent relying on the description alone.

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

Parameters4/5

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

The input schema is empty with 100% coverage and 0 parameters. With no parameters to document, the description need not add parameter details, so the baseline of 4 applies.

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

Purpose5/5

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

The description clearly states a specific verb ('Return') and resource ('instructions and live data for an ArcGIS Maps SDK for JavaScript 4.29 map'). It explicitly distinguishes this tool from MapLibre by stating it is ONLY for ArcGIS, 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 description gives explicit when-not guidance by stating 'This tool is ONLY for ArcGIS' and 'It must not generate MapLibre code.' While it does not name the sibling tool get_maplibre_map_instructions, the reference to MapLibre is sufficient for an agent to route to the correct alternative.

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

get_list_of_hit_wildlife_from_transmission_linesC

Return wildlife lands intersected by transmission lines.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full behavioral burden. It says 'Return...' but does not disclose whether this is a read-only operation, how the intersection is computed (e.g., exact geometry vs. approximate), whether results are cached, the output format, or error conditions. The verb 'Return' implies a read operation, but for an unannotated tool this is thin behavioral coverage.

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

Conciseness4/5

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

The description is a single, front-loaded sentence that conveys the essential purpose without wasted words. It could be slightly more informative by adding output details or usage context, but for the information it provides it is efficient.

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 no output schema and no annotations, the description leaves out important context for correct invocation: it does not state what the returned 'wildlife lands' look like (list of IDs? geometries? names?), whether there is any default geographic extent, or how this compares with the closely named sibling. A zero-parameter tool is simple, but the missing disambiguation from calculate_transmission_lines_intersection_with_wildlife is a real gap.

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

Parameters4/5

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

The tool has zero parameters and schema description coverage is 100% (an empty schema is fully covered). With no parameters to document, the description does not need to add parameter-level detail; the absence of parameters is itself clear and the description's mention of 'wildlife lands' and 'transmission lines' as implicit inputs is sufficient.

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

Purpose3/5

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

The description states a specific action ('Return wildlife lands intersected by transmission lines') with a clear verb and resource, so an agent can tell what data it produces. However, it does not distinguish this from the close sibling calculate_transmission_lines_intersection_with_wildlife, which may perform the same intersection in a different way or produce different output, leaving ambiguity about which to call.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus calculate_transmission_lines_intersection_with_wildlife or get_summary_wildlife_lands. The description only states what it returns, not the conditions or context that make it the preferred choice, so an agent has no basis for routing between it and siblings.

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

get_maplibre_map_instructionsA

Return instructions and live data for a MapLibre GL JS 5.14.0 map.

This tool is ONLY for MapLibre. It must not generate ArcGIS code.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It conveys a read-only, informational behavior ('Return instructions and live data') and an explicit constraint, but does not describe output format, data freshness, authentication needs, or any other operational behavior. It is adequate but minimal.

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

Conciseness5/5

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

The description is extremely compact, front-loading the core function in the first sentence and using the second sentence to state an important exclusion. Every sentence earns its place with no filler or redundancy.

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 zero-parameter tool, the description provides enough context to select and invoke it correctly, especially by differentiating MapLibre from ArcGIS. The absence of an output schema makes the vague 'live data' slightly incomplete, but the simplicity of the tool lowers the expectation for detailed return-value documentation.

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

Parameters4/5

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

The tool has zero parameters, so there are no semantics for the description to clarify. The schema is complete for this no-input tool, and the description does not need to add parameter-level context.

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 ('Return') and names the exact resource ('instructions and live data for a MapLibre GL JS 5.14.0 map'), making the tool's function immediately identifiable. It also explicitly distinguishes itself from the sibling ArcGIS tool by stating it is ONLY for MapLibre.

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 gives clear usage boundaries: it is exclusively for MapLibre and must not generate ArcGIS code. This directly tells an agent when to select this tool over the sibling get_arcgis_map_instructions, leaving no ambiguity about the supported framework.

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

get_summary_chart_instructionsB

Return instructions and live data for a summary chart.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says the tool returns instructions and live data, offering no information about read-only status, output format, potential side effects, or what the 'instructions' contain. This is minimal disclosure for a tool with an unspecified behavior profile.

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

Conciseness4/5

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

The description is a single, short sentence with no wasted words. It is front-loaded with the core action and resource. It could be more informative, but it is concise and structurally appropriate for a zero-parameter tool.

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

Completeness2/5

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

For a tool with no output schema and no annotations, the description is too vague to be complete. It fails to specify what the 'instructions' are, what 'live data' refers to, what chart is summarized, or what an agent should expect when invoking it. A zero-parameter tool still needs enough context for the returned data to be interpretable.

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

Parameters4/5

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

The input schema has zero parameters, and a zero-parameter tool sets a baseline of 4 because there is nothing for the description to clarify. The description does not mention parameters, but none exist, so this is not a gap.

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

Purpose4/5

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

The description states a clear verb and resource: it returns instructions and live data for a summary chart. It is distinguishable from sibling tools like get_arcgis_map_instructions and get_maplibre_map_instructions, which are map-focused, and from the other summary tools that return specific data sets. However, it does not elaborate on what kind of summary chart is meant, leaving some ambiguity.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus any alternative. The description does not mention contexts, exclusions, or how this relates to sibling tools such as get_summary_transmission_lines or get_arcgis_map_instructions. An agent receives no decision support for tool selection.

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

get_summary_transmission_linesC

Return a summary of transmission lines.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior1/5

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

With no annotations available, the description must disclose behavior, but it merely states that a summary is returned. There is no mention of the format, content of the summary, data source, or limitations, leaving the agent without meaningful behavioral context.

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

Conciseness5/5

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

The description is one short sentence that immediately states the action and subject. There are no wasted words, and the structure is appropriately minimal.

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?

Even though the tool is simple with no parameters, the absence of an output schema means the description should clarify what a 'summary' represents (e.g., counts, lengths, status). This is missing, so the agent may not know what to expect from the return value.

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

Parameters4/5

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

The tool has zero parameters, so the empty schema fully documents the inputs. The description need not add parameter details, and a score of 4 is the baseline for tools with no parameters.

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

Purpose4/5

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

The description states a specific verb ('Return') and resource ('summary of transmission lines'), clearly distinguishing it from sibling tools targeting wildlife or map instructions. However, 'summary' is somewhat vague about what kind of summary is produced, so it stops short of a 5.

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

Usage Guidelines2/5

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

The description offers no guidance on when to use this tool versus alternatives like get_summary_wildlife_lands or calculate_transmission_lines_intersection_with_wildlife. The intended use case is only implied by the tool name.

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

get_summary_wildlife_landsA

Return a summary of wildlife lands.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. It indicates a read-style operation by saying 'Return', but it does not disclose the scope, format, or any side-effect or authorization details. This is acceptable for a zero-parameter read-only tool, but still minimal.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. For a tool with no parameters, this is maximally concise while still stating the primary action and resource.

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

Completeness3/5

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

The tool is trivially invocable with no arguments, but the absence of an output schema and lack of detail about what the 'summary' contains leaves some ambiguity. It is adequate for simple selection, but an agent must infer the exact return structure.

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

Parameters4/5

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

The input schema has zero parameters, so the description has no parameter details to provide. The baseline for 0 params is 4, and the description appropriately says nothing about parameters.

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

Purpose4/5

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

The description uses a clear verb and resource: 'Return a summary of wildlife lands.' It is distinguishable from sibling transmission-line tools by the resource term, but 'wildlife lands' and the exact nature of the summary are left undefined, preventing a top score.

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?

No explicit guidance on when to use this tool rather than a sibling is provided. The resource 'wildlife lands' implies it is for wildlife-lands summaries, but there are no stated alternatives, contexts, or exclusions, so usage is only implied.

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. 7 tool updatesv0.1.0
    • First observedcalculate_transmission_lines_intersection_with_wildlife
    • First observedget_arcgis_map_instructions
    • First observedget_list_of_hit_wildlife_from_transmission_lines
    • First observedget_maplibre_map_instructions
    • First observedget_summary_chart_instructions
    • First observedget_summary_transmission_lines
    • First observedget_summary_wildlife_lands

TDQS

A3.5/5.0

Scored across 7 tools

Disambiguation4/5

The data tools are largely distinct, but the two intersection tools (get_list_of_hit_wildlife_from_transmission_lines and calculate_transmission_lines_intersection_with_wildlife) overlap in subject and could be misselected without careful reading. The two map instruction tools are clearly disambiguated by their explicit platform constraints.

Naming Consistency4/5

Most tools follow a get_<description> snake_case convention, and the map tools use a clear platform suffix. The calculate_ prefix in calculate_transmission_lines_intersection_with_wildlife is a minor deviation, and get_list_of_hit_wildlife_from_transmission_lines is verbose, but overall the naming pattern is predictable.

Tool Count5/5

Seven tools is a well-scoped, focused set for a specialized transmission/wildlife analysis dashboard. Each tool serves a distinct output need: summaries, intersection results, overlap metrics, chart guidance, and map guidance.

Completeness4/5

The set covers the core query needs (summaries, intersection list, overlap metric) and presentation needs (chart and map instructions). Minor gaps exist, such as no detailed feature-level retrieval for individual transmission lines or wildlife lands, but the surface is likely sufficient for a dashboard use case.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    An Iceberg-native geospatial MCP server powered by DuckDB that provides tools for spatial SQL queries, catalog discovery, and data management. It enables LLM agents to interact with Apache Iceberg lakehouses to perform complex spatial analysis, joins, and aggregations.
    1
    -
  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables natural language and geospatial queries on PostGIS databases, with 32 tools for spatial analysis, geometry operations, and database management.
    4
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    An MCP server that connects AI agents to cloud-native geospatial data via STAC metadata and DuckDB with H3 spatial indexing, enabling zero-configuration SQL queries on terabyte-scale datasets over S3.
    23
    BSD 3-Clause
  • A
    license
    A
    quality
    A
    maintenance
    MCP server for chatting with physical-world data from robotics, drones, automotive, and IoT sources using natural language. It generates auditable SQL queries over Apache Arrow/DuckDB to let you analyze, summarize, and build data pipelines.
    18
    397
    Apache 2.0