Skip to main content
Glama

mcp-resilland

AI-powered spatial intelligence for landscape restoration — now in any MCP client.

Built for the World Bank's $256M RESILAND CA+ program covering Uzbekistan, Kazakhstan, Kyrgyzstan, Tajikistan, and Turkmenistan.

PyPI version Python versions License: Apache 2.0 MCP compatible


mcp-resilland is a Model Context Protocol server that makes the full power of the RESILAND Intelligence platform available to Claude Desktop, Cursor, Continue, Windsurf, Zed, and any other MCP-capable client.

Ask your AI assistant questions like:

"Analyze cadastral parcel 1248 in Samarqand for drought-tolerant restoration, cite the Phase 4 policy documents, and generate a feasibility report in Turkish."

…and the model will call the right sequence of tools — pulling cadastral geometry, 12-month Sentinel-2 NDVI, OSM infrastructure proximity, country climate indicators, curated species fit, and pgvector-backed policy RAG — then synthesize the answer with Opus 4.7 on the RESILAND backend.


Features

  • 🗺️ 3,563 cadastral forest parcels (Uzbekistan pilot) + all 5 RESILAND CA+ countries

  • 🌱 Curated species catalog — 64 Central Asia tree/shrub species with climate profile, tolerances, restoration priorities, nursery availability

  • 🛰️ Sentinel-2 NDVI history — 12-month median per parcel from local Cloud-Optimized GeoTIFFs

  • 🌡️ Country climate indicators — ERA5 temperature, CHIRPS precipitation, GWIS FWI fire danger, SPI-3 drought, WRI water stress, Hansen tree-cover loss, MODIS dust

  • 🛣️ OSM infrastructure proximity — nearest road / settlement / water body across ~370K features for all 5 countries

  • 📄 Phase 4 policy RAG — pgvector semantic search across World Bank Phase 4 feasibility and nursery handbooks

  • 🤖 Opus 4.7 feasibility reports — 10-section Phase 4-style markdown with citations and token/cost accounting

  • 🌐 Four-language output — English · Türkçe · Русский · Oʻzbekcha


Related MCP server: Gods Eye Geospatial MCP

Install

pip install mcp-resilland

Or, if your MCP client supports it (recommended for Claude Desktop):

uvx mcp-resilland

Configure

Create an API key on the RESILAND dashboard: https://resilland.com/settings/api-keys

(Keys are free with soft daily/weekly/monthly quotas — no credit card.)

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "resilland": {
      "command": "uvx",
      "args": ["mcp-resilland"],
      "env": {
        "RESILLAND_API_KEY": "rsi_live_..."
      }
    }
  }
}

Cursor / Continue / Windsurf / Zed

Any MCP-capable client. Point the stdio transport at the mcp-resilland binary with the same environment variable.

Self-hosted backend

If you run your own RESILAND Intelligence instance, override the upstream:

export RESILLAND_BASE_URL=http://localhost:8000
export RESILLAND_API_KEY=rsi_live_...
mcp-resilland

Capabilities

Tools (16)

Tool

What it does

get_balance

Current API key quota state + totals

list_models

Available models + supported locales/countries

list_parcels

Cadastral parcel search (country / viloyat / tuman / bbox)

get_parcel

Parcel detail + nearest OSM + nearest nurseries

list_nurseries

Nurseries across the RESILAND region

get_nursery

Single nursery detail

analyze_area

Full spatial context: NDVI · climate · species · infrastructure · RAG

generate_feasibility_report

Opus 4.7 Phase 4-style markdown report with citations

translate_brief

EN ↔ TR ↔ RU ↔ UZ translation, markdown-preserving

get_stats_overview

Platform-wide KPIs (docs, chunks, NDVI, parcels, area, reports) ⭐ v0.2

get_stats_summary

Viewport-scoped counts (bbox filter) ⭐ v0.2

list_reports

List owned feasibility reports (language / scope / status filter) ⭐ v0.2

get_report

Full report detail — sections, siblings, shares, extra_metadata ⭐ v0.2

translate_report

Translate a report to another language (background task) ⭐ v0.2

create_report_share_link

Mint a 7-day public share URL ⭐ v0.2

get_report_pdf_url

Signed PDF URL (no binary streaming, MCP-friendly) ⭐ v0.2

Resources (8)

Resources are URI-addressable, read-only views the host can surface as "attach to chat" items, sidebar references, or autocomplete targets.

URI

Returns

resiland://info

Server version + runtime config

resiland://parcels/{parcel_id}

Parcel detail (same shape as get_parcel)

resiland://nurseries

Full nursery collection

resiland://species/{species_id}

Curated species record (climate profile, tolerances, restoration use-cases)

resiland://climate/{country}

Country-level climate indicators

resiland://reports

List of reports owned by the API-key user ⭐ v0.2

resiland://reports/{report_id}

Full report detail (sections, siblings, shares, extra_metadata) ⭐ v0.2

resiland://stats/overview

Live platform KPIs (same shape as the /stats dashboard) ⭐ v0.2

Prompts (3)

Pre-canned conversation starters the user can pick from their client's prompt picker.

Prompt

Purpose

restoration_brief

Produce a structured restoration recommendation for an area

species_matchmaker

Pick tree species matching given site conditions

report_center_workflow

Generate → translate → share → summarise a full Phase 4 report in one conversation ⭐ v0.2


Example conversations

You:   List all RESILAND-9 nurseries in Kazakhstan.
Claude: [calls list_nurseries(country="KAZ", category="RESILAND-9")]
        Here are the 9 RESILAND program nurseries in Kazakhstan…

You:   For parcel 1248, what are the top three drought-tolerant species?
Claude: [calls analyze_area(parcel_id=1248, query="drought tolerant")]
        Based on the curated species fit and Phase 4 RAG citations,
        the top three are Haloxylon ammodendron, Elaeagnus angustifolia,
        and Ulmus pumila…

You:   Generate a full feasibility report for the Dargom nursery in Turkish.
Claude: [calls generate_feasibility_report(nursery_id="…", locale="tr")]
        I've prepared a 2,300-word Turkish feasibility report.
        Estimated cost: $0.08. Sources cited: 7 Phase 4 chunks…

Architecture

    MCP Client (Claude Desktop / Cursor / Continue / Windsurf / Zed)
                          │  stdio (JSON-RPC)
                          ▼
                    mcp-resilland
              (FastMCP 3.x · Python 3.10+)
                          │  httpx async
                          ▼
              RESILAND Intelligence backend
                  https://resilland.com/v1/public/*
                          │
          ┌───────────────┼────────────────┐
          ▼               ▼                ▼
       PostGIS         pgvector         Opus 4.7
   (parcels · OSM)   (Phase 4 RAG)    Sonnet 4.6
                                       Haiku 4.5

The MCP server is a stateless proxy. It does not compute, store, or cache — all state lives on the RESILAND backend (PostGIS for geometry, pgvector for RAG, MinIO for tiles, Redis for the Anthropic response cache).


Development

git clone https://github.com/ilhankilic/mcp-resilland
cd mcp-resilland
pip install -e ".[dev]"

# Run against a local RESILAND backend:
RESILLAND_BASE_URL=http://localhost:8000 RESILLAND_API_KEY=rsi_live_... \
    python -m mcp_resilland

# Run tests:
pytest

Project layout

mcp-resilland/
├── pyproject.toml           # hatchling · Apache-2.0 · Python 3.10+
├── README.md                # this file
├── LICENSE                  # Apache 2.0
├── src/mcp_resilland/
│   ├── __init__.py          # package metadata
│   ├── __main__.py          # mcp-resilland console script entrypoint
│   ├── server.py            # FastMCP instance + module wiring
│   ├── client.py            # httpx async client (bearer auth)
│   ├── tools.py             # 9 MCP tools
│   ├── resources.py         # 4 MCP resources (URIs)
│   └── prompts.py           # 2 MCP prompts
└── tests/                   # pytest + respx

Authors

  • İlhan Kılıç — lead engineer, architect

  • Enis Kaan Keskin — spatial data, biodiversity modeling

Acknowledgments

We are grateful for the invaluable advisory support of:

  • İsmail Belen — President, United Nations Forum on Forests (UNFF)

  • Doç. Dr. Hülya Hernandez — FAO Türkiye Office (Food and Agriculture Organization of the United Nations, Türkiye Office)

Their guidance on international forest policy frameworks, landscape restoration standards, and Central Asia ecological context was instrumental in shaping this work.

We also thank the World Bank for the RESILAND CA+ Phase 4 feasibility documentation that forms the semantic-search corpus of this platform.



License

Licensed under the Apache License, Version 2.0. See LICENSE.

Copyright © 2026 İlhan Kılıç and Enis Kaan Keskin.

Available Tools

16 tools
analyze_areaA

Build a structured spatial context for this area. Returns a JSON payload containing:

  • subject (parcel / nursery / drawn polygon)

  • cadastral attributes

  • up to 5 nearest-neighbor parcels

  • up to 5 nearest nurseries with distance (km)

  • 12-month NDVI history (if cached)

  • country-level climate snapshot (ERA5 / CHIRPS / SPI / FWI)

  • OSM infrastructure proximity (road / settlement / water)

  • species fit scores from the curated Central Asia catalog

  • top-K semantic Phase 4 / handbook chunks (pgvector RAG)

Exactly one of parcel_id | cadastral_number | nursery_id | geojson must be provided. query focuses the RAG retrieval (e.g. "drought tolerant halophytes"). depth is shallow | standard | deep.

Locales: en | tr | ru | uz.

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNostandard
queryNo
localeNoen
geojsonNo
parcel_idNo
nursery_idNo
cadastral_numberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/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 behavioral disclosure. It does this thoroughly by listing what the tool returns (including the conditional 'if cached' for NDVI history), the input constraints, the meaning of depth, and supported locales. It also communicates the tool's analytical, read-oriented nature without explicitly saying 'read-only'.

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

Conciseness5/5

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

Despite the tool's complexity, the description is tightly structured: a lead sentence, a bulleted list of return fields, and a compact parameter usage section. Every sentence adds value and avoids redundancy, making it easy to scan for key facts.

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 high complexity (7 parameters, rich output schema), the description is remarkably complete. It covers the output structure, input constraints, parameter semantics, and even edge cases like 'if cached'. The existence of an output schema further reduces the burden, but the description already provides sufficient context 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 gives no descriptions (0% schema description coverage), so the description compensates fully by explaining each parameter. It defines the exclusive-OR requirement for the four identifier parameters, gives an example for query, enumerates depth options, and lists valid locale values. This goes beyond the schema's raw type definitions.

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 ('Build a structured spatial context for this area') and enumerates the contents of the returned JSON payload, making the tool's purpose unmistakable. It clearly distinguishes this from sibling tools like get_parcel or get_nursery, which are narrower in 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 clear context on when to use the tool and explicitly encodes a critical usage rule ('Exactly one of parcel_id | cadastral_number | nursery_id | geojson must be provided'). It also explains the role of query and depth parameters. However, it does not explicitly mention alternatives or exclusion cases relative to sibling tools, so it stops short of full when-to-use vs. when-not-to-use guidance.

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

generate_feasibility_reportA

Generate a full Phase 4-style feasibility report with Opus 4.7.

Returns markdown body, source citations (with pgvector similarity), token usage, and cost in USD. Typical output is 1,800-2,500 words across 10 standard sections (Executive Summary, Site Context, Ecological Assessment, Species Plan, Nursery Linkages, Risks, Monitoring Plan, Timeline, Budget indication, Sources).

Exactly one area-reference parameter is required. locale: en | tr | ru | uz.

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoen
geojsonNo
parcel_idNo
nursery_idNo
cadastral_numberNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/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 return values (markdown, citations, token usage, cost), output length, section structure, the mandatory one-of parameter rule, and locale options. This is substantial behavioral context beyond the schema, though it does not mention error behavior or side effects (e.g., cost implications or long runtime).

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 compact and front-loaded with the purpose, then lists return components and constraints. All sentences contribute value; no redundant phrasing. It could benefit from structured formatting (e.g., bullet list of sections) but is acceptably concise.

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 and the existence of an output schema, the description covers the key outputs, typical length, section list, and the input requirement. It lacks information on failure modes, prerequisites like balance, or interaction with other tools, but for a report generator it provides a solid operational picture.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It explains that exactly one area-reference parameter (geojson, parcel_id, nursery_id, cadastral_number) is required, and enumerates locale values with pipe-separated options. However, it does not describe each parameter individually, leaving some ambiguity about formats (e.g., what geojson should look like).

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: 'Generate a full Phase 4-style feasibility report with Opus 4.7,' which clearly distinguishes it from sibling tools like analyze_area or translate_brief. It enumerates the report's contents (markdown body, citations, token usage, cost) and section list, leaving no ambiguity about what the tool produces.

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 does not name alternatives or provide explicit when-to-use guidance, but the phrase 'full Phase 4-style feasibility report' implies this is the primary generation tool. The required-parameter constraint is a usage rule, not a tool-selection guideline. Without comparisons to siblings like analyze_area or get_report, the agent may not know when to choose this over a lighter analysis.

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

get_balanceA

Return the current API key's quota state, totals, and scopes.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are available, so the description carries full responsibility. It indicates a read-only operation ('Return') and specifies that it operates on the current API key, which is useful context. However, it does not disclose any additional behavioral details such as authentication requirements or rate limit implications.

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, compact sentence that front-loads the operation and its target. Every word adds value, with 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 has no parameters and an output schema exists, the description sufficiently covers the purpose and scope. It specifies what the response contains (quota state, totals, scopes) and requires no additional context for a simple balance lookup.

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 schema description coverage is 100% vacuously. The description adds context that the balance is tied to the current API key, which is useful for the agent to understand the implicit context. Baseline for 0 params is 4.

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 the specific verb 'Return' and clearly identifies the resource: the current API key's quota state, totals, and scopes. None of the sibling tools deal with balance or quota, so it is well-differentiated.

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 compared to alternatives. There are no sibling tools for balance, but the description does not explicitly state when it should be invoked (e.g., before making API calls).

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

get_nurseryA

Fetch full detail for a single nursery by UUID.

ParametersJSON Schema
NameRequiredDescriptionDefault
nursery_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states the operation but doesn't disclose authentication requirements, error behavior, or what 'full detail' includes. This is minimal for a read operation.

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

Conciseness5/5

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

One sentence, no filler, front-loaded with verb and object. It is perfectly concise and well-structured.

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

Completeness4/5

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

For a simple single-fetch tool with one parameter and an output schema, the description is sufficient. The output schema covers return values. It could mention behavior on not-found, but the description is adequate for a basic get-by-ID.

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

Parameters3/5

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

Schema description coverage is 0%, but the description clarifies that nursery_id is a UUID, adding meaning beyond the schema's plain string type. However, it doesn't specify UUID format or other constraints.

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 'Fetch' with a clear resource 'full detail for a single nursery' and a identifying method 'by UUID'. It clearly distinguishes from siblings like list_nurseries (which lists multiple) and get_parcel (different resource).

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 usage is implied: call this when you have a UUID and need full detail for a single nursery. No explicit when-to-use or alternatives are mentioned, but the singular 'single nursery' makes its purpose clear.

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

get_parcelA

Fetch full detail for a single parcel by integer id: cadastral attributes, geometry, centroid, nearest nurseries, and cached OSM infrastructure proximity (nearest road / settlement / water body).

ParametersJSON Schema
NameRequiredDescriptionDefault
parcel_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It adds context by mentioning 'cached' OSM infrastructure proximity and enumerating returned data, but it does not disclose permission requirements, error behavior, or potential performance implications. It is a read-only fetch by nature, but this isn't explicit.

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, compact sentence with the primary purpose front-loaded and details following with a colon. Every clause adds information, and there is no fluff or repetition.

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 simplicity (one parameter, no annotations) and existence of an output schema, the description already enumerates the key return components and notes the cached nature of some data. It doesn't address error cases (e.g., nonexistent id), but for a straightforward fetch this would be handled by the output schema, so the description is largely complete.

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 schema provides only a required integer parcel_id with no description (coverage 0%). The tool description compensates by clarifying that the parameter refers to the 'integer id' of the parcel, adding meaning beyond the bare schema. It doesn't give examples or range, but for a single simple parameter this is adequate.

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 ('Fetch'), identifies the resource ('full detail for a single parcel'), and specifies the lookup by integer id. It also enumerates the included attributes (cadastral attributes, geometry, centroid, etc.), which clearly distinguishes it from sibling tools like list_parcels or get_nursery.

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 its use case ('full detail for a single parcel'), which contrasts with listing tools, but it does not explicitly state when to prefer this tool over alternatives or provide any exclusion criteria. Guidance is implied rather than spelled out.

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

get_reportA

Full report detail by UUID:

  • body_markdown (concatenated sections)

  • sections[]: timeline of every section_key with versions

  • siblings[]: other-language variants in the same analysis group

  • shares[]: active / expired share links

  • pdf_available_langs: which languages can produce a PDF

  • extra_metadata.verdict + context_snapshot when present (populated on reports generated after 2026-04-24; older reports fall back to section markdowns only).

ParametersJSON Schema
NameRequiredDescriptionDefault
report_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description must carry the behavioral burden, and it does: it enumerates response fields and even notes a version-dependent behavior (extra_metadata only on reports after 2026-04-24, older fall back). It doesn't describe auth, rate limits, or error cases, but for a read-only get-by-ID, the key behavior is 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 is front-loaded with the core purpose and then uses a clean bulleted list for the response fields. Every line adds specific detail; no filler or repetition. Efficient and well-structured.

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

Completeness4/5

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

The tool is simple (single parameter, read-only), and the description covers the main return structure and a notable behavioral nuance. Since an output schema exists, the description doesn't need to fully document every field, but it provides a strong overview and the temporal caveat. Missing only minor edge-case info that would be over-specification for such a tool.

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

Parameters4/5

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

The only parameter, report_id, is described as a 'UUID' in the first line, adding meaning beyond the bare string type in the schema. Given schema description coverage is 0%, this is valuable, though it doesn't elaborate on how to obtain the UUID or constraints.

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 'Full report detail by UUID', which clearly identifies the tool as a retrieval-by-ID operation for reports. It lists specific fields (body_markdown, sections, siblings, shares) and distinguishes it from siblings like list_reports (listing) and translate_report (translation).

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 phrase 'Full report detail' gives clear context for when to use this tool. However, it does not explicitly mention when to use alternatives (e.g., get_report_pdf_url for PDFs or list_reports to find UUIDs), so it lacks explicit exclusions.

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

get_report_pdf_urlA

Generate a 7-day public URL that downloads the report as PDF.

Equivalent to create_report_share_link + the public PDF route, but packaged into one call. MCP-friendly: returns a plain URL that Claude or any HTTP client can fetch — no binary streaming.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNooptional target language; defaults to the report's own language. Must match an existing sibling.
report_idYesreport UUID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/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 adds valuable details beyond the schema: the URL is public, expires after 7 days, and returns a plain URL rather than binary streaming. However, it does not mention authentication requirements, potential errors, or what happens if the report doesn't exist, which would be useful for full 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 concise and well-structured: two sentences, with the primary purpose stated first, then equivalence and MCP-friendliness. Every sentence adds value and avoids 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?

For a tool of this simplicity, the description is complete: it explains the 7-day expiry, the URL return format, and how it relates to a sibling tool. An output schema exists, so the return value is already defined. No significant gaps remain for the target use case.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters (report_id and lang) with descriptions. The description does not add significant meaning beyond the schema, only reinforcing the URL behavior. Therefore, the baseline score of 3 is appropriate.

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

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: generating a 7-day public URL for a report as PDF. It uses a specific verb ('generate') and resource ('report PDF URL'), and distinguishes itself from sibling tool create_report_share_link by noting it packages the equivalent into one call.

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool: when a plain, fetchable URL is needed without binary streaming, positioning it as an MCP-friendly alternative. It references create_report_share_link as the equivalent but does not explicitly state when not to use it or name other alternatives, so slightly 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.

get_stats_overviewA

Live platform KPIs straight from the production DB.

Returns 8 counters (documents, pgvector chunks, avg chunk tokens, NDVI rasters, Sentinel scenes, active data sources, total area hectares, cadastral parcels, nurseries, finalised reports), plus a data-sources panel, per-country coverage (UZB/KAZ/KGZ/TJK/TKM/ TUR), and a recent ingestion activity feed.

Same payload the resilland.com /stats dashboard renders.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/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 for behavioral disclosure. It mentions the production DB source and lists return contents, implying a read-only operation, but it does not explicitly state safety aspects, potential performance impact, or access requirements. It adds some context beyond a minimal description but lacks depth.

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

Conciseness4/5

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

The description is concise and well-structured, with a short opening sentence followed by a detailed but organized enumeration of return fields. The final sentence about the dashboard payload is slightly redundant with the opening 'Live platform KPIs' but doesn't waste much space. It earns a 4, not 5, due to minor 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 has no parameters, an output schema exists, and the description thoroughly enumerates all return sections (counters, data-sources panel, country coverage, activity feed), it is contextually complete. The description leaves no ambiguity about what the tool returns, and the output schema covers return values. A 5 is justified for this no-param tool.

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

Parameters4/5

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

The tool has zero parameters, so the baseline score is 4 according to the rubric. The description adds no parameter details because none are needed; the schema's additionalProperties: false confirms there are no inputs. Thus a score of 4 is appropriate.

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

Purpose4/5

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

The description clearly states the tool returns live platform KPIs and enumerates specific counters and panels, making the purpose obvious. However, it does not explicitly differentiate from the sibling tool get_stats_summary, which likely serves a similar function. A 5 would require explicit sibling differentiation.

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 gives no explicit guidance on when to use this tool versus get_stats_summary or other siblings. The phrase 'straight from the production DB' implies a live read but offers no exclusions, prerequisites, or alternative recommendations. This is a clear gap for a tool with a closely named sibling.

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

get_stats_summaryA

Viewport-scoped stats — counts parcels, total area, distinct viloyats (provinces) and nurseries inside a bbox.

Pass all 4 bbox params together for a filtered read; pass none to get global totals. Tuple order: [west, south, east, north] in EPSG:4326.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_latNo
max_lngNo
min_latNo
min_lngNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 full burden. It discloses important behavioral traits: the tool is a 'filtered read', it can return either viewport-scoped or global totals depending on parameters, and the bbox coordinate system is EPSG:4326. This adds value beyond the name and schema, though it does not explicitly state read-only semantics or potential 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 concise and front-loaded with the core purpose. Each sentence earns its place: first states the function, second explains parameter modes, third clarifies the coordinate system. No filler or redundant content.

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

Completeness4/5

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

Given the tool's moderate complexity, the description covers the essential aspects: purpose, parameter behavior, and coordinate system. The output schema exists, so return values are not required in the description. It could have more explicitly differentiated from get_stats_overview, but overall it is complete for an agent to use correctly.

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

Parameters4/5

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

Despite 0% schema description coverage, the description compensates by explaining that the 4 parameters form a bbox, must be passed together for a filtered read, and that omitting them yields global totals. The tuple order [west, south, east, north] maps clearly to the min/max lat/lng parameters, providing semantic meaning beyond the bare schema.

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

Purpose5/5

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

The description clearly states the tool's function with a specific verb ('counts parcels, total area, distinct viloyats (provinces) and nurseries inside a bbox') and distinguishes it from the sibling get_stats_overview by emphasizing the viewport/bbox scope. The 'Viewport-scoped stats' prefix immediately conveys the resource and 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?

Provides clear context for when to use the tool: when you need stats within a bbox. It also explains two usage modes (pass all 4 bbox params for filtered read, or none for global totals). However, it does not explicitly mention alternatives or when-not-to-use relative to sibling tools like get_stats_overview.

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

list_modelsA

List available LLM + embedding models and supported locales/countries.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only states 'List available...' with no additional behavioral context such as whether this is read-only, whether it requires authentication, whether it returns all models at once, or any side effects. The description is too minimal to reveal behavioral traits beyond the obvious list action.

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, clear sentence. It is front-loaded with the verb and immediately lists the specific items covered. Every word earns its place; there is no redundancy or filler.

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

Completeness4/5

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

For a simple list tool with zero parameters and an output schema present, the description is largely sufficient. It names the two categories of returned data (LLM + embedding models, supported locales/countries). Slightly more context about the return style (e.g., full list vs. paginated) would improve completeness, but the low complexity and schema mitigate this 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, so the baseline is 4. There are no parameters to document, and the description correctly mentions the scope (models and locales/countries) without needing to explain any input semantics. The schema confirms no properties, so no conflict.

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 begins with the specific verb 'List' and clearly identifies the resource: 'available LLM + embedding models and supported locales/countries.' This precisely states what the tool does and distinguishes it from sibling tools like list_parcels or list_reports, which focus on different domains.

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

Usage Guidelines3/5

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

The description implies usage: call this tool when you need to see available models or supported locales/countries. However, it does not provide explicit when-to-use vs. alternatives or any exclusion criteria. Sibling tools are unrelated, so no direct confusion, but the guideline is only implicit.

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

list_nurseriesA

List forestry nurseries across the RESILAND region.

ParametersJSON Schema
NameRequiredDescriptionDefault
countryNoISO-3166 alpha-3
categoryNoRESILAND-9 | newly-established-18 | forestry-agency | existing

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations provided, the description must carry the burden of behavioral disclosure. It only states 'List', which inherently suggests a read-only operation, but it does not disclose any additional behavioral traits such as pagination, ordering, potential large response sizes, or any side effects. This adds minimal value beyond the tool name.

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, brief sentence that directly states the tool's purpose with no extraneous or repetitive content. It is optimally concise and front-loaded.

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 list tool with two optional, well-documented parameters and an output schema, the description is largely sufficient. It could mention that filtering is possible, but the schema already conveys that. Given the low complexity and available structured information, the description is adequately complete.

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

Parameters3/5

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

The input schema provides 100% coverage of parameter descriptions (country: ISO-3166 alpha-3; category: list of allowed values). The description adds no parameter-level meaning beyond the schema, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description 'List forestry nurseries across the RESILAND region' clearly states a specific verb ('List'), the resource ('forestry nurseries'), and the geographic scope ('RESILAND region'). This distinguishes it well from sibling tools like get_nursery, which presumably retrieves a single nursery, and other list tools like list_parcels.

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

Usage Guidelines3/5

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

The description implies use when a list of nurseries is needed, but it does not explicitly mention when to use this tool versus alternatives, nor does it provide exclusions or prerequisites. The sibling tool names hint at distinctions, but the description itself offers no direct guidance.

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

list_parcelsC

List cadastral forest parcels.

ParametersJSON Schema
NameRequiredDescriptionDefault
bboxNo'west,south,east,north' in EPSG:4326
limitNomax rows (default 100, capped at 500)
tumanNoDistrict name (e.g. "Pastdarg'om")
countryNoISO-3166 alpha-3 (UZB, KAZ, KGZ, TJK, TKM)
viloyatNoRegional / provincial name (e.g. 'Samarqand viloyati')

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of disclosing behavior. It only says 'List', without stating whether the operation is read-only, whether there are pagination limits, or whether filters like bbox or tuman are applied automatically. It also doesn't mention any potential side effects or access requirements, making it insufficiently transparent.

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

Conciseness4/5

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

The description is a single, concise sentence that is front-loaded with the action and resource. It is appropriately short for a simple list operation, but it could arguably include more contextual detail without becoming verbose. The structure is clear and efficient.

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

Completeness3/5

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

Given the tool's 5 parameters, output schema, and sibling tools, the description is minimal but minimally viable. It doesn't explain when to use this tool or how it differs from siblings, and it lacks behavioral notes. The output schema covers return values, so that aspect is handled, but the overall context is incomplete for an agent to fully understand the tool's role.

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

Parameters3/5

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

All five parameters have descriptions in the input schema, covering 100% of the parameter semantics. The description itself adds no additional detail about parameters, but the schema already provides the necessary meaning, so the baseline of 3 applies.

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

Purpose4/5

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

The description clearly states the verb 'List' and the resource 'cadastral forest parcels', which is specific and unambiguous. However, it doesn't explicitly distinguish this from sibling tools like get_parcel or list_nurseries, though the plural 'parcels' and the action 'list' imply a collection operation. Thus it is clear but lacks explicit sibling differentiation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention that get_parcel is for individual parcels or that list_nurseries is for nurseries. There is no context about typical use cases, prerequisites, or exclusions, leaving the agent to infer usage from the name alone.

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

list_reportsA

List feasibility reports owned by this API key's user.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNomax rows (1–200, default 50)
offsetNopagination offset
languageNofilter by 'en' | 'tr' | 'ru' | 'uz'
scope_kindNo'parcel' | 'polygon' | 'oblast' | 'program'
report_statusNo'final' (default, hides interrupted drafts), 'draft', or 'all'final

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

The description adds ownership scoping ('owned by this API key's user'), which is useful behavioral context. However, with no annotations provided, it does not disclose the default report_status filtering (final only), pagination behavior, or other side effects. Some details exist in the schema, but the description carries the burden and only partially fulfills it.

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 irrelevant details. It communicates the core purpose efficiently.

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 list tool with a rich schema and output schema, the description covers the essential ownership constraint. It could mention the default status filter or explicitly reference sibling tools, but the tool is relatively simple and the description is sufficient for basic understanding.

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

Parameters3/5

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

The input schema has 100% description coverage for all 5 parameters, so the baseline is 3. The description adds no parameter-specific meaning beyond what the schema already provides.

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

Purpose5/5

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

The description states the specific action 'List' and the resource 'feasibility reports', with an ownership qualifier. This clearly distinguishes it from siblings like get_report (single report) and generate_feasibility_report (creation).

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

Usage Guidelines3/5

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

The description implies usage as a listing endpoint for the current user's reports, but does not explicitly mention when to use it over alternatives like get_report or list_parcels. No exclusions or when-not-to-use guidance is provided.

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

translate_briefB

Translate forestry / policy text across the four supported languages (Sonnet 4.6, markdown-preserving).

ParametersJSON Schema
NameRequiredDescriptionDefault
textYessource text (up to 20,000 characters)
source_langNooptional hint for the translator
target_langYes'en' | 'tr' | 'ru' | 'uz'
preserve_markdownNokeep headings, lists, links intact

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It adds useful behavioral details ('Sonnet 4.6' model and 'markdown-preserving'), but does not disclose other behaviors like character limits, error handling, or whether source_lang is auto-detected. The markdown-preserving note is valuable but partial.

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

Conciseness5/5

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

A single, front-loaded sentence with a parenthetical for additional traits. Every word earns its place; no 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?

Given the low complexity and presence of an output schema, the description is fairly complete. It covers language count, domain, and a key behavioral trait (markdown-preserving). However, it misses an explicit distinction from translate_report, which would improve completeness.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds semantic value by framing the task as forestry/policy text and confirming markdown preservation, which aligns with the preserve_markdown parameter, but it does not detail parameter usage beyond the schema.

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

Purpose4/5

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

The description clearly identifies the tool as translating forestry/policy text, with a specific verb ('Translate') and resource. It distinguishes from siblings by mentioning markdown preservation and domain focus, but does not explicitly contrast with the similar translate_report tool.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus translate_report or others. The name suggests a 'brief' variant, but the description provides no usage context, exclusions, or alternative recommendations.

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

translate_reportA

Translate an existing report to another language — creates a SIBLING in the same analysis_group. Runs as a background task so this tool returns in <1 s with the sibling as status='draft'.

Poll get_report(sibling_id) until status flips to 'final' (~30–90 s on Sonnet 4.6 depending on length).

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNooverride generation modelclaude-sonnet-4-6
report_idYessource report UUID
target_languageYes'en' | 'tr' | 'ru' | 'uz' (≠ source)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/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 key behavioral traits: the operation creates a sibling, is asynchronous (returns in <1s), and the sibling starts as 'draft' then changes to 'final' after ~30–90s. This goes beyond the simple verb 'translate' and provides useful expectations for the agent. It doesn't mention failure modes or permissions, but the async behavior 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 concise and front-loaded: the first sentence states the purpose, and the second explains the crucial background behavior and gives actionable polling instructions. Every sentence adds value, with no fluff 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?

The tool is moderately complex due to its asynchronous nature, but the description covers the essential workflow (background task, immediate return, polling). Since an output schema exists, the description is not required to detail return values. It could mention permission requirements or error handling, but for a translation tool, the provided context is sufficient.

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

Parameters3/5

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

Schema description coverage is 100%, so each parameter (report_id, target_language, model) already has descriptions. The tool description does not add additional parameter-level details beyond what the schema provides, which is acceptable per the baseline rule. The information about 'another language' aligns with target_language but adds no new semantics.

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 'Translate' and the resource 'an existing report', while also distinguishing the tool from siblings by explaining it creates a sibling report in the same analysis_group and runs as a background task. This is specific and contrasts with tools like translate_brief or get_report.

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 guidance: it explains the tool returns immediately and instructs the agent to poll get_report(sibling_id) until the status flips to 'final'. It also gives a timing estimate. However, it does not explicitly mention when not to use this tool or discuss alternatives like translate_brief, leaving a slight gap.

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

TDQS

A3.7/5.0
Disambiguation4/5

Most tools have distinct purposes (get vs list, overview vs summary, brief vs report translation). Minor overlap exists between analyze_area and get_parcel, both returning parcel and nursery proximity data, but descriptions clarify scope.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern (get_*, list_*, analyze_*, generate_*, translate_*, create_*). No mixed conventions or vague verbs.

Tool Count4/5

16 tools is slightly above the typical 3–15 well-scoped range, but the server covers multiple subdomains (parcels, nurseries, reports, stats, translation, AI analysis), so each tool earns its place.

Completeness4/5

The surface provides solid coverage for the forestry analysis workflow: list/detail for parcels and nurseries, report lifecycle (list, get, generate, translate, share, PDF), and stats. Minor gaps like no update/delete for reports or parcels are not critical for the domain.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Production-ready satellite imagery analysis server that enables natural language queries for Earth observation data, including land cover classification, vegetation monitoring, water detection, change detection, and automated environmental reporting.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Bridges AI models with 24 years of Global Forest Watch data across 165+ countries, enabling natural language queries for deforestation and carbon emission insights.
    Apache 2.0

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ilhankilic/mcp-resilland'

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