YachtFinder
Server Details
Search about 20,000 yachts for sale, charter and sold, with where AIS last placed each one.
- Status
- Healthy
- Uptime
- 100.0% over 36 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- YachtFinder
TDQS
Scored across 4 tools
Most tools are clearly distinct: search, yacht facts, proximity listing, and inquiry drafting. The main overlap is that find_yachts has a `near` filter while yachts_near is a dedicated proximity tool, which could cause some misselection despite the descriptions clarifying the difference.
The set mixes verb_noun names (find_yachts, prepare_inquiry) with noun-phrase names (yacht_facts, yachts_near). It also inconsistently uses singular `yacht` and plural `yachts`, though all names remain readable.
Four tools is a focused, well-scoped set for a yacht catalog: search, proximity, facts, and inquiry preparation. It is slightly thin but each tool has a clear role.
The surface covers the core workflows: finding yachts, checking proximity by AIS, retrieving detailed facts, and preparing an inquiry draft. Minor gaps exist around managing drafts or exploring brokerages/harbors more directly, but agents can work around them.
Available Tools
4 toolsfind_yachtsFind yachtsARead-onlyIdempotentInspect
Search YachtFinder's catalog of more than 20,000 yachts by builder, length, asking price, build year, status (for sale, for charter, reported sold, not for sale) and place. Returns up to 25 yachts, longest first by default, each with her status, the broker's asking price, YachtFinder's estimate where her page shows one, and a link to her page on yachtfinder.co. near keeps yachts whose AIS position, as the site publishes it, lies within radius_km of a named harbor or anchorage; listed_in matches the town or country the broker's listing states. A yacht listed by more than one brokerage is one result, as on yachtfinder.co, with the others in also_listed_by.
| Name | Required | Description | Default |
|---|---|---|---|
| near | No | A harbor, harbor town or anchorage by name, e.g. "Port Hercule", "Antibes", "Fort Lauderdale", "Off Monaco". A boat show by its name, "FLIBS" or "the show", is the yachts its page lists at its marinas now. | |
| sort | No | longest | |
| limit | No | ||
| status | No | Default for_sale. for_charter includes yachts offered for both. | for_sale |
| builder | No | Shipyard, e.g. "Benetti", "Feadship", "Lürssen". Case and accents are ignored. | |
| max_year | No | Latest build year. | |
| min_year | No | Earliest build year. | |
| listed_in | No | Town or country named in the broker's listing, e.g. "Fort Lauderdale", "Italy". This is where the listing says she is, not an AIS position. | |
| radius_km | No | With near: the radius. Default 2 km for a harbor, 3 km for an anchorage. | |
| max_length_m | No | Maximum length overall, meters. | |
| min_length_m | No | Minimum length overall, meters. | |
| max_price_usd | No | Maximum asking price in whole US dollars. | |
| min_price_usd | No | Minimum asking price in whole US dollars (20000000 = $20M). Only yachts with a published asking price are compared. | |
| name_contains | No | Part of the yacht's name. | |
| seen_within_hours | No | With near: only AIS positions this recent. Default: any position the site publishes (up to 120 days). |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | Yes | |
| source | Yes | |
| results | Yes | |
| summary | Yes | |
| data_as_of | Yes | When YachtFinder last rebuilt the catalog this answer was read from (ISO 8601). |
| total_matches | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld=false, so the safety profile is covered. The description adds genuinely non-schema behavior: default ordering (longest first), the 25-result cap, and de-duplication of multi-brokerage listings with the rest surfaced in also_listed_by.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose in the first sentence, then layers geo semantics and dedup behavior. Dense but nearly every clause carries information; the return-value sentence is somewhat redundant given the output schema exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 15 optional params, an output schema, and rich annotations, the description covers the ambiguities that matter: default sort, result cap, AIS vs listing location, and multi-brokerage dedup. Nothing about pagination or empty-result behavior, but no offset param exists to explain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 87%, so the schema documents nearly all parameters, establishing a baseline of 3. The description restates the near/radius and listed_in semantics already present in the schema and adds no syntax, units, or edge-case detail beyond that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search YachtFinder's catalog of more than 20,000 yachts') and enumerates the filterable dimensions. It does not name or differentiate itself from siblings like yachts_near or yacht_facts, so an agent must infer the split from the schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description draws a useful line between `near` (AIS-based radius search) and `listed_in` (broker's stated location), which implicitly guides filter choice. But it never says when to prefer this tool over `yachts_near` or `yacht_facts`, leaving sibling routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_inquiryPrepare an inquiry (never sends)AInspect
Prepare a request about one yacht for the person to review and send themselves on yachtfinder.co. This tool never sends anything: it saves a draft (the yacht, optional dates and up to 5 short questions) and returns one link. Give the person the link and tell them plainly that nothing has been sent: on that page they read and edit the draft, sign in, add their own details, and only their tap on Send sends it, under the usual inquiry limits. Take yacht from the id of a find_yachts, yachts_near or yacht_facts answer; a name is not searched. Questions are shown as plain text: links, markup and line breaks are removed. Do not put names, email addresses or phone numbers in them. The draft expires after 24 hours.
| Name | Required | Description | Default |
|---|---|---|---|
| yacht | Yes | The yacht's id from another answer (its `id` field). Not a name and not a link. | |
| date_to | No | Last day of interest, YYYY-MM-DD, with date_from. | |
| date_from | No | First day of interest, YYYY-MM-DD: today or later, at most 12 months ahead. | |
| questions | No | Up to 5 questions for the listing broker, each at most 300 characters, in the person's words. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | The page where the person reviews, edits and sends the draft. |
| sent | Yes | Always false: this tool never sends. |
| notes | Yes | |
| yacht | No | |
| source | Yes | |
| summary | Yes | |
| data_as_of | Yes | When YachtFinder last rebuilt the catalog this answer was read from (ISO 8601). |
| expires_at | Yes | |
| questions_kept | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses that nothing is sent, that only the person's tap on Send sends it, that the draft expires after 24 hours, that questions are sanitized (links, markup and line breaks stripped), and that usual inquiry limits apply. The annotations only say this is a non-idempotent, non-destructive write with a closed world; the description supplies the real operational context. A slightly fuller account of the returned link or edit flow would push this to a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the single most important fact ('never sends'), and every sentence carries usable information. It runs a little long across six sentences, but there is essentially no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation tool with an output schema present, the description covers everything the agent needs: input provenance, the human-in-the-loop send flow, the sanitization of question text, sign-in requirements, expiry and limits. Nothing material is left to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning: it warns that `yacht` must be an id, not a name or link, and that questions must be the person's own words with no names, emails or phone numbers, and are rendered as plain text after stripping links and markup. Those are behavioral constraints on the parameter values that the schema does not express.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Prepare a request about one yacht') and immediately scopes the outcome ('never sends ... saves a draft ... returns one link'). It is clearly distinguished from the read-only siblings find_yachts, yachts_near and yacht_facts, which it names as the source of its input.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent where the `yacht` value comes from ('the `id` of a find_yachts, yachts_near or yacht_facts answer; a name is not searched') and what the agent must do with the result ('give the person the link and tell them plainly that nothing has been sent'). The not-to-do side is also covered via the PII prohibition on questions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yacht_factsOne yacht's factsARead-onlyIdempotentInspect
One yacht's facts from YachtFinder: builder, year, length, status, the broker's asking price (never a sale price), YachtFinder's estimate where her page shows one, her published AIS position with its time, where her listing says she is, and her page on yachtfinder.co, with the source and date of each fact. Takes her name (add builder or length_m when several yachts share it) or her yachtfinder.co/y/ link. A yacht several brokerages list is one yacht, with each other brokerage's listing, its status and its page.
| Name | Required | Description | Default |
|---|---|---|---|
| yacht | Yes | Her name, e.g. "Lady Lara", or her yachtfinder.co/y/ link or the id from another answer. | |
| builder | No | Her builder, to choose between yachts of the same name. | |
| length_m | No | Her length in meters, to choose between yachts of the same name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| found | Yes | |
| notes | Yes | |
| yacht | No | |
| source | Yes | |
| matches | No | |
| summary | Yes | |
| data_as_of | Yes | When YachtFinder last rebuilt the catalog this answer was read from (ISO 8601). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, idempotent, non-destructive profile, so the description focuses on adding real context: the price is the broker's asking price and never a sale price, each fact carries a source and date, AIS position carries a timestamp, and multi-brokerage listings are merged into one yacht with each brokerage's listing and page. That is substantive behavioral detail beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with what is returned, then input forms, then the multi-brokerage aggregation note. The long field enumeration is dense but each item (asking price caveat, source and date) earns its place; minor trimming possible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't explain return shapes, yet it still characterizes the returned facts, input modes, and the merged-listing behavior. Coverage of disambiguation and aggregation makes it complete enough to call correctly, with only the sibling-routing gap as a shortfall.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains that builder and length_m disambiguate yachts sharing a name and that yacht accepts a name, link, or id. The description largely restates those points, adding no format or edge-case meaning beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states this returns the facts for a single yacht from YachtFinder, enumerating the fields (builder, year, length, status, asking price, estimate, AIS position, listing location, page link). It is distinguishable from find_yachts by being a single-entity detail lookup, though it never names the sibling or contrasts the search-vs-detail roles explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It tells the agent what identifier to supply (name, yachtfinder.co/y/ link, or id) and how to disambiguate with builder or length_m, which implies use after identifying a yacht. But there is no explicit when-to-use versus find_yachts or yachts_near, and no stated preconditions, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yachts_nearYachts near a placeARead-onlyIdempotentInspect
List the yachts whose latest AIS position, as yachtfinder.co publishes it, lies within a radius of a named harbor or anchorage (e.g. "Port Hercule", "Antibes", "Off Monaco") or of a latitude and longitude. By default only positions from the last 24 hours. Each yacht comes with the time of her fix, her distance from the place, whether the harbor's page counts her in port, and a link to her page. A yacht whose position the site does not publish is never listed. Each yacht is listed once, however many brokerages list her.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| place | No | A harbor, harbor town or anchorage by name, or a boat show ("FLIBS", "the show": the yachts its page lists at its marinas now). Give this, or latitude and longitude. | |
| status | No | any | |
| latitude | No | Latitude of the place to search (a harbor, an anchorage or a position at sea), in decimal degrees. Not the user's own location. | |
| longitude | No | Longitude of the place to search, in decimal degrees. Not the user's own location. | |
| radius_km | No | Default 2 km for a harbor, 3 km for an anchorage, 10 km for a coordinate. | |
| seen_within_hours | No | Only positions this recent. Default 24. |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | Yes | |
| place | Yes | |
| source | Yes | |
| results | Yes | |
| summary | Yes | |
| data_as_of | Yes | When YachtFinder last rebuilt the catalog this answer was read from (ISO 8601). |
| total_matches | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the description's added value is the behavioral rules: default 24-hour recency, yachts with unpublished positions are never listed, and each yacht appears once regardless of brokerage listings. Those are genuine, non-obvious behaviors; only the pagination/limit behavior is left unaddressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core filter is front-loaded in the first sentence and the following sentences each add distinct information (recency default, returned fields, exclusion rule, dedup rule). Dense but not padded; the opening sentence is long but does real work.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not enumerate return values, and it still gives a useful summary of what accompanies each yacht plus the two non-obvious rules (exclusion of unpublished positions, per-brokerage dedup). The main remaining gap is explaining the status filter, which is fully undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 71%, below the high-coverage threshold, so the description should compensate more than it does. The place/coordinate duality and boat-show option are already spelled out in the schema's own field descriptions, the radius defaults duplicate radius_km's schema text, and the status enum (5 values) and limit are never explained in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource (list yachts) with a precise spatial scope: latest AIS position within a radius of a named harbor/anchorage or a coordinate. That scope is distinctive, but it never mentions the sibling find_yachts, so an agent must infer the boundary between 'near a place' and general yacht search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the spatial framing and the place-or-coordinate duality, and the default 24-hour window gives useful context. There is no explicit when-to-use/when-not-to-use statement and no routing guidance versus find_yachts or yacht_facts, which are the obvious alternatives for non-spatial lookups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
- Changed
find_yachts5 fields changed- added
Output schema / properties / results / items / properties / asking_contestedAdded value: +{ + "description": "Present only where the brokerages that list her publish asking prices that disagree: her page's label and the range of their asks, \"Asking · contested $4.99M–$6.29M\". Her page then states no single ask and no percentage against our estimate. Absent otherwise.", + "type": "string" +} - changed
Output schema / properties / results / items / properties / asking_price_usd / descriptionPrevious value: -"The broker's asking price in US dollars; null when none is published. Never a sale price. Where she asks in another currency (price_as_listed), this is YachtFinder's conversion of that ask, about this much."New value: +"The broker's asking price in US dollars; null when none is published, or where brokerages publish different asking prices for her (asking_contested). Never a sale price. Where she asks in another currency (price_as_listed), this is YachtFinder's conversion of that ask, about this much." - added
Output schema / properties / results / items / properties / length_m / descriptionAdded value: +"Her length overall in meters; null where her page shows none, as where her own listing does not confirm the length (length_note)." - added
Output schema / properties / results / items / properties / length_noteAdded value: +{ + "description": "Present only where her record holds a length her own listing does not confirm, so length_m is null: her page's words for it. Absent otherwise.", + "type": "string" +} - added
Output schema / properties / results / items / properties / listed_location_noteAdded value: +{ + "description": "Present only where listed_location prints a country YachtFinder calculated from the town her listing states (her listing names no country): that sentence, as her page says it. Absent otherwise: the place is the listing's.", + "type": "string" +}
- Changed
yacht_facts5 fields changed- added
Output schema / properties / matches / items / properties / asking_contestedAdded value: +{ + "description": "Present only where the brokerages that list her publish asking prices that disagree: her page's label and the range of their asks, \"Asking · contested $4.99M–$6.29M\". Her page then states no single ask and no percentage against our estimate. Absent otherwise.", + "type": "string" +} - changed
Output schema / properties / matches / items / properties / asking_price_usd / descriptionPrevious value: -"The broker's asking price in US dollars; null when none is published. Never a sale price. Where she asks in another currency (price_as_listed), this is YachtFinder's conversion of that ask, about this much."New value: +"The broker's asking price in US dollars; null when none is published, or where brokerages publish different asking prices for her (asking_contested). Never a sale price. Where she asks in another currency (price_as_listed), this is YachtFinder's conversion of that ask, about this much." - added
Output schema / properties / matches / items / properties / length_m / descriptionAdded value: +"Her length overall in meters; null where her page shows none, as where her own listing does not confirm the length (length_note)." - added
Output schema / properties / matches / items / properties / length_noteAdded value: +{ + "description": "Present only where her record holds a length her own listing does not confirm, so length_m is null: her page's words for it. Absent otherwise.", + "type": "string" +} - added
Output schema / properties / matches / items / properties / listed_location_noteAdded value: +{ + "description": "Present only where listed_location prints a country YachtFinder calculated from the town her listing states (her listing names no country): that sentence, as her page says it. Absent otherwise: the place is the listing's.", + "type": "string" +}
- Changed
yachts_near5 fields changed- added
Output schema / properties / results / items / properties / asking_contestedAdded value: +{ + "description": "Present only where the brokerages that list her publish asking prices that disagree: her page's label and the range of their asks, \"Asking · contested $4.99M–$6.29M\". Her page then states no single ask and no percentage against our estimate. Absent otherwise.", + "type": "string" +} - changed
Output schema / properties / results / items / properties / asking_price_usd / descriptionPrevious value: -"The broker's asking price in US dollars; null when none is published. Never a sale price. Where she asks in another currency (price_as_listed), this is YachtFinder's conversion of that ask, about this much."New value: +"The broker's asking price in US dollars; null when none is published, or where brokerages publish different asking prices for her (asking_contested). Never a sale price. Where she asks in another currency (price_as_listed), this is YachtFinder's conversion of that ask, about this much." - added
Output schema / properties / results / items / properties / length_m / descriptionAdded value: +"Her length overall in meters; null where her page shows none, as where her own listing does not confirm the length (length_note)." - added
Output schema / properties / results / items / properties / length_noteAdded value: +{ + "description": "Present only where her record holds a length her own listing does not confirm, so length_m is null: her page's words for it. Absent otherwise.", + "type": "string" +} - added
Output schema / properties / results / items / properties / listed_location_noteAdded value: +{ + "description": "Present only where listed_location prints a country YachtFinder calculated from the town her listing states (her listing names no country): that sentence, as her page says it. Absent otherwise: the place is the listing's.", + "type": "string" +}
3 tool updates
- Changed
find_yachts5 fields changed- changed
Input schema / properties / near / descriptionPrevious value: -"A harbor, harbor town or anchorage by name, e.g. \"Port Hercule\", \"Antibes\", \"Fort Lauderdale\", \"Off Monaco\"."New value: +"A harbor, harbor town or anchorage by name, e.g. \"Port Hercule\", \"Antibes\", \"Fort Lauderdale\", \"Off Monaco\". A boat show by its name, \"FLIBS\" or \"the show\", is the yachts its page lists at its marinas now." - added
Output schema / properties / results / items / properties / asking_throughAdded value: +{ + "description": "The brokerage whose sale listing asks the asking price shown, when it is not her listing house (a charter listing priced by another house's sale ask), as her page names it. Absent otherwise.", + "type": "string" +} - changed
Output schema / properties / results / items / properties / position / anyOfPrevious value: -[ - { - "properties": { - "distance_km": { - "type": "number" - }, - "in_port": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "latitude": { - "type": "number" - }, - "longitude": { - "type": "number" - }, - "seen_at": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "properties": { + "distance_km": { + "type": "number" + }, + "in_port": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "near_port_nm": { + "description": "Present where only the yachts between her and the harbor put her on its quays (her fix more than 400 m from its point, with no berth label of its marina): how far she lies from its point, in nautical miles. Her page then says \"Near <in_port>\", never \"In\"; the harbor's page still lists her.", + "type": "number" + }, + "seen_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "show_marina": { + "description": "For a boat show: the show marina whose ring holds her AIS fix.", + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / results / items / properties / sanctions / properties / also_onAdded value: +{ + "description": "Present only where she is on more than one list: each other list her record names, with its own date.", + "items": { + "properties": { + "list": { + "type": "string" + }, + "list_date": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" +} - changed
Output schema / properties / results / items / properties / sanctions / properties / list / descriptionPrevious value: -"The list her record names: 'OFAC SDN' (the US Treasury's) or 'UK Sanctions List'."New value: +"The first list her record names: 'OFAC SDN' (the US Treasury's), 'UK Sanctions List' or 'EU Consolidated List'."
- Changed
yacht_facts4 fields changed- added
Output schema / properties / matches / items / properties / asking_throughAdded value: +{ + "description": "The brokerage whose sale listing asks the asking price shown, when it is not her listing house (a charter listing priced by another house's sale ask), as her page names it. Absent otherwise.", + "type": "string" +} - changed
Output schema / properties / matches / items / properties / position / anyOfPrevious value: -[ - { - "properties": { - "distance_km": { - "type": "number" - }, - "in_port": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "latitude": { - "type": "number" - }, - "longitude": { - "type": "number" - }, - "seen_at": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "properties": { + "distance_km": { + "type": "number" + }, + "in_port": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "near_port_nm": { + "description": "Present where only the yachts between her and the harbor put her on its quays (her fix more than 400 m from its point, with no berth label of its marina): how far she lies from its point, in nautical miles. Her page then says \"Near <in_port>\", never \"In\"; the harbor's page still lists her.", + "type": "number" + }, + "seen_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "show_marina": { + "description": "For a boat show: the show marina whose ring holds her AIS fix.", + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / matches / items / properties / sanctions / properties / also_onAdded value: +{ + "description": "Present only where she is on more than one list: each other list her record names, with its own date.", + "items": { + "properties": { + "list": { + "type": "string" + }, + "list_date": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" +} - changed
Output schema / properties / matches / items / properties / sanctions / properties / list / descriptionPrevious value: -"The list her record names: 'OFAC SDN' (the US Treasury's) or 'UK Sanctions List'."New value: +"The first list her record names: 'OFAC SDN' (the US Treasury's), 'UK Sanctions List' or 'EU Consolidated List'."
- Changed
yachts_near6 fields changed- changed
Input schema / properties / place / descriptionPrevious value: -"A harbor, harbor town or anchorage by name. Give this, or latitude and longitude."New value: +"A harbor, harbor town or anchorage by name, or a boat show (\"FLIBS\", \"the show\": the yachts its page lists at its marinas now). Give this, or latitude and longitude." - changed
Output schema / properties / place / properties / read_as / descriptionPrevious value: -"How the place was read: harbor, town (all its harbors), town coast or region (the harbors and anchorages followed in it), coast, place, anchorage or coordinate."New value: +"How the place was read: harbor, town (all its harbors), town coast or region (the harbors and anchorages followed in it), coast, place, anchorage, coordinate, or show (a boat show: the yachts its page lists at its marinas)." - added
Output schema / properties / results / items / properties / asking_throughAdded value: +{ + "description": "The brokerage whose sale listing asks the asking price shown, when it is not her listing house (a charter listing priced by another house's sale ask), as her page names it. Absent otherwise.", + "type": "string" +} - changed
Output schema / properties / results / items / properties / position / anyOfPrevious value: -[ - { - "properties": { - "distance_km": { - "type": "number" - }, - "in_port": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "latitude": { - "type": "number" - }, - "longitude": { - "type": "number" - }, - "seen_at": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "properties": { + "distance_km": { + "type": "number" + }, + "in_port": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "near_port_nm": { + "description": "Present where only the yachts between her and the harbor put her on its quays (her fix more than 400 m from its point, with no berth label of its marina): how far she lies from its point, in nautical miles. Her page then says \"Near <in_port>\", never \"In\"; the harbor's page still lists her.", + "type": "number" + }, + "seen_at": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "show_marina": { + "description": "For a boat show: the show marina whose ring holds her AIS fix.", + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / results / items / properties / sanctions / properties / also_onAdded value: +{ + "description": "Present only where she is on more than one list: each other list her record names, with its own date.", + "items": { + "properties": { + "list": { + "type": "string" + }, + "list_date": { + "type": "string" + } + }, + "type": "object" + }, + "type": "array" +} - changed
Output schema / properties / results / items / properties / sanctions / properties / list / descriptionPrevious value: -"The list her record names: 'OFAC SDN' (the US Treasury's) or 'UK Sanctions List'."New value: +"The first list her record names: 'OFAC SDN' (the US Treasury's), 'UK Sanctions List' or 'EU Consolidated List'."
4 tool updates
- Changed
find_yachts6 fields changed- changed
Input schema / properties / max_length_m / descriptionPrevious value: -"Maximum length overall, metres."New value: +"Maximum length overall, meters." - changed
Input schema / properties / min_length_m / descriptionPrevious value: -"Minimum length overall, metres."New value: +"Minimum length overall, meters." - changed
Output schema / properties / data_as_of / descriptionPrevious value: -"When YachtFinder last rebuilt the catalogue this answer was read from (ISO 8601)."New value: +"When YachtFinder last rebuilt the catalog this answer was read from (ISO 8601)." - added
Output schema / properties / results / items / properties / also_listed_byAdded value: +{ + "description": "The other brokerages that list this same yacht, as her page names them (\"Also listed by\"). Absent when no other brokerage lists her.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / results / items / properties / asking_vs_estimateAdded value: +{ + "description": "Where her page names the side of our estimate her asking price sits and prints no estimate figure, its words: \"Above our estimate’s range\". Absent otherwise.", + "type": "string" +} - added
Output schema / properties / results / items / properties / sanctionsAdded value: +{ + "description": "Present only where her record puts her on a sanctions list, matched by her IMO number alone, in her yacht page's own words. Absent otherwise; its absence is not a legal clearance (her page says which lists were checked, and when).", + "properties": { + "heading": { + "description": "As her page heads it, e.g. \"On the US sanctions list\".", + "type": "string" + }, + "line": { + "description": "Her yacht page's own dated line: the list, its date, her IMO number and how it was found, the name and program the list gives her, and the advice that follows.", + "type": "string" + }, + "list": { + "description": "The list her record names: 'OFAC SDN' (the US Treasury's) or 'UK Sanctions List'.", + "type": "string" + }, + "list_date": { + "description": "That list's own date (YYYY-MM-DD).", + "type": "string" + } + }, + "type": "object" +}
- Added
prepare_inquiry - Changed
yacht_facts5 fields changed- changed
Input schema / properties / length_m / descriptionPrevious value: -"Her length in metres, to choose between yachts of the same name."New value: +"Her length in meters, to choose between yachts of the same name." - changed
Output schema / properties / data_as_of / descriptionPrevious value: -"When YachtFinder last rebuilt the catalogue this answer was read from (ISO 8601)."New value: +"When YachtFinder last rebuilt the catalog this answer was read from (ISO 8601)." - added
Output schema / properties / matches / items / properties / also_listed_byAdded value: +{ + "description": "The other brokerages that list this same yacht, as her page names them (\"Also listed by\"). Absent when no other brokerage lists her.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / matches / items / properties / asking_vs_estimateAdded value: +{ + "description": "Where her page names the side of our estimate her asking price sits and prints no estimate figure, its words: \"Above our estimate’s range\". Absent otherwise.", + "type": "string" +} - added
Output schema / properties / matches / items / properties / sanctionsAdded value: +{ + "description": "Present only where her record puts her on a sanctions list, matched by her IMO number alone, in her yacht page's own words. Absent otherwise; its absence is not a legal clearance (her page says which lists were checked, and when).", + "properties": { + "heading": { + "description": "As her page heads it, e.g. \"On the US sanctions list\".", + "type": "string" + }, + "line": { + "description": "Her yacht page's own dated line: the list, its date, her IMO number and how it was found, the name and program the list gives her, and the advice that follows.", + "type": "string" + }, + "list": { + "description": "The list her record names: 'OFAC SDN' (the US Treasury's) or 'UK Sanctions List'.", + "type": "string" + }, + "list_date": { + "description": "That list's own date (YYYY-MM-DD).", + "type": "string" + } + }, + "type": "object" +}
- Changed
yachts_near4 fields changed- changed
Output schema / properties / data_as_of / descriptionPrevious value: -"When YachtFinder last rebuilt the catalogue this answer was read from (ISO 8601)."New value: +"When YachtFinder last rebuilt the catalog this answer was read from (ISO 8601)." - added
Output schema / properties / results / items / properties / also_listed_byAdded value: +{ + "description": "The other brokerages that list this same yacht, as her page names them (\"Also listed by\"). Absent when no other brokerage lists her.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / results / items / properties / asking_vs_estimateAdded value: +{ + "description": "Where her page names the side of our estimate her asking price sits and prints no estimate figure, its words: \"Above our estimate’s range\". Absent otherwise.", + "type": "string" +} - added
Output schema / properties / results / items / properties / sanctionsAdded value: +{ + "description": "Present only where her record puts her on a sanctions list, matched by her IMO number alone, in her yacht page's own words. Absent otherwise; its absence is not a legal clearance (her page says which lists were checked, and when).", + "properties": { + "heading": { + "description": "As her page heads it, e.g. \"On the US sanctions list\".", + "type": "string" + }, + "line": { + "description": "Her yacht page's own dated line: the list, its date, her IMO number and how it was found, the name and program the list gives her, and the advice that follows.", + "type": "string" + }, + "list": { + "description": "The list her record names: 'OFAC SDN' (the US Treasury's) or 'UK Sanctions List'.", + "type": "string" + }, + "list_date": { + "description": "That list's own date (YYYY-MM-DD).", + "type": "string" + } + }, + "type": "object" +}
3 tool updates
- Changed
find_yachts5 fields changed- changed
Input schema / properties / near / descriptionPrevious value: -"A harbour, harbour town or anchorage by name, e.g. \"Port Hercule\", \"Antibes\", \"Fort Lauderdale\", \"Off Monaco\"."New value: +"A harbor, harbor town or anchorage by name, e.g. \"Port Hercule\", \"Antibes\", \"Fort Lauderdale\", \"Off Monaco\"." - changed
Input schema / properties / radius_km / descriptionPrevious value: -"With near: the radius. Default 2 km for a harbour, 3 km for an anchorage."New value: +"With near: the radius. Default 2 km for a harbor, 3 km for an anchorage." - changed
Output schema / properties / results / items / properties / asking_price_usd / descriptionPrevious value: -"The broker's asking price in US dollars; null when none is published. Never a sale price."New value: +"The broker's asking price in US dollars; null when none is published. Never a sale price. Where she asks in another currency (price_as_listed), this is YachtFinder's conversion of that ask, about this much." - added
Output schema / properties / results / items / properties / price_as_listedAdded value: +{ + "anyOf": [ + { + "properties": { + "amount": { + "type": "number" + }, + "currency": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Her asking price as the broker lists it, when that is not in US dollars (the dollar figure above is then converted). Null for a dollar ask." +} - added
Output schema / properties / results / items / properties / weeks_heardAdded value: +{ + "anyOf": [ + { + "properties": { + "heard": { + "type": "integer" + }, + "of": { + "type": "integer" + }, + "season_url": { + "type": "string" + }, + "sentence": { + "type": "string" + }, + "since": { + "type": "string" + }, + "weeks": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "The weeks since `since` (UTC Monday weeks, the last one not over) that YachtFinder's AIS archive heard her: one letter a week, h heard, u our archive did not hear her (our gap, not where she was), x our archive was down. Null where we have none for her." +}
- Changed
yacht_facts3 fields changed- changed
Output schema / properties / matches / items / properties / asking_price_usd / descriptionPrevious value: -"The broker's asking price in US dollars; null when none is published. Never a sale price."New value: +"The broker's asking price in US dollars; null when none is published. Never a sale price. Where she asks in another currency (price_as_listed), this is YachtFinder's conversion of that ask, about this much." - added
Output schema / properties / matches / items / properties / price_as_listedAdded value: +{ + "anyOf": [ + { + "properties": { + "amount": { + "type": "number" + }, + "currency": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Her asking price as the broker lists it, when that is not in US dollars (the dollar figure above is then converted). Null for a dollar ask." +} - added
Output schema / properties / matches / items / properties / weeks_heardAdded value: +{ + "anyOf": [ + { + "properties": { + "heard": { + "type": "integer" + }, + "of": { + "type": "integer" + }, + "season_url": { + "type": "string" + }, + "sentence": { + "type": "string" + }, + "since": { + "type": "string" + }, + "weeks": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "The weeks since `since` (UTC Monday weeks, the last one not over) that YachtFinder's AIS archive heard her: one letter a week, h heard, u our archive did not hear her (our gap, not where she was), x our archive was down. Null where we have none for her." +}
- Changed
yachts_near9 fields changed- changed
Input schema / properties / latitude / descriptionPrevious value: -"Latitude of the place to search (a harbour, an anchorage or a position at sea), in decimal degrees. Not the user's own location."New value: +"Latitude of the place to search (a harbor, an anchorage or a position at sea), in decimal degrees. Not the user's own location." - changed
Input schema / properties / place / descriptionPrevious value: -"A harbour, harbour town or anchorage by name. Give this, or latitude and longitude."New value: +"A harbor, harbor town or anchorage by name. Give this, or latitude and longitude." - changed
Input schema / properties / radius_km / descriptionPrevious value: -"Default 2 km for a harbour, 3 km for an anchorage, 10 km for a coordinate."New value: +"Default 2 km for a harbor, 3 km for an anchorage, 10 km for a coordinate." - added
Output schema / properties / place / properties / anchoragesAdded value: +{ + "description": "The anchorages counted.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / place / properties / harborsAdded value: +{ + "description": "The harbors counted.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / place / properties / read_asAdded value: +{ + "description": "How the place was read: harbor, town (all its harbors), town coast or region (the harbors and anchorages followed in it), coast, place, anchorage or coordinate.", + "type": "string" +} - changed
Output schema / properties / results / items / properties / asking_price_usd / descriptionPrevious value: -"The broker's asking price in US dollars; null when none is published. Never a sale price."New value: +"The broker's asking price in US dollars; null when none is published. Never a sale price. Where she asks in another currency (price_as_listed), this is YachtFinder's conversion of that ask, about this much." - added
Output schema / properties / results / items / properties / price_as_listedAdded value: +{ + "anyOf": [ + { + "properties": { + "amount": { + "type": "number" + }, + "currency": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Her asking price as the broker lists it, when that is not in US dollars (the dollar figure above is then converted). Null for a dollar ask." +} - added
Output schema / properties / results / items / properties / weeks_heardAdded value: +{ + "anyOf": [ + { + "properties": { + "heard": { + "type": "integer" + }, + "of": { + "type": "integer" + }, + "season_url": { + "type": "string" + }, + "sentence": { + "type": "string" + }, + "since": { + "type": "string" + }, + "weeks": { + "type": "string" + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "The weeks since `since` (UTC Monday weeks, the last one not over) that YachtFinder's AIS archive heard her: one letter a week, h heard, u our archive did not hear her (our gap, not where she was), x our archive was down. Null where we have none for her." +}
3 tool updates
- Changed
find_yachts3 fields changed- removed
Output schema / properties / answered_atRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / read_atRemoved value: -{ - "description": "When this server read that catalogue (ISO 8601).", - "type": "string" -} - changed
Output schema / requiredPrevious value: -[ - "summary", - "data_as_of", - "read_at", - "answered_at", - "source", - "notes", - "total_matches", - "results" -]New value: +[ + "summary", + "data_as_of", + "source", + "notes", + "total_matches", + "results" +]
- Changed
yacht_facts3 fields changed- removed
Output schema / properties / answered_atRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / read_atRemoved value: -{ - "description": "When this server read that catalogue (ISO 8601).", - "type": "string" -} - changed
Output schema / requiredPrevious value: -[ - "summary", - "data_as_of", - "read_at", - "answered_at", - "source", - "notes", - "found" -]New value: +[ + "summary", + "data_as_of", + "source", + "notes", + "found" +]
- Changed
yachts_near5 fields changed- added
Input schema / properties / latitude / descriptionAdded value: +"Latitude of the place to search (a harbour, an anchorage or a position at sea), in decimal degrees. Not the user's own location." - added
Input schema / properties / longitude / descriptionAdded value: +"Longitude of the place to search, in decimal degrees. Not the user's own location." - removed
Output schema / properties / answered_atRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / read_atRemoved value: -{ - "description": "When this server read that catalogue (ISO 8601).", - "type": "string" -} - changed
Output schema / requiredPrevious value: -[ - "summary", - "data_as_of", - "read_at", - "answered_at", - "source", - "notes", - "place", - "total_matches", - "results" -]New value: +[ + "summary", + "data_as_of", + "source", + "notes", + "place", + "total_matches", + "results" +]
3 tool updates
- First observed
find_yachts - First observed
yacht_facts - First observed
yachts_near
Related MCP Connectors
Search 14,000+ charter boats with live prices, plus marinas, anchorages, routes and itineraries.
Live prices, free weeks and deals on 9,000+ charter yachts from 800+ operators in 50 countries.
Vessel Tracking — live worldwide ship positions from AIS.
Vessel tracking for 750,000+ ships, with ownership, inspections, port records, routes, and more.
Related MCP Servers
AlicenseNot gradedqualityCmaintenanceEnables real-time vessel tracking, port data, maritime weather, and maritime intelligence through 25 tools, allowing AI clients to query live vessel positions, registry, port info, area searches, weather, and more.MIT- AlicenseNot gradedqualityBmaintenanceEnables querying Global Fishing Watch AIS data to search vessels by identity, retrieve at-sea events such as apparent fishing, encounters, loitering, port visits and AIS gaps, and generate aggregated apparent fishing effort reports by area, flag and gear type.427 npmMIT
- AlicenseNot gradedqualityCmaintenanceLets an AI assistant search live empty-leg private jet flights, estimate whole-aircraft charter prices in the departure market's local currency, and browse routes, aircraft sizes and licensed operators. It also sends quote requests to the charter desk, with no API key or payment needed.MIT
- AlicenseNot gradedqualityCmaintenanceProvides live AIS vessel positions from datalastic.com, enabling querying of vessel data through natural language via the Pipeworx MCP gateway.10 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.