Skip to main content
Glama

Gfwfish 4wings Report

gfwfish_4wings_report
Read-onlyIdempotent

Aggregate apparent fishing effort (hours) from Global Fishing Watch over a bounding box and date range, grouped by flag state, gear type or vessel. This is the AIS-derived fishing-pressure layer behind the GFW map — use it for "how much fishing happened in this area, by whose fleet". VESSEL-LEVEL GROUPING (group_by VESSEL_ID or MMSI) is under a GFW-side pause since 2026-11-03 (upstream data issue): GFW no longer returns per-grid-cell vessel rows, so this tool now requests those two group-by values spatially aggregated (one row per vessel summed across the whole area/period, no lat/lon breakdown) to keep them working; FLAG, GEARTYPE and FLAGANDGEARTYPE are unaffected and still return per-grid-cell rows. Requires your own free GFW API token, passed as _apiKey.

Input Schema

NameRequiredDescriptionDefault
bboxNoBounding box as "minLon,minLat,maxLon,maxLat" in WGS84, e.g. "-80,-10,-70,0". Required unless you pass region_id instead.
_apiKeyNoYour own Global Fishing Watch API token (BYO). Get one free for non-commercial use at globalfishingwatch.org/our-apis/tokens: sign in, request an API access token, and pass it here.
filtersNoComma-separated upstream filter expressions, e.g. "geartype in ('trawlers')".
datasetsNoComma-separated GFW effort datasets. Default "public-global-fishing-effort:latest".
end_dateYesEnd date, YYYY-MM-DD.
group_byNoOne of "FLAG", "GEARTYPE", "VESSEL_ID", "FLAGANDGEARTYPE", "MMSI". Default "FLAG".
region_idNoA named GFW region id instead of a bbox — e.g. an EEZ id such as "8371". Takes precedence over bbox.
start_dateYesStart date, YYYY-MM-DD.
region_datasetNoWhich region dataset region_id belongs to. Default "public-eez-areas"; also "public-mpa-all" and "public-rfmo".
spatial_resolutionNoOne of "LOW" (0.1 degree) or "HIGH" (0.01 degree). Default "LOW".
temporal_resolutionNoOne of "HOURLY", "DAILY", "MONTHLY", "YEARLY", "ENTIRE". Default "ENTIRE".

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already carry readOnly, idempotent, non-destructive and open-world hints, and the description adds genuinely non-obvious behavior: a GFW-side pause on vessel-level grouping with the exact downstream effect (one row per vessel, summed across area/period, no lat/lon) and which group-by values remain unaffected. It also discloses the BYO API token requirement. Not a 5 only because rate limits, response shape and cost/pagination behavior go unmentioned.

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?

Purpose and the primary use case are front-loaded, and the dense parenthetical about the vessel-grouping pause carries load-bearing information. Slightly long and the pause notice interrupts the flow, but no sentence is 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 an 11-parameter, no-output-schema, open-world read tool, the description covers auth, grouping semantics and the upstream limitation that changes results. What is missing is return-value shape (columns, units beyond 'hours') and whether large areas/dates are truncated.

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 coverage is 100%, so all 11 parameters are already documented upstream and the baseline is 3. The description does add real meaning about what group_by values yield (per-grid-cell rows vs spatially aggregated rows), but says nothing about bbox-vs-region_id precedence, filters syntax, or resolution choices beyond what the schema states.

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?

States a specific verb and resource ('Aggregate apparent fishing effort (hours) from Global Fishing Watch') with the aggregation unit and the grouping dimension spelled out. The added framing ('AIS-derived fishing-pressure layer behind the GFW map') tells an agent how this differs from gfwfish_events or gfwfish_vessels_search without opening their schemas.

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 line 'use it for "how much fishing happened in this area, by whose fleet"' gives a concrete selection scenario, and the VESSEL_ID/MMSI caveat effectively warns when not to expect per-cell vessel output. It never names a sibling tool explicitly, so routing against gfwfish_events/gfwfish_vessels_search is still inferred rather than stated.

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.