{"ok":true,"site":{"host":"dopenoun.github.io","url":"https://dopenoun.github.io/boomer-buddy-webmcp-challenge/","type":"live","desc":"A synthetic, confirmation-first WebMCP demo that helps an older adult understand an appointment notice without taking external action.","tools":[{"name":"get_current_case","kind":"answer","impl":"imperative","description":"Read the same synthetic case, untrusted source notice, summary, proposals, and local outcomes visible on this page. Read-only; no state mutation or external action.","title":"Read the synthetic appointment case","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/boomer-buddy-webmcp-challenge/"},{"name":"set_plain_language_summary","kind":"act","impl":"imperative","description":"Replace the visible local explanation immediately. Does not alter the source notice, committed case fields, or any external system.","title":"Show a plain-language explanation","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"caseId":{"type":"string","const":"synthetic-case-001","description":"The one synthetic demo case."},"expectedCaseVersion":{"type":"integer","minimum":1,"description":"Latest visible case version."},"summary":{"type":"object","properties":{"whatThisIs":{"type":"string","minLength":1,"maxLength":280},"whatNeedsAttention":{"type":"string","minLength":1,"maxLength":280},"deadline":{"type":["string","null"],"maxLength":160},"nextStep":{"type":"string","minLength":1,"maxLength":280}},"required":["whatThisIs","whatNeedsAttention","deadline","nextStep"],"additionalProperties":false}},"required":["caseId","expectedCaseVersion","summary"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/boomer-buddy-webmcp-challenge/"},{"name":"propose_field_value","kind":"act","impl":"imperative","description":"Create a visible local field proposal only. The committed field stays unchanged until a person separately confirms it with a page button.","title":"Propose a synthetic field value","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"caseId":{"type":"string","const":"synthetic-case-001"},"expectedCaseVersion":{"type":"integer","minimum":1},"fieldId":{"type":"string","enum":["attendance_status","preferred_contact"]},"proposedValue":{"type":"string","minLength":1,"maxLength":80},"reason":{"type":"string","minLength":1,"maxLength":240}},"required":["caseId","expectedCaseVersion","fieldId","proposedValue","reason"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/boomer-buddy-webmcp-challenge/"},{"name":"propose_reply","kind":"act","impl":"imperative","description":"Create a visible unsent reply proposal for human review. Even human confirmation approves only a local draft; this tool never sends anything.","title":"Propose an unsent reply","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"caseId":{"type":"string","const":"synthetic-case-001"},"expectedCaseVersion":{"type":"integer","minimum":1},"replyText":{"type":"string","minLength":1,"maxLength":600},"reason":{"type":"string","minLength":1,"maxLength":240}},"required":["caseId","expectedCaseVersion","replyText","reason"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/boomer-buddy-webmcp-challenge/"},{"name":"propose_reminder","kind":"act","impl":"imperative","description":"Create a visible local reminder proposal only. Even human confirmation saves only page memory and schedules no alert, calendar event, or notification.","title":"Propose a page-local reminder","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"caseId":{"type":"string","const":"synthetic-case-001"},"expectedCaseVersion":{"type":"integer","minimum":1},"title":{"type":"string","minLength":1,"maxLength":120},"dueLocal":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$"},"note":{"type":"string","minLength":1,"maxLength":240}},"required":["caseId","expectedCaseVersion","title","dueLocal"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/boomer-buddy-webmcp-challenge/"},{"name":"get_change_receipt","kind":"answer","impl":"imperative","description":"Read the same ordered local receipt, decisions, final synthetic values, and zero-external-effects summary visible on this page. Read-only.","title":"Read the visible change receipt","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"caseId":{"type":"string","const":"synthetic-case-001"}},"required":["caseId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/boomer-buddy-webmcp-challenge/"}],"apiSurface":"spec","category":"AI & Agents","toolCount":6}}