Skip to main content
Glama

map_viewport

Map lane: everything inside a bounding box — THE SCREEN (relays GET /api/v1/map.viewport). Typed params: min_lat/min_lng/max_lat/max_lng (the bbox — all four together), entity_type (deposit | infrastructure | company | project — default all four), energy (default False; omits energy fleet infra/projects), include_country_centroids (default False). Returns capped, id-ordered pins plus counts_by_type — the counts are the TRUE totals for the whole bbox, the pins are a sample, so read counts for totals and pins for detail. AGENT KEYS ONLY (a non-agent credential is refused BEFORE any charge); a per-owner viewport rate window applies; pins do NOT count against your entity cap. Metered — debited from the CALLING agent's own wallet (read it with the joules_balance tool); ONE basic price per call; quote it with the billing_quote tool and the true debit is base + 0.5% rail surcharge = joules_all_in. The response carries top-level charged_joules (the all-in price — the same figure as price.charged_joules; the price block stays as the breakdown). Carries source_tier/tier_label per pin; energy off, pipelines never, centroids off unless asked (same honesty as look_from). ⚠ CHARGING: the meter RESERVES before the query runs and SETTLES after delivery for what was actually delivered (an empty result settles to 0; a partial traversal settles for the hops delivered; a 4xx releases the reservation). An abandoned or timed-out call still settles once the backend delivers. A replay is served free only for the SAME credential + SAME idempotency key + SAME request within 15 minutes — a different payer is a different payer. Every call through this relay carries a fresh key, so a retry here is always a new charge. Price with billing_quote first; verify any charge with the billing_attempts tool (own wallet: reserved vs settled, per attempt). WHAT YOU PAID: the JSON response carries a top-level charged_joules — the all-in PRICE of this call — and a metering block written AFTER the settle has run: {attempt_id, settlement, settled_joules, check}. metering.settlement is whether you PAID: settled · settled_zero (empty result, nothing moved) · settle_failed (delivered but UNPAID — the wallet is then locked until it clears; the next metered call 402s naming the attempt, the amount and what clears it) · released (4xx/5xx, nothing moved) · unknown. settled_joules is what actually left the wallet (0 unless settled). A cached replay carries no block.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
energyNo
max_latNo
max_lngNo
min_latNo
min_lngNo
entity_typeNo
include_country_centroidsNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "title": "map_viewportDictOutput",
      +  "type": "object"
      +}
  2. First observed

TDQS

A4/5.0
Behavior5/5

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

Even though no annotations are provided, the description carries the full burden and does so comprehensively. It discloses that pins are a sample while counts are true totals, explains charging mechanics (reservation, settlement, idempotency), rate limits, auth requirements (agent keys only), and even details the metering block states (settled, settled_zero, settle_failed, released). It also notes that pins do not count against entity caps and that energy, pipelines, and centroids are excluded unless specified. This is exemplary behavioral transparency.

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

Conciseness3/5

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

The description is verbose, with several long paragraphs dedicated to billing and metering edge cases. While it is structured and front-loaded with the core purpose and parameters, much of the metering detail could be condensed without losing critical information. It earns its place in terms of necessity but is not concise; it could be trimmed for clarity.

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

Completeness5/5

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

Given the tool's complexity—billing, sampling, multiple response fields, auth, and rate limits—the description is exceptionally complete. It covers authentication, rate windows, response structure (pins, counts, charged_joules, metering block), and even error states like settle_failed. The output schema exists but the description still adds valuable context that an agent needs to call the tool correctly and interpret results.

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

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by explaining each parameter's meaning, defaults, and constraints. It clarifies that the four bbox parameters must be provided together, describes the default for entity_type (all four types), energy (False), and include_country_centroids (False). This adds essential meaning beyond the bare schema, which only lists names and types.

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

Purpose4/5

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

The description clearly states the tool's purpose: mapping everything inside a bounding box, relaying a specific API endpoint. It specifies the verb (map), resource (viewport), and scope (bounding box). However, it does not explicitly differentiate this tool from sibling tools like look_at or mapdata, which also provide map-related data, so it lacks 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 does not mention when not to use it or what other tools might be more appropriate. There is no explicit exclusions or context for choosing this over look_at, nearby, or mapdata. This is a significant gap for an agent deciding between tools.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources