An MCP server for interacting with Piece's RAG models for real-time search and AI-powered recommendations
Two tools with explicit schemas and descriptions, but multiple significant gaps reduce quality. Both tools have reasonable naming (verb_resource pattern), documented parameters with types, and descriptions present. However, descriptions lack LLM-optimization depth, output schemas are completely undocumented, and error handling is minimal (generic catch-all returning 'Error: {str(e)}'). The `format_results` function is incomplete in the provided source, leaving uncertainty about actual output structure. Parameter documentation is present but could be more actionable. No examples of enum validation preventing hallucinated values, and the helper function signature references an undefined type `AIRecommendationsResponse`. Tools are read-only (safe), but lack error recovery guidance and idempotency markers.
Fetch AI-powered recommendations from Piece by processing the provided query with a selected data model that tailors results to specific interests. - **Sports News (dm_01j0pb465keqmatq9k83dthx34):** Get real-time news, updates, and personalized content from top sports sources. - **Lifestyle News (dm_01j0q82s4bfjmsqkhs3ywm3x6y):** Access current lifestyle updates, analysis, and insights from leading lifestyle publications. - **iHeartDogs AI (dm_01j1sz8t3qe6v9g8ad102kvmqn):** Tap into a dog care expert with access to thousands of articles covering pet health, behavior, grooming, and ownership. - **iHeartCats AI (dm_01j1sza0h7ekhaecys2p3y0vmj):** Utilize a cat care specialist that provides comprehensive content on cat health, behavior, and lifestyle. - **GreenMonster (dm_01j5xy9w5sf49bm6b1prm80m27):** Receive guidance for making conscious and compassionate choices benefiting people, animals, and the planet. - **WISH-TV AI (dm_01jagy9nqaeer9hxx8z1sk1jx6):** Get recommendations covering sports, breaking news, politics, multicultural updates, and more. Based on the chosen `data_model_id`, the tool processes the input query and returns a formatted summary including article titles, summaries, images, source URLs, publication dates, and relevance scores.
Retrieve real-time search data from Piece by processing an AI model that supports two key capabilities: - Real-Time Web Search: Access the latest news, stock market data, weather, travel information, deals, and more using model `am_01j06ytn18ejftedz6dyhz2b15`. Use this model when no stock ticker symbol is provided. - Stock Market Data: Retrieve real-time financial news, stock prices, and trade updates using model `am_01j749h8pbf7ns8r1bq9s2evrh`. Use this model only when a stock ticker symbol is provided. Based on the provided `ai_model_id`, the tool selects the appropriate model and returns search results.
Output schema completely undocumented. Both tools return `str` with no field or structure documentation. LLMs cannot parse results or plan downstream operations without knowing response format.
Generic error handling with no recovery guidance. Both tools catch all exceptions and return 'Error: {str(e)}', which is non-actionable for LLMs. No categorization (retryable vs fatal), no suggestions for corrective actions, no structured error codes.
Missing pagination parameters. `piece_real_time_search` hardcodes `similarity_top_k=5, num_articles_ref=5` instead of exposing these as parameters. `piece_ai_recommendations` exposes `similarity_top_k` but defaults to 9 with no maximum stated. No `limit` or `offset` documented for managing result size.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 7 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 52 | - | v1 |
Tool descriptions are informative but lack LLM-optimization guidance. Descriptions for both tools (300+ chars each) exceed baseline and bury key usage hints. Description for `piece_real_time_search` does not clearly state WHEN to use each model (should be concise conditional: 'Use model X for web search, model Y for stock data only').
Incomplete source code prevents verification of output structure. The `format_results()` function is cut off mid-implementation. Cannot verify what fields are actually returned, whether response includes chaining IDs (e.g., article IDs, sources), or if results are stripped of unnecessary metadata.
Enum constraint descriptions use wordy explanations instead of relying on JSON Schema enum validation. Parameter descriptions for `ai_model_id` and `data_model_id` repeat model IDs verbosely in text; the enum values themselves are authoritative and should be the single source of truth.