{"ok":true,"site":{"host":"webmcp-cpgrams-simulation.vercel.app","url":"https://webmcp-cpgrams-simulation.vercel.app/","type":"live","desc":"A WebMCP-powered public grievance sandbox: your own browser agent helps you file, track, remind, rate and appeal grievances through structured tools and human-controlled actions. Simulation,…","tools":[{"name":"get_app_state","kind":"answer","impl":"imperative","description":"Snapshot of the citizen's case workspace: current screen, language, case counts by status, which cases need attention today (SLA overdue / unrated / appeal-eligible), and which write actions are currently available. Start here. Returns JSON {ok, speakable, data:{view, lang, counts, attention:[{regId,subject,why}], can:{...}}, nextActions}. Read-only.","title":"Get app state","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"list_grievance_categories","kind":"answer","impl":"imperative","description":"Categories this simulation accepts, routed to Central Ministries/Departments (Railways, EPFO, Health, Education, Power, Consumer Affairs) with a 21-day redressal target. Titles return in ONE locale (default en; pass lang:'hi' for Hindi). Use before filing so category ids are valid. Returns JSON {ok, speakable, data:{categories:[{id,title,ministry,needsEvidence}],redressalTargetDays}, nextActions}. Read-only.","title":"List grievance categories","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"lang":{"type":"string","enum":["en","hi"],"description":"Locale for category titles; default en."}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_grievance_details","kind":"answer","impl":"imperative","description":"Full record of one grievance by registration ID (e.g. PG-26-03877): subject, description, relief requested, ministry, status, evidence list, interim reply, reminders, disposal, rating, appeal, and the movement timeline. Input: {grievanceId}. Returns JSON {ok, speakable, data:{grievance}, nextActions}. Read-only.","title":"Get grievance details","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"grievanceId":{"type":"string","description":"Registration ID (PG-26-XXXXX) or internal id."}},"required":["grievanceId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_sla_status","kind":"answer","impl":"imperative","description":"SLA picture for one grievance (input {grievanceId}) or ALL of the citizen's cases (no input): days elapsed vs the 21-day target, whether an interim reply exists, and the honest next action (wait / remind / rate / appeal). This answers 'which grievance needs attention today?'. Returns JSON {ok, speakable, data:{cases:[{regId,subject,phase,daysElapsed,target,needsAttention,reason,eligibleActions}]}}. Read-only.","title":"Get SLA status","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"grievanceId":{"type":"string","description":"Optional: one registration ID; omit to survey all cases."}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_kb_answer","kind":"answer","impl":"imperative","description":"Plain-language answers about grievance process rules in this simulation: the 21-day target, interim replies, reminders, rating & appeals, exclusions, and the simulation's honesty policy. Input {question}. Returns JSON {ok, speakable, data:{answer, topic}, nextActions}. Read-only.","title":"Get process answer","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"question":{"type":"string","description":"The citizen's process question, 6–300 chars."}},"required":["question"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"check_duplicate_grievances","kind":"answer","impl":"imperative","description":"Before filing, check whether the citizen already has a similar open grievance (input {keywords, optional categoryId}). Avoids duplicate filings. Returns JSON {ok, speakable, data:{matches:[{regId,subject,status}]}}. Read-only.","title":"Check duplicates","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"keywords":{"type":"string","description":"Key terms of the new issue, e.g. 'EPF withdrawal stuck'."},"categoryId":{"type":"string","description":"Optional category id from list_grievance_categories."}},"required":["keywords"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_voice_mode","kind":"act","impl":"imperative","description":"Turn the portal's voice narration on or off (input {enabled: boolean}). When on, the page SPEAKS key citizen moments aloud in their language — the registration ID after filing, approval prompts, reminders, ratings, appeals — alongside the screen-reader live announcements that stay active either way. Use for citizens who prefer listening. Reversible preference, no confirmation needed. Returns JSON {ok, speakable, data:{voiceMode}}.","title":"Set voice mode","annotations":{},"inputSchema":{"type":"object","properties":{"enabled":{"type":"boolean","description":"true to enable page narration, false to disable."}},"required":["enabled"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"create_grievance_draft","kind":"act","impl":"imperative","description":"Prepare a structured grievance draft for the citizen to review (no submission happens). Input {categoryId, subject (8-120), description (20-1200), reliefRequested (4-300)}. Get category ids from list_grievance_categories. The draft appears on the portal for the citizen to edit and confirm. Returns JSON {ok, speakable, data:{draft}, nextActions}. Reversible — no confirmation needed.","title":"Create grievance draft","annotations":{"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"categoryId":{"type":"string","description":"Category id from list_grievance_categories."},"subject":{"type":"string","description":"Short headline, 8–120 chars."},"description":{"type":"string","description":"Facts of the case, 20–1200 chars. No sensitive IDs or passwords."},"reliefRequested":{"type":"string","description":"The specific outcome wanted, 4–300 chars."}},"required":["categoryId","subject","description","reliefRequested"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"send_reminder","kind":"transact","impl":"imperative","description":"Send a Reminder on a pending grievance past its 21-day target (C5). CONSEQUENTIAL: the citizen confirms in the page first (first call returns CONFIRMATION_REQUIRED; retry identical arguments after approval). Input {grievanceId}. At most one reminder per 7 days per case. Returns JSON {ok, speakable, data:{regId,reminders}}.","title":"Send reminder","inputSchema":{"type":"object","properties":{"grievanceId":{"type":"string","description":"Registration ID (PG-26-XXXXX)."}},"required":["grievanceId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"rate_disposal","kind":"act","impl":"imperative","description":"Record the citizen's feedback on a disposed grievance (C6). CONSEQUENTIAL: confirm with the citizen first (first call returns CONFIRMATION_REQUIRED; retry identical arguments after approval). Input {grievanceId, rating: Satisfactory|Average|Poor}. A Poor rating opens the 30-day appeal window — after which create_appeal_draft becomes available. Returns JSON {ok, speakable, data:{regId,rating}}.","title":"Rate disposal","inputSchema":{"type":"object","properties":{"grievanceId":{"type":"string","description":"Registration ID (PG-26-XXXXX)."},"rating":{"type":"string","enum":["Satisfactory","Average","Poor"],"description":"The citizen's satisfaction with the disposal."}},"required":["grievanceId","rating"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"favicon":"/favicons/webmcp-cpgrams-simulation.vercel.app.svg","apiSurface":"spec","category":"Developer Tools","toolCount":10}}