AI-powered sailing and yacht marketplace integration built on the Model Context Protocol (MCP). Seamlessly connects 25,000+ yacht, sailboat, and marine listings with intelligent search, analytics, and chat-based maritime insights for sailors, brokers, and developers.
Single tool with acceptable description but weak schema definition and no output schema documentation. Tool is explicitly registered in src/index.ts with server.registerTool(). Description is substantive (236 chars, within baseline 194 avg), but input schema is minimalist with only one parameter (prompt:string) lacking structured output documentation. No parameter validation, enum constraints, or error handling guidance. Missing pagination, limits, and response field documentation. The tool delegates to an external Yachtsy API via OpenAI client, but the server does not document what structure clients should expect or how to handle errors beyond a generic try-catch.
Main Yachtsy agent with automatic routing to specialized sub-agents. Intelligently routes queries to Listings Agent, General Boat Expert, or Deep Research Agent. Handles boat listings searches, yacht specifications, market trends, sailing advice, and general yacht-related questions. Example queries: 'Show me Catalina 34 sailboats under $100k', 'What are the best bluewater cruising boats?', 'Find me yacht listings in Florida'
No output schema documented. Tool returns { content: [{ type: 'text', text: result }] } but clients cannot infer structure before calling. Pattern:tool-description requires output schemas so LLMs know what fields to extract.
Input schema lacks constraints and validation. Single 'prompt' parameter is free-form string with no length limits, enum values, or format guidance. Pattern:constrained-input requires enums or ranges for known value sets.
Error handling is generic and unhelpful. Catch block returns { isError: true, content: [{ type: 'text', text: `Error: Failed to process yacht marketplace query. ${error}` }] }. Does not classify errors as retryable, user-fixable, or fatal. Does not provide recovery guidance (e.g., 'Check API key', 'Retry after 30s', 'This query type is not supported').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 49 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 39 | - | v1 |
Tool name 'yachtsy-agent' does not follow verb_noun convention. Naming should start with an action verb (e.g., 'query-yachtsy', 'search-yachts', 'get-yacht-info'). Current name is a branded product name, not an action descriptor.
No result limits or pagination. Tool streams all text from Yachtsy API without capping results or offering cursor-based pagination. If Yachtsy returns 500+ listings, entire response floods the LLM context window.
API key stored in config and passed to OpenAI client; no evidence of server-side secret injection or vault usage. If config is logged or displayed, credentials leak.