_ registry / mcp streamable-http · checked 1h ago

aistrail-ais

https://api.aistrail.com

Registry code: 08fbca262076db02

api record

AIS Trail: ship positions from AIS. Live tools (no key) cover ships heard in the last hour worldwide via community and government feeds, plus last known positions up to 7 days for ships out of receiver range. vessel_track returns history (since October 2026 for worldwide coastal coverage from community receivers and for Finnish and Norwegian waters, up to 12 months for Danish waters, calendar year 2025 for U.S. waters) and needs an AIS Trail API key sent as the HTTP header 'Authorization: Bearer ap_live_…', so it works only in MCP clients that let you add a header. vessel_port_calls and…

endpoint
https://api.aistrail.com/mcp
protocol
streamable-http ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is aistrail-ais live?
Yes — it answered the hub's last check (checked 1h ago). It answered 100% of checks over the last 30 days.
Is aistrail-ais free to use?
Yes — the hub reached it with no key and no payment.
What tools does aistrail-ais have?
9 tools: search_vessels, get_vessel, vessels_in_area, vessel_track, vessel_port_calls, port_calls, find_port, vessels_near, ….
Is aistrail-ais safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
100%

90 days 100%· all time 100%

latency
135ms

last good check

priced tools
0

of 9 tools

_ answered our checks, 90 days 1 checks · signed record
  • unknown → live
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

_ what it can do 9 tools
1 open 8 never probed 1 of 9 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • data_status open 1h ago

    How many ships are live now (live_ships_private: how many of them are private vessels, counted only), how many are known from the last 7 days, the date range of the history archive per source with available_until (the latest time vessel_track can return for that source on plans without live data), and the service status: ok or degraded, with reason codes in reasons.

    mcp-tool

    {
      "type": "object",
      "required": [],
      "properties": {},
      "additionalProperties": false
    }
    arguments 6 lines
  • search_vessels unknown never probed

    Find ships by name (or part of it), MMSI (9 digits) or IMO number (7 digits). Returns live ships first, then ships out of range with their last known position (up to 7 days). List results are compact rows (mmsi, name, category, flag (ISO code from the MMSI), lat, lon, speed_kn, course_deg, length_m, destination, age_s, status, source); call get_vessel for full details of one ship. Private vessels (pleasure craft, sailing vessels and Class B transponders without a valid IMO number) are never listed or looked up individually; area and nearby results report how many were left out (private_vessels).

    mcp-tool

    {
      "type": "object",
      "required": [
        "query"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "default": 10,
          "maximum": 20,
          "minimum": 1
        },
        "query": {
          "type": "string",
          "maxLength": 100,
          "minLength": 3,
          "description": "Ship name, MMSI (9 digits) or IMO (7 digits)"
        }
      },
      "additionalProperties": false
    }
    arguments 21 lines
  • get_vessel unknown never probed

    Everything known about one ship now: identity (name, IMO, call sign, flag, type, size), last position, speed, course, heading, navigational status, destination (port codes decoded) and ETA as given by the crew, how long ago it was heard, its track over the last 40 minutes, and the data sources to credit. flag (ISO code) and flag_country come from the MMSI: the flag of the radio licence, usually but not always the registry flag. dwt_estimate is an estimate from the AIS dimensions (tonnes, size class such as Panamax or VLCC, hull, draught used), not a registry value; null for tugs, pleasure craft and other types where deadweight does not apply.

    mcp-tool

    {
      "type": "object",
      "required": [
        "mmsi"
      ],
      "properties": {
        "mmsi": {
          "type": "integer",
          "maximum": 999999999,
          "minimum": 1,
          "description": "9-digit MMSI"
        }
      },
      "additionalProperties": false
    }
    arguments 15 lines
  • vessels_in_area unknown never probed

    Ships heard in the last hour inside a box (at most 5° on each side), largest first. List results are compact rows (mmsi, name, category, flag (ISO code from the MMSI), lat, lon, speed_kn, course_deg, length_m, destination, age_s, status, source); call get_vessel for full details of one ship. Private vessels (pleasure craft, sailing vessels and Class B transponders without a valid IMO number) are never listed or looked up individually; area and nearby results report how many were left out (private_vessels).

    mcp-tool

    {
      "type": "object",
      "required": [
        "min_lat",
        "min_lon",
        "max_lat",
        "max_lon"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "default": 30,
          "maximum": 100,
          "minimum": 1
        },
        "max_lat": {
          "type": "number",
          "maximum": 90,
          "minimum": -90
        },
        "max_lon": {
          "type": "number",
          "maximum": 180,
          "minimum": -180
        },
        "min_lat": {
          "type": "number",
          "maximum": 90,
          "minimum": -90
        },
        "min_lon": {
          "type": "number",
          "maximum": 180,
          "minimum": -180
        },
        "ship_type": {
          "enum": [
            "cargo",
            "tanker",
            "passenger",
            "hsc",
            "fishing",
            "service",
            "pleasure",
            "other"
          ],
          "type": "string",
          "description": "Optional type filter"
        }
      },
      "additionalProperties": false
    }
    arguments 52 lines
  • vessel_track unknown never probed

    Where a ship has been between two times (UTC, ISO 8601), from the AIS Trail archive. Needs an AIS Trail API key sent by the MCP client as the HTTP header 'Authorization: Bearer ap_live_…' (keys at https://aistrail.com); clients that cannot add headers (OAuth-only web connectors) cannot use it yet. Resolution: raw (up to 24 h per call), 1m (up to 7 days) or 1h (up to 366 days); at most 200 points per call, as rows of [time, lat, lon, speed_kn, course_deg]. The plan's history depth, credits (as on the track endpoint: 1 per vessel-day) and rate limit apply, and the 24-hour delay on recent data on plans without live data. sources_through gives, per source, the time up to which the archive holds its data; pending_days lists days in the range a source has not delivered yet, so no points on those days does not mean the ship was absent.

    mcp-tool

    {
      "type": "object",
      "required": [
        "mmsi",
        "from",
        "to"
      ],
      "properties": {
        "to": {
          "type": "string",
          "maxLength": 40,
          "description": "End, e.g. 2026-10-02T00:00:00Z"
        },
        "from": {
          "type": "string",
          "maxLength": 40,
          "description": "Start, e.g. 2026-10-01T00:00:00Z"
        },
        "mmsi": {
          "type": "integer",
          "maximum": 999999999,
          "minimum": 1
        },
        "resolution": {
          "enum": [
            "raw",
            "1m",
            "1h"
          ],
          "type": "string",
          "default": "1m"
        }
      },
      "additionalProperties": false
    }
    arguments 35 lines
  • vessel_port_calls unknown never probed

    Port calls of a ship between two times (UTC, ISO 8601), from the AIS Trail archive: port, arrival, departure, draught on arrival and departure, cargo estimate (loaded, ballast or unchanged, from the draught change), previous and next port. Give mmsi or imo. A port call starts when the ship stops for at least 15 minutes inside a port area and ends when it leaves; departure is null while it is still in port. Needs an AIS Trail API key sent by the MCP client as the HTTP header 'Authorization: Bearer ap_live_…'. At most 100 port calls per call and at most 366 days; the plan's history depth, credits (1 per port call returned), rate limit and 24-hour delay (on plans without live data) apply.

    mcp-tool

    {
      "type": "object",
      "required": [
        "from",
        "to"
      ],
      "properties": {
        "to": {
          "type": "string",
          "maxLength": 40,
          "description": "End, e.g. 2026-10-01T00:00:00Z"
        },
        "imo": {
          "type": "integer",
          "maximum": 9999999,
          "minimum": 1000000
        },
        "from": {
          "type": "string",
          "maxLength": 40,
          "description": "Start, e.g. 2026-09-01T00:00:00Z"
        },
        "mmsi": {
          "type": "integer",
          "maximum": 999999999,
          "minimum": 1
        }
      },
      "additionalProperties": false
    }
    arguments 30 lines
  • port_calls unknown never probed

    Ships that called at one port between two times (UTC, ISO 8601), from the AIS Trail archive: ship (with its flag from the MMSI), arrival, departure, draught on arrival and departure, cargo estimate, previous and next port. Get the port_id from find_port. event: any (in port at any time in the range, default), arrival or departure. Needs an AIS Trail API key sent by the MCP client as the HTTP header 'Authorization: Bearer ap_live_…'. At most 100 port calls per call and at most 366 days; the plan's rules and credits (1 per port call returned) apply as for vessel_port_calls.

    mcp-tool

    {
      "type": "object",
      "required": [
        "port_id",
        "from",
        "to"
      ],
      "properties": {
        "to": {
          "type": "string",
          "maxLength": 40,
          "description": "End, e.g. 2026-09-02T00:00:00Z"
        },
        "from": {
          "type": "string",
          "maxLength": 40,
          "description": "Start, e.g. 2026-09-01T00:00:00Z"
        },
        "event": {
          "enum": [
            "any",
            "arrival",
            "departure"
          ],
          "type": "string",
          "default": "any"
        },
        "port_id": {
          "type": "integer",
          "maximum": 99999999,
          "minimum": 1
        }
      },
      "additionalProperties": false
    }
    arguments 35 lines
  • find_port unknown 1h ago

    Find ports by name (or part of it), UN/LOCODE (e.g. NLRTM) or two-letter country code (e.g. NL) in the port reference (World Port Index and UN/LOCODE ports): id (for port_calls), name, country, UN/LOCODE, position, harbor size (World Port Index ports only) and the radius of the port area used to detect port calls. At most 20 ports, larger harbors first. No API key needed.

    mcp-tool

    {
      "type": "object",
      "required": [],
      "properties": {
        "limit": {
          "type": "integer",
          "default": 10,
          "maximum": 20,
          "minimum": 1
        },
        "query": {
          "type": "string",
          "maxLength": 64,
          "minLength": 2,
          "description": "Port name"
        },
        "locode": {
          "type": "string",
          "maxLength": 6,
          "minLength": 5,
          "description": "UN/LOCODE"
        },
        "country": {
          "type": "string",
          "maxLength": 2,
          "minLength": 2,
          "description": "ISO 3166-1 alpha-2 country code"
        }
      },
      "additionalProperties": false
    }
    arguments 31 lines
  • vessels_near unknown 1h ago

    Ships heard in the last hour within a radius (at most 50 nautical miles) of a point or of another ship, nearest first. List results are compact rows (mmsi, name, category, flag (ISO code from the MMSI), lat, lon, speed_kn, course_deg, length_m, destination, age_s, status, source); call get_vessel for full details of one ship. Private vessels (pleasure craft, sailing vessels and Class B transponders without a valid IMO number) are never listed or looked up individually; area and nearby results report how many were left out (private_vessels).

    mcp-tool

    {
      "type": "object",
      "required": [],
      "properties": {
        "lat": {
          "type": "number",
          "maximum": 90,
          "minimum": -90
        },
        "lon": {
          "type": "number",
          "maximum": 180,
          "minimum": -180
        },
        "mmsi": {
          "type": "integer",
          "description": "Use this ship's position as the centre instead of lat/lon"
        },
        "limit": {
          "type": "integer",
          "default": 20,
          "maximum": 50,
          "minimum": 1
        },
        "radius_nm": {
          "type": "number",
          "default": 5,
          "maximum": 50,
          "minimum": 0.1
        }
      },
      "additionalProperties": false
    }
    arguments 33 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id 08fbca262076db02.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/08fbca262076db02/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/08fbca262076db02/badge.svg)](https://brick.blue/agent/08fbca262076db02?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.