MCP server for readonly Taiwan market context artifacts. Exposes local readonly M5F context tools for unified market evidence validation, preview, result reading, AI handoff, and bounded market evidence retrieval.
Static source inference · medium confidence · evidence: structured output
No deprecated protocol patterns detected
Summary
This is a specialized market data intelligence server with 6 tools. Tools are explicitly registered with schemas and descriptions visible in tool_contracts.py. The server is internally coherent for a niche domain but lacks the clarity and documentation expected of production-grade agent tools.
Input schemas for tools 2-6 reference external JSON Schema files that are not visible in the provided source. Cannot verify parameter type definitions, constraints, or descriptions for 'unified_market_evidence_request.v1/v2/v3' objects.
Tool descriptions are too brief (46-110 characters) and lack actionable context. Current descriptions do not explain WHEN to call each tool instead of others, what the tool returns, or error recovery paths. Example: 'Describe governed local capability support' lacks context on prerequisites, output structure, or when an LLM should invoke it.
Expand tool descriptions to 150-250 characters. Include: (1) What the tool does in one sentence, (2) When to call it vs similar tools, (3) What it returns, (4) Any prerequisites (e.g., 'First call market_fetch_evidence, then market_read_result to inspect the result'). Example: 'Validate a market evidence request before execution. Call this to preview impacts and catch errors early without side effects. Returns validation errors or confirmation. Prerequisite: you have a request object from the agent.'
Add descriptions to all parameters. For control_package_id, write: 'The unique identifier of a finalized market control package, generated by market_fetch_evidence. Format: umea-v1-<20 hex digits>. Example: umea-v1-0123456789abcdef0123'
Provide the full schemas for unified_market_evidence_request.v1/v2/v3 in the submission. Show all property definitions, types, and descriptions for each version so that parameter schemas can be verified.
Document the tool workflow as a sequence diagram or text: (1) Agent calls market_describe_capabilities → learns supported request types, (2) Agent constructs a request object or calls market_validate_request, (3) If valid, agent calls market_preview_request → sees offline impact, (4) If preview acceptable, agent calls market_fetch_evidence → executes and returns control_package_id, (5) Agent calls market_read_result or market_export_ai_handoff with that ID to inspect results.
Rename 'market_read_result' to 'market_fetch_result' (clearer verb) or add description: 'Retrieve and verify the result of a finalized market evidence retrieval. This is a read-only inspection, it does not execute, cancel, or modify the package.'
Tool naming lacks clear action verbs that convey intent. 'market_read_result' does not indicate whether it fetches, parses, or validates. 'market_export_ai_handoff' is opaque, does it serialize, download, or transform? Current names are domain-specific jargon that may confuse LLMs without market domain knowledge.
No documented tool composition or dependency graph. Tools reference 'control_package_id' and 'unified_market_evidence_request' objects, but the server does not document: which tools produce these artifacts, which tools consume them, or the expected workflow. Agents cannot reason about multi-step sequences without this guidance.
Parameter descriptions are completely missing in visible tool definitions. The control_package_id parameter for tools 4-5 has no description explaining what it is, where it comes from, or why the pattern '^umea-v1-[0-9a-f]{20}$' exists.
Output schemas are not documented. No indication of what 'market_describe_capabilities' returns, what structure 'market_validate_request' produces, or how to interpret results from 'market_fetch_evidence'.
'market_fetch_evidence' is marked as WRITE with open-world risk (openWorldHint=true), but the tool description says 'bounded conversation-triggered' without explaining what makes it safe. No dry-run or confirmation mechanism visible. Per pattern, irreversible operations should support confirmation or dry-run to prevent agent mistakes.
market_fetch_evidence
Rename 'market_export_ai_handoff' to 'market_get_execution_summary' (clearer intent) and clarify: 'Extract a structured, LLM-optimized summary of a market evidence execution. Returns data suitable for agent reasoning, not executable instructions. Call after market_fetch_evidence succeeds.'
Add output schema documentation for each tool. Use a JSON Schema comment or separate section describing return structure. Example: market_fetch_evidence returns {control_package_id, execution_timestamp, evidence_count, next_steps}.
For market_fetch_evidence (WRITE operation), document error recovery: 'On network timeout, the request may still execute server-side. Call market_read_result with the control_package_id (if available) to verify. On validation error, review market_validate_request output and retry.'
Add enum constraints to any request parameters if certain fields have known valid values (e.g., market_type, evidence_category). Replace free-form strings with enums to prevent hallucinated values.
Document idempotency expectations. If market_fetch_evidence with the same request produces the same control_package_id, state this explicitly. Agents rely on idempotent behavior to retry safely.