InteliMaris for AI assistants · MCP

Ask in plain words. Get answers from the water.

The InteliMaris MCP server lets an AI assistant plan passages, check whether a vessel fits, find berths, and read hazards, events, float plans and live traffic. It answers from the same data and the same rules as InteliWaterwayz™, and says “unknown” when a figure was never stated.

In developmentThe tool list already runs the assistant inside InteliWaterwayz™. The connection for outside assistants is being built now.

What MCP is

A standard way for an assistant to use real tools.

The Model Context Protocol lets assistants such as Claude or ChatGPT call tools that someone else runs. Ours are the InteliMaris platform: the assistant asks, our services answer, and the person sees a plain answer.

  1. 1

    You ask

    In your assistant, in plain words, about your vessel, your passage or the water around you.

  2. 2

    It picks a tool

    From the InteliMaris tools your account is allowed to see.

  3. 3

    The tool reads the platform

    Over the same public REST operations our apps use. No second copy of the data.

  4. 4

    You get an answer

    With its limits stated: unknown, reported by another skipper, or no feed.

What it’s good for

Seven questions it answers well.

Each example shows the conversation a person sees, then the tool calls behind it. The vessel is Wanderer, a 42 ft Sabre out of Fort Lauderdale. Figures are illustrative; the field names are the platform’s own.

01

Passage Public data

Plan a passage and its conditions

A route for this vessel’s draft and air draft, with the waits for tide and bridges, and the wind, waves, tide and current along the way, in route time rather than at the dock.

What you see
Assistant · connected to InteliMaris

You: Plan Wanderer from Sunrise Bay to Bahia Mar tomorrow morning, and tell me what the water will be doing.

Assistant:

Used plan_passagepassage_conditions

Leave at 08:40 and you are alongside at Bahia Mar around 09:22: 2.6 nm, with one 9-minute wait for the Las Olas bridge.

Along the way, wind 8–11 kn from the east and waves under 0.3 m inside. The passage clears your 0.6 m under-keel margin with 97% confidence.

Sunrise Bay → Bahia Mar

  • Depart 08:40 · arrive 09:222.6 nm · 42 min
  • Wait 9 minLas Olas bridgeBridge
  • 97%clears your 0.6 m marginDepth
  • Wind 8–11 kn E · waves < 0.3 mpeak along the route

How it works

  1. 1The assistant calls plan_passage

    {
      "name": "plan_passage",
      "arguments": {
        "vessel": "Wanderer",
        "from_marina": "sunrise-bay",
        "to_marina": "bahia-mar",
        "departure": "2026-10-06T08:30:00-04:00",
        "margin_m": 0.6
      }
    }

    reads POST /v0/route/plan

    {
      "plan_id": "01929f3c-7c4e-7a1b-9d2e-5b8f0c3a6d14",
      "passage": {
        "departs_at": "2026-10-06T08:40:00-04:00",
        "arrives_at": "2026-10-06T09:22:00-04:00",
        "distance_m": 4815,
        "duration_min": 42,
        "clear_prob_at_margin": 0.97,
        "waiting_dominates": false,
        "waits": [{ "cause": "bridge", "near": "Las Olas bridge", "minutes": 9 }],
        "notes": ["Cruise speed defaulted from hull type"]
      }
    }
  2. 2The assistant calls passage_conditions

    {
      "name": "passage_conditions",
      "arguments": { "plan_id": "01929f3c-7c4e-7a1b-9d2e-5b8f0c3a6d14" }
    }

    reads GET /v0/route/plans/{plan_id}/conditions

    {
      "plan_id": "01929f3c-7c4e-7a1b-9d2e-5b8f0c3a6d14",
      "samples": [
        {
          "at": "2026-10-06T08:52:00-04:00",
          "chainage_m": 1600,
          "wind_kn": 11,
          "wave_m": 0.3,
          "tide_m": 0.42,
          "current_kn": 0.8
        },
        …
      ]
    }

Defaulted inputs and stretches it could not evaluate are listed in the notes, never hidden.

02

Marinas Public data

Find marinas, and “will she fit?”

Marinas near a place or a position, then a verdict for the marina and for every berth it has drawn, against the vessel’s length, beam and draft.

What you see
Assistant · connected to InteliMaris

You: Which marinas near Port Everglades can take Wanderer? She’s 42 ft with a 14 ft beam and draws 4.6 ft.

Assistant:

Used find_marinasmarina_fit

Bahia Mar fits: its stated limits take her, and 14 of its drawn berths fit. Three are too narrow, and six are unknown because no width was stated for them.

Las Olas Marina is unknown: no approach depth is stated, so I can’t say she clears it.

Wanderer · 42 ft · 14 ft beam · 4.6 ft draft

  • Bahia Mar14 berths fit · 3 too narrow · 6 unknownFits
  • Las Olas Marinaapproach depth not statedUnknown

How it works

  1. 1The assistant calls find_marinas

    {
      "name": "find_marinas",
      "arguments": { "near": "Port Everglades", "radius_nm": 2 }
    }

    reads GET /v0/marina/nearby

    [
      {
        "slug": "bahia-mar",
        "name": "Bahia Mar",
        "distance_m": 1480,
        "approach_depth_m": 4.2
      },
      …
    ]
  2. 2The assistant calls marina_fit

    {
      "name": "marina_fit",
      "arguments": {
        "marina": "bahia-mar",
        "loa_m": 12.8,
        "beam_m": 4.3,
        "draft_m": 1.4
      }
    }

    reads GET /v0/marina/marinas/{slug}/fit

    {
      "marina_slug": "bahia-mar",
      "marina": {
        "verdict": "fits",
        "summary": "Length, beam and approach depth are within the stated limits"
      },
      "tally": { "fits": 14, "will_not_fit": 3, "unknown": 6 },
      "disclaimer": "Fit is about dimensions only, not whether a berth is free"
    }

Three answers, not two: where a limit was never stated, the answer is “unknown”, never a guess.

03

Stays Public data

Berth search and availability

Private-dock berths and marinas in one list, by distance, checked against your dates and priced for this vessel’s length.

What you see
Assistant · connected to InteliMaris

You: Find Wanderer a berth near Bahia Mar for three nights from 12 October.

Assistant:

Used find_berths

Two private docks have all three nights open: one on the New River at $120 a night that you can book straight away, and one in Rio Vista at $95 a night on request.

Bahia Mar itself starts at $182 a night for 42 ft. It takes requests, and the dockmaster allocates the berth.

12–15 Oct · 3 nights · 42 ft

  • New River private dock$120/night · open all 3 nightsInstant book
  • Rio Vista private dock$95/night · open all 3 nightsRequest
  • Bahia Marfrom $182/night for 42 ftRequest

How it works

  1. 1The assistant calls find_berths

    {
      "name": "find_berths",
      "arguments": {
        "near": "bahia-mar",
        "check_in": "2026-10-12",
        "check_out": "2026-10-15",
        "loa_m": 12.8
      }
    }

    reads GET /v0/dockpass/search

    [
      {
        "kind": "listing",
        "name": "New River private dock",
        "cta": "instant_book",
        "available_for_stay": true,
        "from_cents_per_night": 12000,
        "distance_m": 1900
      },
      {
        "kind": "marina",
        "name": "Bahia Mar",
        "marina_slug": "bahia-mar",
        "cta": "request",
        "available_for_stay": null,
        "from_cents_per_night": 18200,
        "distance_m": 0
      },
      …
    ]

A marina has no calendar to pre-check, so it says “request”: the dockmaster allocates.

04

Hazards Public data

Hazards near a point or along a route

Active reports from other skippers around a position, or along every leg of a planned passage, with how often they have been confirmed and when they expire.

What you see
Assistant · connected to InteliMaris

You: Anything reported on the water between Sunrise Bay and Bahia Mar this morning?

Assistant:

Used hazards_near

Two reports along your route. A submerged log near the green marker south of the Las Olas bridge, confirmed twice, most recently 40 minutes ago. And shoaling reported in the Sunrise Bay channel an hour ago, not yet confirmed.

Both come from other skippers, not from the chart.

Along Sunrise Bay → Bahia Mar

  • DebrisSubmerged log near green marker · 410 m off your trackConfirmed ×2
  • ShoalingSunrise Bay channel · on your trackReported

How it works

  1. 1The assistant calls hazards_near

    {
      "name": "hazards_near",
      "arguments": { "plan_id": "01929f3c-7c4e-7a1b-9d2e-5b8f0c3a6d14" }
    }

    reads GET /v0/places/hazards (around each leg)

    [
      {
        "category": "debris",
        "status": "confirmed",
        "confirmations": 2,
        "provenance": "user_reported",
        "note": "Submerged log near green marker",
        "last_confirmed_at": "2026-10-06T07:50:00-04:00",
        "expires_at": "2026-10-06T19:10:00-04:00"
      },
      {
        "category": "shallow",
        "status": "reported",
        "confirmations": 0,
        "provenance": "user_reported",
        "note": null
      }
    ]

Reports are labelled as reports from other skippers, never mixed with charted features. Expired or cleared reports never appear.

05

Events Public data

Events on the water

Closures, restrictions, regattas, fireworks and races near a position or a marina, from Local Notices to Mariners and from the marinas themselves.

What you see
Assistant · connected to InteliMaris

You: Is anything on this weekend that could affect a passage near Fort Lauderdale?

Assistant:

Used events_near

Two things. A fireworks safety zone off the beach on Saturday, 21:00 to 21:45, from the Local Notice to Mariners. It restricts navigation.

And Bahia Mar’s sunset regatta on Sunday at 17:00, posted by the marina. It doesn’t close the channel.

This weekend near Fort Lauderdale

  • Fireworks safety zoneSat 21:00–21:45 · Local Notice to MarinersAffects navigation
  • Sunset regattaSun 17:00 · posted by Bahia MarNo closure

How it works

  1. 1The assistant calls events_near

    {
      "name": "events_near",
      "arguments": { "near": "Fort Lauderdale", "horizon_days": 7 }
    }

    reads GET /v0/events/nearby

    [
      {
        "name": "Fireworks safety zone",
        "kind": "fireworks",
        "status": "upcoming",
        "starts_at": "2026-10-10T21:00:00-04:00",
        "ends_at": "2026-10-10T21:45:00-04:00",
        "affects_navigation": true,
        "source": "lnm"
      },
      {
        "name": "Sunset regatta",
        "kind": "regatta",
        "status": "upcoming",
        "starts_at": "2026-10-11T17:00:00-04:00",
        "affects_navigation": false,
        "source": "operator",
        "marina_slug": "bahia-mar"
      }
    ]

Every event says where it came from, and whether it constrains navigation.

06

Float plans Signed in · your vessels

Float plan status

Whether your shore contact has the plan, who is aboard, and when the next check-in is due, for vessels your account belongs to.

What you see
Assistant · connected to InteliMaris

You: Did my float plan to Bimini reach Mark, and when is my next check-in?

Assistant:

Used float_plan_status

Yes. It was accepted for delivery to Mark at 07:58. The plan is active with four aboard, and your next check-in is due at 12:00.

If you haven’t checked in by then, Mark is told the plan is overdue.

Wanderer → Bimini

  • Active4 aboard · departed 08:00Active
  • Markaccepted for delivery at 07:58Sent
  • Next check-in 12:00every 4 hours until arrivalDue

How it works

  1. 1The assistant calls float_plan_status

    { "name": "float_plan_status", "arguments": { "vessel": "Wanderer" } }

    reads GET /v0/vessel/w/{workspace_id}/float-plans

    {
      "destination_name": "Bimini",
      "status": "active",
      "people_aboard": 4,
      "contact_name": "Mark",
      "delivery_status": "sent",
      "sent_at": "2026-10-06T07:58:00-04:00",
      "check_in_minutes": 240,
      "next_check_in_at": "2026-10-06T12:00:00-04:00",
      "overdue_notified_at": null
    }

“Sent” means the mail provider accepted it, never that it was read.

07

Traffic Public data

Live vessel traffic

The live AIS picture asked as a question: which vessels, of what class, at what speed and bound where, in an area you name.

What you see
Assistant · connected to InteliMaris

You: What large vessels are moving in Port Everglades right now?

Assistant:

Used vessel_traffic

Three are underway: a tanker inbound at 6 kn, a passenger vessel leaving at 4 kn bound for Nassau, and a cargo vessel outbound at 9 kn.

The AIS feed is live, last heard 3 seconds ago.

Port Everglades · underway

  • Tankerinbound · 6.1 kn
  • Passengeroutbound · 4.0 kn · Nassau
  • Cargooutbound · 8.9 kn
  • AIS feedlast message 3 s agoLive

How it works

  1. 1The assistant calls vessel_traffic

    {
      "name": "vessel_traffic",
      "arguments": { "area": "Port Everglades", "underway": true, "min_sog_kn": 0.5 }
    }

    reads GET /v0/vessel/live/query

    {
      "matched": 3,
      "status": {
        "state": "live",
        "vessel_count": 214,
        "last_message_at": "2026-10-06T10:14:57Z"
      },
      "vessels": {
        "type": "FeatureCollection",
        "features": [
          {
            "type": "Feature",
            "properties": {
              "class": "tanker",
              "sog_kn": 6.1,
              "destination": "PORT EVERGLADES"
            },
            "geometry": { "type": "Point", "coordinates": [-80.112, 26.088] }
          },
          …
        ]
      }
    }

The feed’s own status comes with every answer: a dead feed is “no feed”, never “no ships”.

Connecting an assistant

One server. Your account. The tools you’re allowed.

Tools are task-shaped, like “plan a passage for this vessel”, not one per endpoint. They call our services over the public REST API and share its schemas, so the two can’t disagree about what a vessel is.

Connect

One MCP server over streamable HTTP, at /v0/mcp on the InteliMaris API. Your assistant signs in with your InteliMaris account (OAuth).

Discover

tools/list returns the tools your account may use: public tools for everyone, tools about your own vessels once signed in, operator tools only for operators.

{
  "tools": [
    {
      "name": "marina_fit",
      "description": "Does this marina, and each berth it has drawn, take this vessel? …",
      "inputSchema": {
        "type": "object",
        "properties": {
          "marina": { "type": "string" },
          "loa_m": { "type": "number" },
          "beam_m": { "type": "number" },
          "draft_m": { "type": "number" }
        }
      }
    },
    …
  ]
}

Call

tools/call runs one tool and returns its answer, with the same field names as the REST API.

{
  "jsonrpc": "2.0",
  "id": 7,
  "method": "tools/call",
  "params": {
    "name": "marina_fit",
    "arguments": {
      "marina": "bahia-mar",
      "loa_m": 12.8,
      "beam_m": 4.3,
      "draft_m": 1.4
    }
  }
}

Already in the tool list

Running inside InteliWaterwayz™ today.

These tools answer the assistant in the app now. Outside assistants get the same list, with the same rules.

  • find_businesses

    Businesses near you

    Fuel docks, restaurants, chandleries, yards, provisioning, towing, pump-outs and ramps near the vessel, nearest first.

  • get_business

    One business in detail

    Phone, website, opening hours as posted, and owner-supplied facts such as fuel prices with their age.

  • vessel_readiness

    Vessel readiness

    What the platform knows about a vessel’s setup and what is missing: twelve checks and a score out of those that apply.

Your next step

Want an assistant that knows the water?

Tell us what you need to do. We’ll start with the workflow that matters to you.

Talk to the team