Agencies, research bodies and insurers
Agency data access
How agencies, research bodies and insurers request scoped, read-only access, the MCP and REST endpoints, the tools, and the limits and audit log.
Last reviewed
Who it is for
Government agencies, research bodies and insurers can read the shared layers of Coastal Intelligence on demand: from an AI assistant or agent through an MCP server (Model Context Protocol), or from any program through plain REST. Access is read-only, scoped to an approved request, rate limited and logged call by call.
How to request access
- Sign in with your work e-mail. Use an account that is not linked to a farm or co-op profile: those accounts cannot request agency access.
- Open Request data access and fill in the organisation, the purpose (what the data is for and who will see it), the bays, the products, the aggregation and the date range.
- An administrator reviews the request and approves or declines it. You can follow its status on the same page. On approval the administrator receives an API key, shown to them once, and sends it to you over a secure channel. Only a hash of the key is stored.
- The key's scope is exactly the approved request. To change the scope, send a new request. An administrator can revoke a key or the whole request at any time; the next call with it is refused.
Products and aggregation
- Derived products:
signals,events,skill,backtest,risk_index. - Raw time series: one product per shared dataset (for example
phy_daily,wav_hourly,sst_l4,era5_single,buoys,tide_gauges). The request form lists every product with a short description. - Aggregation bay gives bay aggregates only, with per-site series only at ground-truth stations such as a buoy. Aggregation site adds per-site series.
The tools
The same tools answer over MCP and REST. GET /agency/tools lists them with their parameters.
| Tool (MCP) | REST | Product needed | What it returns |
|---|---|---|---|
list_bays | GET /agency/bays | none | The bays in your scope: id, name, country, region, bounding box |
list_sites | GET /agency/sites?bay= | none | Public register fields of the bay's sites and stations: id, name, type, position, licence reference, and whether your key may read its own series |
get_signals | GET /agency/signals?target=&kind=&from=&to= | signals | Daily thermal, bloom, runoff and growth signals: a bay id gives the bay aggregate per kind and day, a site id that site's series (site aggregation only) |
get_events | GET /agency/events?bay=&from=&to= | events | Dated bay events: HAB closures and phytoplankton exceedances from the Marine Institute bulletin, marine heatwaves, and storms (wave or gale episodes at the bay reference cell above published thresholds) |
get_skill | GET /agency/skill?site=&variable= | skill | Model skill against the bay's buoy (bias, RMSE, MAE over 7, 30 and 90 days) for sea temperature (sst) or wave height (hs) |
get_timeseries | GET /agency/timeseries?site=&variable=&product=&from=&to= | the dataset key | One variable of one shared dataset at a site or station, grouped into series by source, product and depth |
get_backtest | GET /agency/backtest?bay= | backtest | The bloom back-test against HAB bulletin events (hits, misses, lead time, false-alarm rate), with the dated events inside your range |
get_risk_index | GET /agency/risk-index?bay=&from=&to= | risk_index | The daily 0 to 100 bay risk index per peril (thermal, bloom, runoff, storm), aggregated over at least three sites |
describe_datasets | GET /agency/datasets | none | The dataset registry: provider ids, variables, scale, frequency, licence and attribution line |
- Dates are UTC days (
YYYY-MM-DD). Over MCP the date arguments arefrom_dateandto_date; over REST thefromandtoquery parameters. - An omitted range means the last 30 days up to today plus the 10-day forecast horizon, inside your approved range. One call covers at most 366 days.
- Every data row carries
source,product,scale(regional, satellite or site),lead_hours(empty for observations and dated events, 0 for analyses, above 0 for forecasts) andlicence. - Every result also carries your
scope, thelicencesused, theattributionlines they require (keep them when you publish: see Licences and attribution) and anotice.
Signals are favourable, marginal or unfavourable style indicators, not food-safety advice. For shellfish harvesting and food safety always follow the official closures (Marine Institute HAB bulletin, SFPA).
What is never shared
- Operator records: data loggers, harvest, mortality and seaweed logs, webhook series, notes, photos, briefs and post-mortems. They are not a product, the queries exclude them, and a last check refuses any result that would contain one.
- Operability signals (they encode a farm's own working limits), and the thermal and runoff back-test rows (they are scored against operator records). Only the bloom back-test is shared.
- Personal data: operator names and contacts, account e-mails.
- Anything outside your approved bays, products, aggregation and date range.
How to connect
MCP endpoint https://coastal-intelligence.triskelionaisystems.com/api/mcp, Model Context Protocol over streamable HTTP. Send the key in the Authorization: Bearer <key> header (X-API-Key: <key> also works).
Claude Code and other clients that read an mcpServers file
Keep the key in an environment variable (AGENCY_KEY), not in the file:
{
"mcpServers": {
"coastal-intelligence": {
"type": "http",
"url": "https://coastal-intelligence.triskelionaisystems.com/api/mcp",
"headers": {
"Authorization": "Bearer ${AGENCY_KEY}"
}
}
}
}Claude Desktop and clients that only start local commands
Bridge to the HTTP endpoint with mcp-remote (needs Node.js):
{
"mcpServers": {
"coastal-intelligence": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://coastal-intelligence.triskelionaisystems.com/api/mcp",
"--header",
"Authorization:Bearer ${AGENCY_KEY}"
],
"env": {
"AGENCY_KEY": "<your key>"
}
}
}
}Plain REST
curl -H "Authorization: Bearer $AGENCY_KEY" \ "https://coastal-intelligence.triskelionaisystems.com/api/agency/events?bay=<bay id>&from=<YYYY-MM-DD>&to=<YYYY-MM-DD>"
Limits, errors and audit
- Rate limit: a fixed number of calls per minute per key, MCP and REST together (60 unless the deployment sets another value). Over it the answer is
429withRetry-After. - Errors:
401for a missing, unknown or revoked key; outside your scope, REST answers403and MCP a tool result withisError: trueand the reason;404for an unknown bay or site;422for bad parameters. - Audit: every call is logged with its time, key prefix, channel (MCP or REST), tool, arguments, outcome, status, row count and a truncated client IP. The key itself is never logged. Requests, approvals, denials, revocations and key issues are logged too.
Related
How the signals work
The five signals, what each reads, the difference between levels and activity words, how confidence is set, and why a model value may come from a cell several km from your site.
Last reviewed 31 Oct 2026EveryoneData sources and licences
Where every value comes from, at which scale, and the attribution each licence requires when you reuse the data.
Last reviewed 31 Oct 2026Insurers, underwriters and brokersInsurer data sharing
What insurers, underwriters and brokers can get (the bay risk index, skill, events, the bloom back-test), what is never shared, the anonymisation rules and how to check a signed export.
Last reviewed 31 Oct 2026