A Next.js starter template for ChatGPT Apps SDK with an MCP server that provides a doctor finder tool. Includes widget rendering, doctor search by symptom/specialty, and integration with ChatGPT's native APIs.
Single tool 'find_doctor' has a clear action verb and reasonable description (127 chars), but critical gaps undermine quality. Input schema uses Zod with optional query parameter and description present, but lacks type constraints (enum, pattern, length limits). No output schema is documented, the response includes 'structuredContent' with doctors array and metadata, but LLMs cannot infer the structure of Doctor objects or pagination behavior. No error handling guidance (what if query matches no doctors? what if the service fails?). The tool is read-only and low-risk, but definition incompleteness prevents confident LLM usage.
Find and recommend doctors based on specialty, symptoms, or medical needs. Returns a list of qualified medical professionals.
Output schema not documented. Response includes 'structuredContent' with doctors array, but LLMs cannot infer Doctor object structure (fields, types, required properties). This forces LLMs to guess at response shape and risks misuse of returned data.
Input parameter 'query' lacks constraints. No enum, pattern, length limits, or format guidance. Description mentions examples ('heart problems', 'pediatrician', 'skin rash') but does not specify valid ranges, required format, or what happens if query is empty/null.
No error handling or recovery guidance. Tool description does not explain what happens if no doctors match the query, if the service fails, or how to retry. LLMs have no guidance on next steps if the call fails.
No pagination or result limits documented. If many doctors match a query, the response could be very large. No mention of limit, offset, page_size, or total_count in the tool description or schema.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2025-06-18+ | v2 |
Tool description does not explain when to use this tool vs. alternatives, or what prerequisites exist. A more complete description would state: 'Use this to find doctors by specialty or symptom. Returns up to N doctors with name, specialty, rating, and contact info. If no match, returns empty list.'