Chuk MCP Maritime Archives
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_STDIO | No | Set to any value to force stdio mode | |
| REDIS_URL | No | Redis URL for session management | |
| BUCKET_NAME | No | S3 bucket name (required if CHUK_ARTIFACTS_PROVIDER is 's3') | |
| AWS_ACCESS_KEY_ID | No | AWS access key for S3 | |
| AWS_ENDPOINT_URL_S3 | No | Custom S3 endpoint (MinIO, etc.) | |
| CHUK_ARTIFACTS_PATH | No | Filesystem storage path (required if CHUK_ARTIFACTS_PROVIDER is 'filesystem') | |
| AWS_SECRET_ACCESS_KEY | No | AWS secret key for S3 | |
| CHUK_ARTIFACTS_PROVIDER | No | Storage backend: 'memory', 'filesystem', or 's3' | memory |
| MARITIME_REFERENCE_MANIFEST | No | Artifact ID of reference data manifest for preloading from S3 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"subscribe": true,
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| maritime_list_archivesA | List all available maritime archives. Returns metadata for each archive including name, organisation, coverage period, record types, and a brief description. Args: output_mode: Response format - "json" (default) or "text" Returns: JSON or text listing of available archives Tips for LLMs: - Call this first to discover which archives are available - Use maritime_capabilities for a full overview of all tools and reference data - Archive IDs: das, voc_crew, voc_cargo, maarer - DAS covers voyages/vessels, voc_crew covers personnel, voc_cargo covers trade goods, maarer covers wreck sites |
| maritime_get_archiveA | Get detailed metadata for a specific maritime archive. Returns full information about the archive including organisation, coverage period, record types, citation, licence, and access method. Args: archive_id: Archive identifier (das, voc_crew, voc_cargo, maarer) output_mode: Response format - "json" (default) or "text" Returns: JSON or text with archive details Tips for LLMs: - Use maritime_list_archives first to see valid archive IDs - DAS (Dutch Asiatic Shipping) is the primary source for voyages and vessels - voc_crew links to personnel muster rolls - voc_cargo links to trade goods manifests - maarer covers compiled wreck position data |
| maritime_search_voyagesA | Search for maritime voyages matching one or more criteria. Queries multiple maritime archives for voyages. All search parameters are optional and combined with AND logic. Supports cursor-based pagination for browsing large result sets. Archives available: - das: Dutch Asiatic Shipping (VOC), 1595-1795 - eic: English East India Company, 1600-1874 - carreira: Portuguese Carreira da India, 1497-1835 - galleon: Spanish Manila Galleon, 1565-1815 - soic: Swedish East India Company, 1731-1813 Args: ship_name: Ship name or partial name (case-insensitive) captain: Captain / skipper name or partial name date_range: Date range as "YYYY/YYYY" or "YYYY-MM-DD/YYYY-MM-DD" departure_port: Departure port name or partial name destination_port: Destination port name or partial name route: Route keyword (searches departure, destination, and summary) fate: Voyage outcome - completed, wrecked, captured, scuttled, missing archive: Restrict to specific archive - das, eic, carreira, galleon, soic (default: all) max_results: Maximum results per page (default: 50, max: 500) cursor: Pagination cursor from a previous result's next_cursor field output_mode: Response format - "json" (default) or "text" Returns: JSON or text with matching voyages and pagination metadata Tips for LLMs: - Start broad (ship_name only) and narrow down with additional filters - Use date_range to focus on a specific century or decade - Set fate="wrecked" to find shipwreck voyages - Use archive="eic" for English East India Company voyages - If has_more is true, pass next_cursor as cursor to get the next page - total_count shows how many records match before pagination - Follow up with maritime_get_voyage for full voyage details |
| maritime_get_voyageA | Get full details for a specific voyage. Returns the complete voyage record including ship information, captain, route, dates, fate, and any incident details. The voyage must have been found by a prior maritime_search_voyages call or specified by its DAS voyage identifier. Args: voyage_id: Voyage identifier (from search results or DAS ID) output_mode: Response format - "json" (default) or "text" Returns: JSON or text with full voyage record Tips for LLMs: - Use maritime_search_voyages first to find the voyage_id - The response includes incident details if the voyage ended in shipwreck (loss date, position, cause) - Use the voyage_id with maritime_search_crew to find the crew - Use the voyage_id with maritime_get_cargo_manifest for cargo - Use with maritime_assess_position to evaluate wreck position quality |
| maritime_search_crewA | Search for crew members in muster roll records. Queries crew databases across multiple archives. By default queries the VOC Opvarenden database (774,200 personnel records, 1633-1794). Set archive="dss" to query MDB individual crew records from northern Dutch provinces (77,043 records, 1803-1837). Args: name: Crew member name or partial name (case-insensitive) rank: Rank or role (e.g., schipper, stuurman, matroos, soldaat) ship_name: Ship name or partial name voyage_id: Specific voyage identifier to list all crew origin: Place of origin or partial name date_range: Date range as "YYYY/YYYY" or "YYYY-MM-DD/YYYY-MM-DD" fate: Crew fate - survived, died_voyage, died_asia, deserted, discharged (VOC Opvarenden only) archive: Archive to search - "voc_crew" (default, 1633-1794) or "dss" (MDB northern provinces, 1803-1837) max_results: Maximum results per page (default: 100, max: 500) cursor: Pagination cursor from a previous result's next_cursor field output_mode: Response format - "json" (default) or "text" Returns: JSON or text with matching crew records and pagination metadata Tips for LLMs: - Use voyage_id to list the complete crew of a specific voyage - Set fate="died_voyage" to find crew lost at sea (VOC only) - Names are in historical Dutch spelling; try partial matches - If has_more is true, pass next_cursor as cursor to get the next page - Follow up with maritime_get_crew_member for full details including pay and embarkation date - Set archive="dss" for post-VOC era crew from Groningen, Friesland, Drenthe, Overijssel (1803-1837) - Combine with maritime_search_voyages to cross-reference ship and voyage information |
| maritime_get_crew_memberA | Get full details for a specific crew member. Returns the complete crew record including name, rank, origin, ship name, voyage, monthly pay, embarkation date, and fate. Args: crew_id: Crew member identifier (from search results) output_mode: Response format - "json" (default) or "text" Returns: JSON or text with full crew member record Tips for LLMs: - Use maritime_search_crew first to find the crew_id - Pay is in guilders per month; compare with rank averages - The fate field indicates what happened to the crew member (survived, died_voyage, died_asia, deserted, discharged) - Cross-reference with maritime_get_voyage using the voyage_id for full voyage context |
| maritime_search_cargoA | Search for VOC cargo records. Queries the Boekhouder-Generaal Batavia (BGB) cargo database for trade goods shipped between Asia and the Netherlands, 1700-1795. All search parameters are optional and combined with AND logic. Supports cursor-based pagination. Args: voyage_id: Filter by specific voyage commodity: Commodity name or partial name (e.g., pepper, cloves, textiles, silver, porcelain) origin: Origin port or region destination: Destination port or region date_range: Date range as "YYYY/YYYY" or "YYYY-MM-DD/YYYY-MM-DD" min_value: Minimum cargo value in guilders archive: Restrict to a specific archive (default: voc_cargo) max_results: Maximum results per page (default: 100, max: 500) cursor: Pagination cursor from a previous result's next_cursor field output_mode: Response format - "json" (default) or "text" Returns: JSON or text with matching cargo records and pagination metadata Tips for LLMs: - Use commodity to search for specific trade goods - Use voyage_id to see all cargo on a specific voyage; alternatively use maritime_get_cargo_manifest for the full list - Common VOC commodities: pepper, cloves, nutmeg, mace, cinnamon, textiles, porcelain, silver, copper, tea, coffee, sugar - Values are in contemporary Dutch guilders - If has_more is true, pass next_cursor as cursor to get the next page - Combine with maritime_search_voyages to find the voyage context |
| maritime_get_cargo_manifestA | Get the full cargo manifest for a specific voyage. Returns all cargo entries recorded for the voyage, including commodity, quantity, unit, and value in guilders. Args: voyage_id: Voyage identifier (from search results or DAS ID) output_mode: Response format - "json" (default) or "text" Returns: JSON or text with all cargo entries for the voyage Tips for LLMs: - Use maritime_search_voyages first to find the voyage_id - The manifest lists all goods loaded on the ship - Values are in contemporary Dutch guilders - Useful for estimating the total value of cargo lost in a shipwreck — combine with maritime_get_wreck - Not all voyages have cargo records; the BGB archive covers 1700-1795 while DAS voyages start from 1595 |
| maritime_search_wrecksA | Search for maritime shipwreck records across all archives. Queries wreck databases for known and suspected wreck sites. All search parameters are optional and combined with AND logic. Supports cursor-based pagination. Archives with wreck data: - maarer: MAARER VOC Wrecks, 1595-1795 - eic: English East India Company wrecks, 1600-1874 - carreira: Portuguese Carreira da India wrecks, 1497-1835 - galleon: Spanish Manila Galleon wrecks, 1565-1815 - soic: Swedish East India Company wrecks, 1731-1813 - ukho: UK Hydrographic Office Global Wrecks, 1500-2024 - noaa: NOAA Wrecks & Obstructions (AWOIS), 1600-2024 Args: ship_name: Ship name or partial name (case-insensitive) date_range: Date range as "YYYY/YYYY" or "YYYY-MM-DD/YYYY-MM-DD" region: Geographic region filter (e.g., cape, pacific, gulf_of_mexico) cause: Loss cause filter - storm, reef, fire, battle, grounding, scuttled, collision, unknown status: Wreck discovery status - found, unfound, approximate min_depth_m: Minimum estimated depth in metres max_depth_m: Maximum estimated depth in metres min_cargo_value: Minimum cargo value in guilders flag: Vessel nationality/flag (substring match, e.g. "UK", "NL", "US") vessel_type: Vessel type classification (substring match, e.g. "liner", "warship") gp_quality: NOAA position accuracy code (1=High, 2=Medium, 3=Low, 4=Poor) archive: Restrict to specific archive - maarer, eic, carreira, galleon, soic, ukho, noaa (default: all) max_results: Maximum results per page (default: 100, max: 500) cursor: Pagination cursor from a previous result's next_cursor field output_mode: Response format - "json" (default) or "text" Returns: JSON or text with matching wreck records and pagination metadata Tips for LLMs: - Use region to focus on a geographic area (e.g., "cape", "pacific") - Set status="unfound" to find wrecks that have not been located - If has_more is true, pass next_cursor as cursor to get the next page - Follow up with maritime_get_wreck for full details including position - Use maritime_export_geojson to map wreck positions - Use flag to filter by nationality (e.g. "UK", "NL", "US") - Use vessel_type to filter by ship classification (e.g. "liner", "warship") - Use gp_quality=1 to find NOAA wrecks with high-accuracy positions |
| maritime_get_wreckA | Get full details for a specific wreck record. Returns the complete wreck record including ship information, loss date, cause, position with uncertainty, depth estimate, discovery status, and archaeological notes. Args: wreck_id: Wreck identifier (from search results) output_mode: Response format - "json" (default) or "text" Returns: JSON or text with full wreck record Tips for LLMs: - Use maritime_search_wrecks first to find the wreck_id - The position field includes lat, lon, and uncertainty_km - Use maritime_assess_position with this wreck_id to get a detailed position quality assessment - Use maritime_export_geojson with wreck_ids to map the location - Cross-reference with maritime_get_voyage using the linked voyage_id |
| maritime_search_vesselsA | Search for VOC vessels by name, type, or construction details. Queries the DAS vessel registry for ships used by the VOC. All search parameters are optional and combined with AND logic. Supports cursor-based pagination. Args: name: Vessel name or partial name (case-insensitive) ship_type: Ship type filter. Options: retourschip, fluit, jacht, hooker, pinas, fregat built_range: Build year range as "YYYY/YYYY" shipyard: Shipyard name or partial name chamber: VOC chamber - Amsterdam, Zeeland, Delft, Rotterdam, Hoorn, Enkhuizen min_tonnage: Minimum tonnage in lasten max_tonnage: Maximum tonnage in lasten archive: Restrict to a specific archive (default: all) max_results: Maximum results per page (default: 50, max: 500) cursor: Pagination cursor from a previous result's next_cursor field output_mode: Response format - "json" (default) or "text" Returns: JSON or text with matching vessel records and pagination metadata Tips for LLMs: - Use ship_type to filter by vessel class (retourschip is the standard large Asia-route ship) - Chamber indicates which of the six VOC offices commissioned the vessel - If has_more is true, pass next_cursor as cursor to get the next page - Follow up with maritime_get_vessel for full construction details - Use maritime_get_hull_profile for hydrodynamic characteristics of a ship type (useful for drift modelling) - Combine with maritime_search_voyages to find voyages by this vessel |
| maritime_get_vesselA | Get full details for a specific vessel. Returns the complete vessel record including name, type, tonnage, construction year, shipyard, VOC chamber, dimensions, and service history. Args: vessel_id: Vessel identifier (from search results) output_mode: Response format - "json" (default) or "text" Returns: JSON or text with full vessel record Tips for LLMs: - Use maritime_search_vessels first to find the vessel_id - Tonnage is measured in lasten (approximately 2 metric tonnes) - Use maritime_get_hull_profile with the ship type for hydrodynamic characteristics - Cross-reference with maritime_search_voyages using the vessel name to find its voyage history |
| maritime_get_hull_profileA | Get hydrodynamic hull profile for a VOC ship type. Returns detailed hull characteristics including dimensions, displacement, drag coefficients, windage area, and drift modelling parameters. Used for calculating how a ship or wreckage would drift in ocean currents. Args: ship_type: Ship type identifier. Options: retourschip, fluit, jacht, hooker, pinas, fregat output_mode: Response format - "json" (default) or "text" Returns: JSON or text with hull profile data Tips for LLMs: - Use maritime_list_hull_profiles to see available types - Essential for drift modelling: provides drag coefficients, windage area, and sinking characteristics - The dimensions_typical field gives length, beam, and draught ranges for that ship type - The llm_guidance field contains domain-specific advice for using the profile in calculations - Retourschip is the most common VOC vessel type |
| maritime_list_hull_profilesA | List all available ship types with hull profiles. Returns a list of VOC ship type identifiers for which hydrodynamic hull profile data is available. Args: output_mode: Response format - "json" (default) or "text" Returns: JSON or text list of ship types Tips for LLMs: - Use this to discover which ship types have hull profiles before calling maritime_get_hull_profile - Common types: retourschip (large Asia trader), fluit (cargo), jacht (fast patrol) |
| maritime_assess_positionA | Assess the quality and uncertainty of a historical position. Evaluates a position based on the navigation technology available at the time, the source quality, and known factors. Returns a quality score, uncertainty radius, and recommendations for drift modelling and search planning. Provide either a voyage_id, wreck_id, or explicit lat/lon coordinates. The assessment considers the era of navigation technology (cross-staff, backstaff, octant, chronometer) and the source description. Args: voyage_id: Voyage identifier to assess its incident position wreck_id: Wreck identifier to assess its recorded position latitude: Explicit latitude in decimal degrees (WGS84) longitude: Explicit longitude in decimal degrees (WGS84) source_description: Description of position source for quality scoring. Keywords that improve scoring: "GPS", "surveyed", "multiple sources", "triangulated". Keywords that lower scoring: "dead reckoning", "approximate", "regional" date: Date for navigation era lookup (YYYY or YYYY-MM-DD), used when no voyage_id or wreck_id is provided output_mode: Response format - "json" (default) or "text" Returns: JSON or text with position quality assessment Tips for LLMs: - Provide voyage_id or wreck_id to automatically look up the position and date from the archive - The quality_score ranges from 0 (unknown) to 1 (precise GPS) - uncertainty_radius_km defines the search area envelope - The recommendations field provides actionable guidance for drift modelling and search planning - For modern surveyed wrecks, include "GPS" or "surveyed" in source_description to get a precise assessment - For historical positions from ship logs, include "dead reckoning" to reflect the navigational limitations - Navigation accuracy improved over time: 1595-1650 (~30km), 1650-1700 (~25km), 1700-1760 (~20km), 1760-1795 (~10km) |
| maritime_export_geojsonA | Export wreck positions as a GeoJSON FeatureCollection. Creates a GeoJSON document with Point features for each wreck site. Can export specific wrecks by ID or all wrecks matching filter criteria. Suitable for mapping and GIS analysis. Args: wreck_ids: Specific wreck IDs to export (overrides other filters) region: Region filter. Options: north_sea, atlantic_europe, atlantic_crossing, cape, mozambique_channel, indian_ocean, malabar, coromandel, ceylon, bengal, malacca, indonesia, south_china_sea, japan, caribbean status: Wreck status filter - found, unfound, approximate archive: Restrict to a specific archive include_uncertainty: Include position uncertainty radius in properties (default: true) include_voyage_data: Include ship type, tonnage, loss cause, lives lost, and depth in properties (default: true) output_mode: Response format - "json" (default) or "text" Returns: JSON with GeoJSON FeatureCollection and feature count Tips for LLMs: - Provide wreck_ids for a targeted export of specific sites - Use region and status filters for geographic or discovery status based exports - The GeoJSON uses WGS84 coordinates (EPSG:4326) - Include_uncertainty adds uncertainty_km to each feature's properties (useful for drawing search area buffers) - Include_voyage_data enriches features with vessel and loss context (useful for thematic mapping) - Use the output for mapping, spatial analysis, or as input to drift modelling tools |
| maritime_get_statisticsA | Get aggregate statistics across maritime archives. Computes summary statistics for VOC shipping losses including total losses, lives lost, cargo value, and breakdowns by region, cause, status, and decade. Args: archive: Restrict to a specific archive (default: all) date_range: Date range as "YYYY/YYYY" (default: 1595-1795) group_by: Grouping dimension (reserved for future use) output_mode: Response format - "json" (default) or "text" Returns: JSON or text with aggregate statistics Tips for LLMs: - Use date_range to focus statistics on a specific period (e.g., "1700/1750" for the early 18th century) - The response includes losses_by_region, losses_by_cause, losses_by_status, and losses_by_decade breakdowns - Total cargo_value_guilders_total gives the aggregate value of goods lost in all matched wrecks - Compare decades to identify trends in shipping safety - Compare regions to identify the most dangerous routes |
| maritime_lookup_locationA | Look up a historical place name in the VOC gazetteer. Returns coordinates (lat/lon), region classification, and historical context for a place name mentioned in voyage or wreck records. Handles historical spellings and aliases automatically. Args: name: Place name to look up (e.g., "Batavia", "Texel", "Abrolhos", "Kaap de Goede Hoop"). Supports historical Dutch spellings and modern equivalents. output_mode: Response format - "json" (default) or "text" Returns: JSON or text with coordinates, region, and historical notes Tips for LLMs: - Use this after reading a voyage's 'particulars' field to geocode places mentioned in the text - Handles common VOC-era place names and their modern equivalents (e.g., "Batavia" -> Jakarta, "Formosa" -> Taiwan) - The 'region' field matches the regions used by maritime_search_wrecks and maritime_get_statistics - Coordinates are approximate centres for historical locations - Use maritime_list_locations to browse available places by region or type - Combine with maritime_assess_position to evaluate position accuracy for a given location and time period |
| maritime_list_locationsA | Search or browse the VOC historical gazetteer. Returns a list of known VOC-era locations with coordinates and region classifications. Use filters to narrow results. Args: query: Text to search in place names, aliases, and notes (case-insensitive substring match) region: Filter by region. Options: north_sea, atlantic_europe, atlantic_crossing, cape, mozambique_channel, indian_ocean, malabar, coromandel, ceylon, bengal, malacca, indonesia, south_china_sea, japan, caribbean location_type: Filter by type. Options: port, island, cape, anchorage, waterway, coast, channel, region max_results: Maximum results (default: 50) output_mode: Response format - "json" (default) or "text" Returns: JSON or text with matching locations Tips for LLMs: - Call without filters to see all available locations - Use region filter to find all ports/islands in a specific area - Use location_type="port" to find VOC trading posts - Use query to search by historical or modern name - The 'region' values match those used in maritime_search_wrecks - Follow up with maritime_lookup_location for full details on a specific place |
| maritime_list_routesA | List available historical sailing routes. Returns summaries of all known routes with typical durations. Covers VOC (Dutch), EIC (British), Carreira da India (Portuguese), Manila Galleon (Spanish), and SOIC (Swedish) routes. Args: direction: Filter by route direction — "outward" (Europe to Asia), "return" (Asia to Europe), "intra_asian" (between Asian ports), "pacific_westbound" (Acapulco to Manila), or "pacific_eastbound" (Manila to Acapulco) departure_port: Filter routes containing this departure port (substring match, e.g., "Texel", "Downs", "Lisbon") destination_port: Filter routes containing this destination (substring match, e.g., "Batavia", "Canton", "Manila") output_mode: Response format — "json" (default) or "text" Returns: JSON or text with list of available routes Tips for LLMs: - Use direction="outward" to see Europe-to-Asia routes for all nations (VOC, EIC, Carreira, SOIC) - Use departure_port and destination_port to find routes matching a specific voyage - Follow up with maritime_get_route for full waypoint details - Use maritime_estimate_position with a route_id to estimate where a ship was on a specific date |
| maritime_get_routeA | Get full details of a historical sailing route. Returns all waypoints with coordinates, typical sailing times, stop durations, hazards, and seasonal notes for a specific route. Args: route_id: Route identifier. Options: VOC (Dutch): outward_outer, outward_inner, return, japan, spice_islands, ceylon, coromandel, malabar EIC (British): eic_outward, eic_china, eic_return, eic_country Carreira (Portuguese): carreira_outward, carreira_return Manila Galleon (Spanish): galleon_westbound, galleon_eastbound SOIC (Swedish): soic_outward, soic_return output_mode: Response format — "json" (default) or "text" Returns: JSON or text with full route including waypoints, durations, hazards, and seasonal notes Tips for LLMs: - Each waypoint has cumulative_days (typical elapsed days from departure) and stop_days (typical port stay duration) - The outer route (south of Madagascar) was preferred from the 1660s for speed; the inner route used Mozambique Channel - Use the waypoints with maritime_lookup_location for details on each port - Use maritime_estimate_position with this route_id and a departure date to estimate a ship's position on any date |
| maritime_estimate_positionA | Estimate a ship's position on a specific date based on its route. Uses linear interpolation between historical route waypoints to estimate where a ship would have been on a given date, assuming typical sailing times. Works with all 18 routes across VOC, EIC, Carreira, Galleon, and SOIC. Essential for investigating wreck locations and lost voyages. Args: route_id: Route identifier (from maritime_list_routes or maritime_get_route). See maritime_get_route for full list. departure_date: Ship's departure date as YYYY-MM-DD target_date: Date to estimate position for as YYYY-MM-DD (e.g., last known date, or estimated loss date) use_speed_profiles: If True, enrich estimate with CLIWOC-derived speed statistics for the current route segment (default False) output_mode: Response format — "json" (default) or "text" Returns: JSON or text with estimated lat/lon, region, route segment, confidence level, and caveats Tips for LLMs: - Get the departure_date from maritime_get_voyage - Choose route_id based on the voyage's departure/destination ports (use maritime_list_routes to find matching routes) - The estimate is based on TYPICAL sailing times — actual positions varied due to weather, ship condition, and orders - Confidence is "high" at known ports, "moderate" between waypoints, "low" past the expected arrival date - Use maritime_lookup_location on the estimated region for more geographic context - Combine with maritime_assess_position for uncertainty analysis |
| maritime_search_tracksA | Search historical ship tracks from the CLIWOC database (1662-1855). Returns voyage track summaries from ~261K daily logbook observations recorded by 8 European maritime nations. Each track represents one voyage with dated lat/lon positions from the ship's logbook. Supports cursor-based pagination and geographic bounding box filtering. Args: nationality: Two-letter nationality code to filter by. Options: NL (Dutch), UK (British), ES (Spanish), FR (French), SE (Swedish), US (American), DE (German), DK (Danish) year_start: Earliest year to include (e.g., 1700) year_end: Latest year to include (e.g., 1750) ship_name: Ship name or partial name (case-insensitive; requires CLIWOC 2.1 Full data) lat_min: Minimum latitude — track must have at least one position in the bounding box (e.g., -50 for Roaring Forties south bound) lat_max: Maximum latitude (e.g., -30 for Roaring Forties north bound) lon_min: Minimum longitude (e.g., 15 for Indian Ocean west bound) lon_max: Maximum longitude (e.g., 110 for Indian Ocean east bound) max_results: Maximum results per page (default: 50, max: 500) cursor: Pagination cursor from a previous result's next_cursor field output_mode: Response format - "json" (default) or "text" Returns: JSON or text with matching track summaries and pagination metadata Tips for LLMs: - Use nationality filter to find ships of a specific nation - Combine year_start/year_end to narrow to a specific period - Use lat_min/lat_max/lon_min/lon_max to find tracks passing through a geographic region (e.g., lat_min=-50, lat_max=-30 for Roaring Forties) - Results show track summaries (start/end dates, position count) - If has_more is true, pass next_cursor as cursor to get the next page - Follow up with maritime_get_track to get full position data - Use maritime_nearby_tracks to find ships near a wreck site - CLIWOC covers 1662-1855 with most data from 1750-1850 - Nationality breakdown: UK (732), NL (677), ES (472), FR (85) |
| maritime_get_trackA | Get full position history for a CLIWOC voyage. Returns the complete track including all dated lat/lon positions from the ship's logbook. Positions are daily observations recorded by the ship's navigator. Args: voyage_id: CLIWOC voyage ID (integer, from search results) output_mode: Response format - "json" (default) or "text" Returns: JSON or text with full track including positions Tips for LLMs: - Get voyage_id from maritime_search_tracks results - Positions are daily logbook readings, not continuous - Gaps in dates indicate missing logbook entries - Use positions to reconstruct the ship's route on a map - Combine with maritime_export_geojson for mapping - Position accuracy varies: typically ±20-50km for this era |
| maritime_nearby_tracksA | Find ships near a given position on a given date. Searches all CLIWOC logbook positions for the specified date and returns tracks with positions within the search radius. Useful for finding what other ships were in an area when a wreck or incident occurred. Args: lat: Latitude of search point (decimal degrees) lon: Longitude of search point (decimal degrees) date: Date to search (YYYY-MM-DD format) radius_km: Search radius in kilometres (default: 200) max_results: Maximum results (default: 20) output_mode: Response format - "json" (default) or "text" Returns: JSON or text with nearby tracks sorted by distance Tips for LLMs: - Use with wreck positions to find potential witness ships - Increase radius_km if no results (ships were sparse) - Date must be exact YYYY-MM-DD — logbook entries are daily - Try adjacent dates if exact date yields no results - Results include distance_km and matching position - CLIWOC covers 1662-1855; earlier dates have fewer records - Combine with maritime_assess_position for uncertainty context |
| maritime_get_voyage_fullA | Get a unified view of a voyage with all linked records. Returns the voyage record enriched with related wreck, vessel, hull profile, CLIWOC track, and optionally crew data. Each link includes a confidence score (0.0-1.0) indicating match quality. Args: voyage_id: Voyage identifier (e.g. "das:0372.1", "eic:0042") include_crew: If true, also find crew records linked to this voyage output_mode: Response format - "json" (default) or "text" Returns: JSON or text with unified voyage view including all linked records Tips for LLMs: - Start with maritime_search_voyages to find the voyage_id - This tool replaces the need to call get_voyage, get_wreck, get_vessel, and get_hull_profile separately - The links_found field shows which related records exist - The link_confidence field shows match quality (1.0 = exact ID match, lower values indicate fuzzy name+date matching) - Use include_crew=true to find crew/muster records for a voyage - Cross-reference: a wreck's voyage_id links to the originating voyage - The cliwoc_track field shows logbook positions (requires CLIWOC 2.1 Full data for ship name matching) |
| maritime_audit_linksA | Audit cross-archive link quality against known ground truth. Evaluates the precision and recall of entity resolution across all archive linking strategies. Uses known DAS-CLIWOC direct links (tracks with DAS numbers) and wreck records (with voyage_id fields) as ground truth. Args: output_mode: Response format - "json" (default) or "text" Returns: JSON or text with precision/recall metrics and confidence distributions for wreck, CLIWOC track, and crew links Tips for LLMs: - Run this to check linking quality after data updates - The confidence distribution shows how many links are high quality vs marginal - Target: 200+ CLIWOC fuzzy matches with mean confidence > 0.7 - Wreck links use exact voyage_id matching (precision = 1.0) - CLIWOC links use fuzzy ship name + date matching |
| maritime_get_speed_profileA | Get historical sailing speed statistics for a route. Returns per-segment speed profiles derived from CLIWOC ship track data, including mean, median, and standard deviation of daily distances (km/day). Optionally filtered by departure month for seasonal variation. Args: route_id: Route identifier (e.g., "outward_outer", "return"). Use maritime_list_routes to see available routes. departure_month: Optional month (1-12) for seasonal speed data. If not provided, returns all-months aggregate. output_mode: Response format — "json" (default) or "text" Returns: JSON or text with per-segment speed statistics Tips for LLMs: - Compare different months to see seasonal wind patterns (e.g., monsoon effects on Indian Ocean segments) - Use with maritime_estimate_position for more informed position estimation - High std_dev indicates variable conditions on a segment - Low sample_count means less reliable statistics - The mean_km_day can help assess whether a voyage was running ahead or behind schedule |
| maritime_get_timelineA | Build a chronological timeline of events for a voyage. Combines data from multiple archives — DAS voyages, MAARER wrecks, CLIWOC ship tracks, and route estimates — into a single chronological sequence of events. Optionally includes CLIWOC position data. Args: voyage_id: DAS voyage identifier (e.g., "5999.1") include_positions: Include CLIWOC track positions as events (default False, can add many events) max_positions: Maximum CLIWOC positions to include (default 20) output_mode: Response format — "json" (default) or "text" Returns: JSON or text with chronological event list, optional GeoJSON track, and list of data sources consulted Tips for LLMs: - Start with include_positions=False to see major events - Set include_positions=True for detailed track reconstruction - Events from different sources may have conflicting dates - The geojson field contains a LineString of all positioned events - Use maritime_get_voyage_full for non-chronological linked data |
| maritime_search_mustersA | Search GZMVOC ship-level muster records from Asian waters. Queries the Generale Zeemonsterrollen VOC database containing ship crew composition, wages, and staffing data from VOC ships stationed in Asia, 1691-1791. Complements VOC Opvarenden which records departures from the Netherlands. Args: ship_name: Ship name or partial name (case-insensitive) captain: Captain name or partial name date_range: Date range as "YYYY/YYYY" or "YYYY-MM-DD/YYYY-MM-DD" location: Muster location (e.g., Batavia, Makassar, Ceylon) das_voyage_id: Link to a specific DAS voyage identifier year_start: Filter musters from this year onward year_end: Filter musters up to this year max_results: Maximum results per page (default: 50, max: 500) cursor: Pagination cursor from a previous result's next_cursor field output_mode: Response format - "json" (default) or "text" Returns: JSON or text with matching muster records and pagination metadata Tips for LLMs: - Musters record crew composition at Asian ports, not departures - Use location to filter by port (Batavia, Makassar, Colombo, etc.) - Use year_start/year_end for temporal queries within 1691-1791 - Cross-link to DAS voyages using das_voyage_id field - Follow up with maritime_get_muster for full crew breakdown - Use maritime_compare_wages to analyze wage trends over time |
| maritime_get_musterA | Get full details for a specific ship muster record. Returns the complete GZMVOC muster record including ship name, captain, crew composition by rank, total European and Asian crew, aggregate wages, and linked DAS voyage ID. Args: muster_id: Muster record identifier (e.g., "dss_muster:0001") output_mode: Response format - "json" (default) or "text" Returns: JSON or text with full muster record details Tips for LLMs: - Use maritime_search_musters first to find the muster_id - ranks_summary shows crew counts per rank (Dutch names) - total_european + total_asian = total_crew - mean_wage_guilders is the average monthly wage across all crew - If das_voyage_id is set, use maritime_get_voyage to get voyage context - Compare with maritime_search_crew archive="dss" for individual MDB crew records from the post-VOC era (1803-1837) |
| maritime_compare_wagesA | Compare crew wage distributions between two time periods. Calculates mean and median wages for two year ranges and reports the percentage difference. Can use GZMVOC aggregate muster data (1691-1791) or MDB individual crew records (1803-1837). Args: group1_start: Start year for first comparison group group1_end: End year for first comparison group group2_start: Start year for second comparison group group2_end: End year for second comparison group rank: Optional rank filter (e.g., matroos, stuurman) origin: Optional place of origin filter (MDB crews only) source: Data source - "musters" for GZMVOC aggregate data, "crews" for MDB individual records output_mode: Response format - "json" (default) or "text" Returns: JSON or text with wage comparison statistics Tips for LLMs: - Use source="musters" for VOC Asian muster data (1691-1791) - Use source="crews" for post-VOC individual records (1803-1837) - The difference_pct shows group2 relative to group1 - Combine with rank filter to compare wages for specific roles - origin filter only works with source="crews" (MDB records) - Consider inflation: guilder purchasing power changed over time |
| maritime_search_narrativesA | Search free-text narrative content across all maritime archives. Performs full-text search across voyage particulars, wreck particulars, and loss location descriptions. All query terms must be present in a record for it to match (AND logic). Use quoted phrases for exact multi-word matching (e.g. "Cape of Good Hope"). Narrative fields searched:
- Voyage Args: query: Search text — keywords or quoted phrases (e.g. "monsoon", '"Cape of Good Hope"', "storm cannon") record_type: Limit to "voyage" or "wreck" (default: both) archive: Restrict to a specific archive ID (e.g. "eic", "carreira") max_results: Maximum results per page (default: 50, max: 500) cursor: Pagination cursor from a previous result's next_cursor output_mode: Response format — "json" (default) or "text" Returns: JSON or text with matching narrative excerpts, snippets, and pagination metadata Tips for LLMs: - Use this tool for research questions like "find mentions of monsoon across all archives" - Quoted phrases match exactly: '"East India"' finds only that phrase, not "East" and "India" separately - Multiple unquoted words use AND logic: "storm cape" finds records containing both "storm" AND "cape" - Results are ranked by relevance (number of term occurrences) - Use record_type="voyage" or "wreck" to narrow results - Use archive to limit to one archive (e.g. archive="carreira") - Follow up with maritime_get_voyage or maritime_get_wreck for full record details - If has_more is true, pass next_cursor as cursor to get the next page |
| maritime_compute_track_speedsA | Compute daily sailing speeds for a single CLIWOC voyage. Calculates haversine distance between consecutive daily logbook positions and returns speed in km/day. Optionally filters by geographic bounding box and speed bounds. Args: voyage_id: CLIWOC voyage ID (from maritime_search_tracks) lat_min: Minimum latitude for position filtering lat_max: Maximum latitude for position filtering lon_min: Minimum longitude for position filtering lon_max: Maximum longitude for position filtering min_speed_km_day: Minimum speed to include (default: 5.0, filters out anchored/drifting) max_speed_km_day: Maximum speed to include (default: 400.0, filters out data errors) output_mode: Response format - "json" (default) or "text" Returns: JSON or text with daily speed observations for the voyage Tips for LLMs: - Get voyage_id from maritime_search_tracks results - Use lat/lon bounds to focus on a specific ocean region - Speeds are in km/day (a sailing ship typically does 100-300 km/day) - Wind-driven: faster speeds indicate stronger winds - Use maritime_aggregate_track_speeds for bulk analysis across many voyages |
| maritime_aggregate_track_speedsA | Aggregate daily sailing speeds across all matching CLIWOC tracks. Computes haversine-based daily speeds from consecutive logbook positions, filters by geographic region, and aggregates by the requested dimension. Returns descriptive statistics per group. Args: group_by: Grouping dimension. Options: - "decade" — group by decade (e.g., 1750, 1760, ...) - "year" — group by individual year (e.g., 1783, 1784, ...) - "month" — group by month (1-12) - "direction" — group by eastbound/westbound - "nationality" — group by ship nationality (NL, UK, ES, ...) - "beaufort" — group by Beaufort wind force (0-12) lat_min: Minimum latitude for position bounding box lat_max: Maximum latitude for position bounding box lon_min: Minimum longitude for position bounding box lon_max: Maximum longitude for position bounding box nationality: Filter tracks by nationality code (NL, UK, ES, FR, etc.) year_start: Filter tracks starting from this year year_end: Filter tracks ending at this year direction: Filter observations by "eastbound" or "westbound" month_start: Filter by start month (1-12). Supports wrap-around with month_end (e.g., month_start=11, month_end=2 = Nov-Feb) month_end: Filter by end month (1-12). Used with month_start aggregate_by: Unit of analysis — "observation" (default, each daily speed is a data point) or "voyage" (one mean speed per voyage, statistically independent samples) min_speed_km_day: Minimum speed filter (default: 5.0) max_speed_km_day: Maximum speed filter (default: 400.0) wind_force_min: Minimum Beaufort force (0-12). Requires wind data wind_force_max: Maximum Beaufort force (0-12). Requires wind data output_mode: Response format - "json" (default) or "text" Returns: JSON or text with per-group statistics (n, mean, median, std, 95% CI, percentiles) Tips for LLMs: - Use lat_min=-50, lat_max=-30 for the Roaring Forties wind belt - group_by="decade" shows speed trends over time - group_by="direction" shows eastbound vs westbound asymmetry - group_by="beaufort" shows speed profiles by wind force - Use aggregate_by="voyage" for statistically independent samples - Use wind_force_min/max to condition on wind strength - Use maritime_compare_speed_groups for significance testing - Use maritime_did_speed_test for direction x period interaction |
| maritime_compare_speed_groupsA | Compare sailing speed distributions between two time periods. Computes daily speeds for each period, then runs a Mann-Whitney U test to determine if the difference is statistically significant. Also returns Cohen's d effect size. Args: period1_years: First period as "YYYY/YYYY" range or "YYYY,YYYY,..." list period2_years: Second period as "YYYY/YYYY" range or "YYYY,YYYY,..." list lat_min: Minimum latitude for position bounding box lat_max: Maximum latitude for position bounding box lon_min: Minimum longitude for position bounding box lon_max: Maximum longitude for position bounding box nationality: Filter tracks by nationality code direction: Filter by "eastbound" or "westbound" month_start: Filter by start month (1-12). Supports wrap-around month_end: Filter by end month (1-12). Used with month_start aggregate_by: Unit of analysis — "observation" (default) or "voyage" (one mean per voyage, statistically independent) include_samples: If True, include raw speed arrays in response min_speed_km_day: Minimum speed filter (default: 5.0) max_speed_km_day: Maximum speed filter (default: 400.0) wind_force_min: Minimum Beaufort force (0-12). Requires wind data wind_force_max: Maximum Beaufort force (0-12). Requires wind data exclude_years: Years to exclude from both periods, as "YYYY/YYYY" range or "YYYY,YYYY,..." list. output_mode: Response format - "json" (default) or "text" Returns: JSON or text with group statistics, Mann-Whitney U, z-score, p-value, and Cohen's d effect size Tips for LLMs: - Use aggregate_by="voyage" for statistically independent samples - Use wind_force_min/max to condition on Beaufort force - Use maritime_did_speed_test for formal direction x period interaction - p < 0.05 indicates statistically significant difference - Cohen's d > 0.8 indicates a large effect size - Periods accept comma-separated year lists for non-contiguous years (e.g., "1720,1728,1747" for ENSO El Nino years) |
| maritime_did_speed_testA | Formal 2x2 Difference-in-Differences test: direction x period. Tests whether the difference between eastbound and westbound speeds changed significantly between two time periods. A significant DiD means one direction gained more than the other — isolating wind changes from symmetric technology improvements. DiD = (period2_east - period1_east) - (period2_west - period1_west) Uses bootstrap resampling for confidence intervals and p-values. Defaults to voyage-level aggregation for statistically independent samples (daily observations within a voyage are autocorrelated). Args: period1_years: First period as "YYYY/YYYY" range or "YYYY,YYYY,..." list period2_years: Second period as "YYYY/YYYY" range or "YYYY,YYYY,..." list lat_min: Minimum latitude for position bounding box lat_max: Maximum latitude for position bounding box lon_min: Minimum longitude for position bounding box lon_max: Maximum longitude for position bounding box nationality: Filter tracks by nationality code month_start: Filter by start month (1-12). Supports wrap-around month_end: Filter by end month (1-12). Used with month_start aggregate_by: "voyage" (default, independent samples) or "observation" (more data but autocorrelated) n_bootstrap: Bootstrap iterations (default: 10000) min_speed_km_day: Minimum speed filter (default: 5.0) max_speed_km_day: Maximum speed filter (default: 400.0) wind_force_min: Minimum Beaufort force (0-12). Requires wind data wind_force_max: Maximum Beaufort force (0-12). Requires wind data exclude_years: Years to exclude from both periods, as "YYYY/YYYY" range or "YYYY,YYYY,..." list. output_mode: Response format - "json" (default) or "text" Returns: JSON or text with 4-cell summary, marginal diffs, DiD estimate, bootstrap 95% CI, and p-value Tips for LLMs: - Always splits by direction (eastbound vs westbound) - Use lat_min=-50, lat_max=-30 for the Roaring Forties - Positive DiD = eastbound gained more = wind strengthened - Use wind_force_min/max for Beaufort-stratified DiD - Default aggregate_by="voyage" gives correct p-values - If DiD scales with Beaufort, that is genuine wind change - Periods accept comma-separated year lists for non-contiguous years (e.g., "1720,1728,1747" for ENSO El Nino years) |
| maritime_track_tortuosityA | Compute route tortuosity for a single CLIWOC voyage. Tortuosity = path_km / net_km. A value of 1.0 means perfectly direct; higher values indicate meandering. Compares actual sailed distance (sum of position-to-position haversine legs) to great-circle distance (first to last position in bbox). Args: voyage_id: CLIWOC voyage ID (from maritime_search_tracks) lat_min: Minimum latitude for bounding box lat_max: Maximum latitude for bounding box lon_min: Minimum longitude for bounding box lon_max: Maximum longitude for bounding box min_speed_km_day: Minimum speed filter (default: 5.0) max_speed_km_day: Maximum speed filter (default: 400.0) output_mode: Response format - "json" (default) or "text" Returns: JSON or text with path_km, net_km, tortuosity_r, inferred_direction, n_in_box Tips for LLMs: - Use lat_min=-50, lat_max=-30 for the Roaring Forties - Tortuosity ~1.0-1.1 = direct sailing, >1.3 = detours - Compare pre/post-chronometer voyages to test navigation - Use maritime_aggregate_track_tortuosity for bulk analysis |
| maritime_aggregate_track_tortuosityA | Aggregate route tortuosity across CLIWOC tracks with optional comparison. Tests the chronometer hypothesis: if marine chronometers improved navigation, tortuosity should decrease over time. If tortuosity stays constant while speed DiD shows asymmetric gains, that confirms wind change rather than better routing. Args: group_by: "decade", "year", "direction", "nationality" lat_min/lat_max/lon_min/lon_max: Bounding box nationality: Filter by nationality code year_start/year_end: Filter by year range direction: Filter by "eastbound" or "westbound" month_start/month_end: Month filter (supports wrap-around) min_speed_km_day: Minimum speed filter (default: 5.0) max_speed_km_day: Maximum speed filter (default: 400.0) min_positions: Minimum positions in bbox (default: 5) r_min: Minimum tortuosity R to include (e.g. 1.0 excludes artifacts) r_max: Maximum tortuosity R to include (e.g. 5.0 excludes loiterers) period1_years: First period as "YYYY/YYYY" range or "YYYY,YYYY,..." list period2_years: Second period as "YYYY/YYYY" range or "YYYY,YYYY,..." list n_bootstrap: Bootstrap iterations (default: 10000) output_mode: Response format - "json" (default) or "text" Returns: JSON or text with per-group tortuosity stats, optional comparison Tips for LLMs: - group_by="decade" to see tortuosity trends over time - Use direction="eastbound" vs "westbound" separately - r_min=1.0, r_max=5.0 focuses on normal transit voyages - period1_years/period2_years for formal comparison with CI - Periods accept "YYYY/YYYY" ranges or "YYYY,YYYY,..." year lists - Combine with maritime_did_speed_test for complete decomposition - min_positions=5 filters out short transits |
| maritime_wind_roseA | Beaufort wind force and wind direction distributions from CLIWOC logbooks. Counts observations by Beaufort force (0-12) and compass direction (N, NE, E, SE, S, SW, W, NW) with mean speed at each level. Optionally compares distributions between two periods. Also includes distance calibration: compares logged distances from ship logbooks against haversine-computed distances from lat/lon positions. Ratio near 1.0 indicates good position accuracy. Key tool for the Kelly and O Grada approach: if recorded Beaufort distributions shift between periods, that indicates genuine wind change. If distributions are stable while speeds increase, that indicates technology improvement (hull, sails, routing). Wind direction is available for ~97% of observations. Beaufort force is available for ~17%. Returns has_wind_data/has_direction_data flags. Anchored positions are excluded by default. Args: lat_min/lat_max/lon_min/lon_max: Bounding box nationality: Filter by nationality code year_start/year_end: Filter by year range direction: Filter by "eastbound" or "westbound" month_start/month_end: Month filter (supports wrap-around) period1_years: First period as "YYYY/YYYY" range or "YYYY,YYYY,..." list period2_years: Second period as "YYYY/YYYY" range or "YYYY,YYYY,..." list min_speed_km_day: Minimum speed filter (default: 5.0) max_speed_km_day: Maximum speed filter (default: 400.0) output_mode: Response format - "json" (default) or "text" Returns: JSON or text with Beaufort + direction distribution, calibration, and optional period splits Tips for LLMs: - Use period1_years/period2_years to compare distributions - Periods accept "YYYY/YYYY" ranges or "YYYY,YYYY,..." year lists - Wind direction available even without Beaufort force data - direction_counts show prevailing wind patterns by compass sector - distance_calibration compares logged vs computed distances - Combine with group_by="beaufort" on aggregate tool for speed profiles at each wind force |
| maritime_export_speedsA | Export raw speed samples for downstream statistical analysis. Returns individual speed records with full metadata (voyage_id, year, month, direction, nationality, ship_name, wind data) so models can perform arbitrary grouping and statistical tests. Unlike maritime_aggregate_track_speeds which groups and summarises, this tool returns the underlying data. Essential for analyses requiring non-contiguous year comparisons (e.g. ENSO phase classification, volcanic event detection, arbitrary epoch testing). Args: lat_min/lat_max/lon_min/lon_max: Bounding box nationality: Filter by nationality code year_start/year_end: Filter by year range direction: Filter by "eastbound" or "westbound" month_start/month_end: Month filter (supports wrap-around) aggregate_by: "voyage" (one mean speed per voyage, recommended for statistical independence) or "observation" (each daily speed with position and wind data) min_speed_km_day: Minimum speed filter (default: 5.0) max_speed_km_day: Maximum speed filter (default: 400.0) wind_force_min/wind_force_max: Beaufort force bounds max_results: Records per page (default: 500). Use with offset for pagination through large result sets. offset: Skip this many records (default: 0). Use next_offset from previous response to get the next page. fields: Comma-separated list of fields to include in output. Observation fields: voyage_id, date, year, month, day, direction, speed_km_day, nationality, ship_name, lat, lon, wind_force, wind_direction. Voyage fields: voyage_id, year, month, direction, speed_km_day, nationality, ship_name, n_observations. Omit for all fields. output_mode: Response format - "json" (default), "text", or "csv". Use "csv" for compact tabular output (~3-4x fewer tokens than JSON). CSV includes a # metadata header. Returns: JSON, text, or CSV with speed samples and metadata Tips for LLMs: - Use output_mode="csv" to reduce token usage by ~3-4x - Combine fields="voyage_id,year,speed_km_day" with csv for minimal token footprint (~10 tokens/row vs ~50 in JSON) - Use aggregate_by="observation" to get individual dated records with full date (ISO YYYY-MM-DD), lat, lon, wind data — essential for lunar phase, tidal, or day-level temporal analyses - Use aggregate_by="voyage" for statistically independent samples - Each observation-level sample includes date, year, month, day for precise temporal correlation (e.g. lunar phase, tidal cycles) - Combine with known ENSO chronology to classify years and compute El Nino vs La Nina vs Neutral speed distributions - For tidal analysis: export observations in narrow channels (e.g. Mozambique Channel lat -26/-12, lon 35/45), use date field to compute lunar phase, correlate with speed - For Laki 1783: compare 1782-1784 samples vs surrounding years - Paginate large results: check has_more and use next_offset - Default page size is 500 records; adjust max_results as needed |
| maritime_galleon_transit_timesA | Compute transit times for Manila Galleon voyages (1565-1815). Returns per-voyage transit days (arrival_date - departure_date) for 250 years of Pacific crossings. The galleon trade provides direct tropical Pacific exposure through the ENSO-affected trade wind belt, making transit times a potential ENSO proxy. Args: trade_direction: "eastbound" (Acapulco→Manila, trade-wind route, ~75 days) or "westbound" (Manila→Acapulco, northern route, ~165 days) year_start: Earliest departure year (inclusive) year_end: Latest departure year (inclusive) fate: Filter by voyage fate ("completed", "wrecked", etc.) max_results: Maximum records to return (default: 500) output_mode: Response format - "json" (default) or "text" Returns: JSON or text with transit records and summary statistics Tips for LLMs: - Eastbound galleons are the best ENSO detector: they sail directly through the trade wind belt - During El Nino (weakened trades), eastbound crossings should take LONGER; during La Nina (stronger trades), FASTER - Westbound route goes north via Kuroshio Current at ~38N, less directly affected by tropical ENSO - Use trade_direction="eastbound" for ENSO analysis - Compare transit_days across known ENSO years vs neutral years - 213 voyages have complete transit data (of 250 total) - Mean eastbound: 75 days (std 14); westbound: 165 days (std 17) |
| maritime_wind_direction_by_yearA | Year-by-year wind direction distributions from CLIWOC logbooks. Returns 8-compass-sector wind direction distributions for each year, with ~97.5% coverage across the full 1662-1854 period. This makes it a powerful tool for detecting long-term atmospheric circulation shifts, including ENSO phases and Walker circulation changes. Args: lat_min/lat_max/lon_min/lon_max: Bounding box filter nationality: Filter by nationality code year_start/year_end: Year range filter direction: "eastbound" or "westbound" month_start/month_end: Month filter (1-12, supports wrap-around) min_speed_km_day: Minimum speed filter (default: 5.0) max_speed_km_day: Maximum speed filter (default: 400.0) output_mode: Response format - "json" (default) or "text" Returns: JSON or text with per-year sector distributions Tips for LLMs: - Wind direction has 97.5% coverage (vs 17% for Beaufort force) - Covers full 1662-1854 period — ideal for ENSO detection - In trade wind belt (lat -30 to 30): expect E/SE dominance - During El Nino: trades weaken, may shift toward variable/W - During La Nina: trades strengthen, E/SE percentages increase - Compare sector percentages across known ENSO/neutral years - Use month_start=11, month_end=2 for peak ENSO season |
| maritime_crew_demographicsA | Aggregate crew demographics by rank, origin, fate, decade, or ship. Analyses the VOC Opvarenden dataset (774K crew records) to show distributions and patterns in crew composition. Args: group_by: Dimension to group by — "rank", "origin", "fate", "decade", or "ship_name" date_range: Filter by embarkation date (e.g. "1700/1750") rank: Filter by rank substring (e.g. "matroos") origin: Filter by origin substring (e.g. "Amsterdam") fate: Filter by exact fate (e.g. "deserted") ship_name: Filter by ship name substring top_n: Number of top groups to return (default 25) output_mode: Response format — "json" (default) or "text" Returns: JSON or text with demographic breakdown Tips for LLMs: - Use group_by="origin" to study labour migration patterns - Use group_by="decade" to track workforce trends over time - Use group_by="rank" for crew composition analysis - Use group_by="fate" to see overall outcome distribution - Combine filters: rank="matroos" + group_by="decade" shows sailor recruitment trends - Each group includes a fate sub-distribution for deeper analysis |
| maritime_crew_careerA | Reconstruct career history for crew members matching a name. Searches the VOC Opvarenden dataset for all records matching the given name, groups them by individual (using name + origin), and reconstructs each person's career chronologically. Args: name: Name to search for (substring, case-insensitive) origin: Optional origin city to disambiguate (exact match) output_mode: Response format — "json" (default) or "text" Returns: JSON or text with career reconstruction(s) Tips for LLMs: - Common names may match multiple individuals; use origin to disambiguate - Look at ranks_held to see career progression (e.g. matroos -> stuurman -> schipper) - career_span_years shows how long someone served the VOC - final_fate shows how their career ended - Each voyage includes ship_name, rank, and embarkation_date |
| maritime_crew_survival_analysisA | Analyse survival, mortality, and desertion rates for VOC crews. Computes rates from the service_end_reason field across the VOC Opvarenden dataset, grouped by the chosen dimension. Args: group_by: Dimension to group by — "rank", "origin", "fate", "decade", or "ship_name" date_range: Filter by embarkation date (e.g. "1700/1750") rank: Filter by rank substring (e.g. "soldaat") origin: Filter by origin substring (e.g. "Rotterdam") top_n: Number of top groups to return (default 25) output_mode: Response format — "json" (default) or "text" Returns: JSON or text with survival analysis Tips for LLMs: - group_by="rank" reveals which ranks had highest mortality - group_by="decade" shows how mortality changed over the VOC era - group_by="origin" shows whether origin city affected survival - survival_rate = percentage who returned home - mortality_rate = percentage who died (voyage + Asia combined) - desertion_rate = percentage who deserted - Rates are per 100 crew with known fate |
| maritime_capabilitiesA | List full server capabilities: archives, tools, and reference data. Returns a comprehensive overview of this maritime archives server including all available archives, registered tools, supported ship types, and geographic regions. Call this first to understand what the server can do. Args: output_mode: Response format - "json" (default) or "text" Returns: JSON or text with server capabilities Tips for LLMs: - Call this FIRST to plan a research workflow - The archives list shows available data sources and their coverage periods - The tools list shows every registered tool with its category and description - ship_types lists valid values for vessel type filters - regions lists valid values for geographic region filters - Typical workflow: maritime_capabilities -> maritime_search_voyages or maritime_search_wrecks -> detail tools -> export/analysis |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/IBM/chuk-mcp-maritime-archives'
If you have feedback or need assistance with the MCP directory API, please join our Discord server