{"schemaVersion":"1.0","contractVersion":"2026-09-04.1","auditedAt":"2026-09-04","artifactClass":"tool_contract_catalog_not_protocol_metadata","standardProfile":{"imperativeApi":"https://developer.chrome.com/docs/ai/webmcp/imperative-api","declarativeApi":"https://developer.chrome.com/docs/ai/webmcp/declarative-api","securityGuidance":"https://developer.chrome.com/docs/ai/webmcp/secure-tools"},"privacyBoundary":{"containsHealthInformation":false,"readsCurrentBrowserSession":false,"readsMedicalWorkflowState":false,"persistence":"static public JSON"},"summary":{"tools":10,"declarative":2,"imperative":8,"readOnlyBehavior":8,"stateChanging":2,"writeAuthority":0,"untrustedOutput":7,"withinChromeGuidance":10},"contracts":[{"name":"search_public_trial_form","title":"Search public trial registries","description":"Search public TFDA and ClinicalTrials.gov cancer trial records by an English or Traditional Chinese general condition. Shows the bilingual registry query plan and results visibly.","inputSchema":{"type":"object","properties":{"condition":{"type":"string","description":"General non-sensitive cancer condition; never paste a medical record or identifier.","minLength":2,"maxLength":120},"includeNotOpen":{"type":"boolean","description":"Include public records that are not currently accepting participants."}},"required":["condition"],"additionalProperties":false},"kind":"Declarative","registration":"visible_form","availabilityGroup":"public","availability":"Visible on /trials","boundary":"Public condition only","humanControl":"The visible form is focused, populated, and remains reviewable.","recovery":"Validation stays beside the visible form; a failed registry preserves source-level recovery.","untrustedOutput":true,"sourceFile":"app/components/TrialDatabase.tsx","parameters":[{"name":"condition","type":"string","description":"General non-sensitive cancer condition; never paste a medical record or identifier.","required":true,"minLength":2,"maxLength":120},{"name":"includeNotOpen","type":"boolean","description":"Include public records that are not currently accepting participants.","required":false}],"readOnlyBehavior":true,"stateEffect":null,"browserHints":null,"budgets":{"nameCharacters":24,"nameLimit":30,"descriptionCharacters":179,"descriptionLimit":500,"maxParameterDescriptionCharacters":83,"parameterDescriptionLimit":150,"outputCharacterLimit":1500,"withinGuidance":true}},{"name":"trialbridge_method","title":"Explain TrialBridge TW method","description":"Use for any request to explain how TrialBridge TW searches for trials, prioritizes Taiwan then Asia then worldwide, protects information, chooses registry sources, or describes limitations. Call this tool to retrieve the site's authoritative method instead of answering from the description alone. No input or patient context is required.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"readOnlyHint":true},"kind":"Imperative","registration":"registerTool","availabilityGroup":"public","availability":"Always public","boundary":"No patient context","humanControl":"Explains product method only; no workflow state changes.","recovery":"No input is required; unsupported browsers retain the human method page.","untrustedOutput":false,"sourceFile":"lib/webmcp/tools.ts","parameters":[],"readOnlyBehavior":true,"stateEffect":null,"browserHints":{"readOnlyHint":true,"untrustedContentHint":false},"budgets":{"nameCharacters":18,"nameLimit":30,"descriptionCharacters":338,"descriptionLimit":500,"maxParameterDescriptionCharacters":0,"parameterDescriptionLimit":150,"outputCharacterLimit":1500,"withinGuidance":true}},{"name":"search_public_cancer_trials","title":"Search public cancer trials","description":"Search public TFDA and ClinicalTrials.gov records by a non-sensitive cancer topic. Returns at most five source-linked records.","inputSchema":{"type":"object","properties":{"condition":{"type":"string","description":"General non-sensitive cancer condition; never include a medical record.","minLength":2,"maxLength":120}},"required":["condition"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"kind":"Imperative","registration":"registerTool","availabilityGroup":"public","availability":"Always public","boundary":"Bilingual query plan · untrusted registry output","humanControl":"Accepts one general cancer topic and never a medical record.","recovery":"Returns per-registry timeout/unavailable state and a visible-search fallback.","untrustedOutput":true,"sourceFile":"lib/webmcp/tools.ts","parameters":[{"name":"condition","type":"string","description":"General non-sensitive cancer condition; never include a medical record.","required":true,"minLength":2,"maxLength":120}],"readOnlyBehavior":true,"stateEffect":null,"browserHints":{"readOnlyHint":true,"untrustedContentHint":true},"budgets":{"nameCharacters":27,"nameLimit":30,"descriptionCharacters":126,"descriptionLimit":500,"maxParameterDescriptionCharacters":71,"parameterDescriptionLimit":150,"outputCharacterLimit":1500,"withinGuidance":true}},{"name":"organize_summary_form","title":"Organize a de-identified note","description":"Fill the visible TrialBridge note with a de-identified cancer summary (no names, contact details, ID or record numbers, birth dates, or addresses). The person reviews the note and starts cloud organization; the browser masks identifiers first and every extracted fact still needs human confirmation.","inputSchema":{"type":"object","properties":{"summary":{"type":"string","description":"De-identified cancer summary in English or Traditional Chinese; the person still reviews and submits it.","minLength":20,"maxLength":4000}},"required":["summary"],"additionalProperties":false},"kind":"Declarative","registration":"visible_form","availabilityGroup":"intake","availability":"Note step · agent intake permission on","boundary":"De-identified summary only · masked in the browser","humanControl":"The agent may fill the visible note; only the person starts organization and confirms every fact.","recovery":"The person can edit the note, retry, or switch off agent intake permission at any time.","untrustedOutput":false,"sourceFile":"app/components/TrialBridgeChat.tsx","readOnlyBehavior":false,"stateEffect":"Fills the visible note; organization starts only on the person's submit.","parameters":[{"name":"summary","type":"string","description":"De-identified cancer summary in English or Traditional Chinese; the person still reviews and submits it.","required":true,"minLength":20,"maxLength":4000}],"browserHints":null,"budgets":{"nameCharacters":21,"nameLimit":30,"descriptionCharacters":299,"descriptionLimit":500,"maxParameterDescriptionCharacters":104,"parameterDescriptionLimit":150,"outputCharacterLimit":1500,"withinGuidance":true}},{"name":"organize_deidentified_summary","title":"Organize a de-identified summary","description":"Call only when the person asked to organize their own de-identified cancer summary and the visible note step shows agent intake permission on. Accepts summary text without names, contact details, ID or record numbers, birth dates, or addresses; any direct identifier is rejected before it enters the page. Starts the same masked cloud organization the person would start; every extracted fact still needs human confirmation. Never confirms facts, matches, enrolls, or sends.","inputSchema":{"type":"object","properties":{"summary":{"type":"string","description":"De-identified summary (English or Traditional Chinese): diagnosis, stage, biomarkers, treatments, age band, travel range. No identifiers.","minLength":20,"maxLength":4000}},"required":["summary"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"untrustedContentHint":false},"kind":"Imperative","registration":"registerTool","availabilityGroup":"intake","availability":"Note step · agent intake permission on","boundary":"Direct identifiers rejected before anything enters the page","humanControl":"Starts cloud organization only; every extracted fact still needs human confirmation, and no match, enrollment, or message follows.","recovery":"Names the identifier kinds to remove, or returns organizing/failed states with the visible workflow as the fallback.","untrustedOutput":false,"sourceFile":"lib/webmcp/tools.ts","readOnlyBehavior":false,"stateEffect":"Appends the summary to the visible note and starts the masked cloud organization step; disappears once organization starts.","parameters":[{"name":"summary","type":"string","description":"De-identified summary (English or Traditional Chinese): diagnosis, stage, biomarkers, treatments, age band, travel range. No identifiers.","required":true,"minLength":20,"maxLength":4000}],"browserHints":{"readOnlyHint":false,"untrustedContentHint":false},"budgets":{"nameCharacters":29,"nameLimit":30,"descriptionCharacters":474,"descriptionLimit":500,"maxParameterDescriptionCharacters":137,"parameterDescriptionLimit":150,"outputCharacterLimit":1500,"withinGuidance":true}},{"name":"review_trial_followups","title":"Review pending trial questions","description":"Call when results are waiting for more information. Lists current registry-derived questions for the visible form; never records or confirms answers.","inputSchema":{"type":"object","properties":{"language":{"type":"string","description":"Language for the pending questions and recovery guidance.","enum":["zh-Hant","en"]}},"required":["language"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"kind":"Imperative","registration":"registerTool","availabilityGroup":"permission","availability":"Permission-gated","boundary":"Questions only · never records answers","humanControl":"Answers and unknown choices remain in the visible form.","recovery":"Explains matching-in-progress, results-ready, or no-pending-question states.","untrustedOutput":true,"sourceFile":"lib/webmcp/tools.ts","parameters":[{"name":"language","type":"string","description":"Language for the pending questions and recovery guidance.","required":true,"enum":["zh-Hant","en"]}],"readOnlyBehavior":true,"stateEffect":null,"browserHints":{"readOnlyHint":true,"untrustedContentHint":true},"budgets":{"nameCharacters":22,"nameLimit":30,"descriptionCharacters":149,"descriptionLimit":500,"maxParameterDescriptionCharacters":57,"parameterDescriptionLimit":150,"outputCharacterLimit":1500,"withinGuidance":true}},{"name":"explain_confirmed_matches","title":"Explain confirmed-profile trial matches","description":"Call when a user asks why current trials are grouped or how current results compare. Returns confirmed, de-identified match explanations; raw notes are unavailable.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"kind":"Imperative","registration":"registerTool","availabilityGroup":"permission","availability":"Permission-gated","boundary":"Confirmed, de-identified context only","humanControl":"Reads current visible results without deciding eligibility.","recovery":"The visible workflow remains available when the capability is absent.","untrustedOutput":true,"sourceFile":"lib/webmcp/tools.ts","parameters":[],"readOnlyBehavior":true,"stateEffect":null,"browserHints":{"readOnlyHint":true,"untrustedContentHint":true},"budgets":{"nameCharacters":25,"nameLimit":30,"descriptionCharacters":164,"descriptionLimit":500,"maxParameterDescriptionCharacters":0,"parameterDescriptionLimit":150,"outputCharacterLimit":1500,"withinGuidance":true}},{"name":"draft_trial_outreach","title":"Draft trial outreach","description":"Call only to draft a message to a study team about one specific current trial. Never use for a doctor or care-team summary; creates but never sends.","inputSchema":{"type":"object","properties":{"trialId":{"type":"string","description":"Canonical ID of one currently displayed trial match.","minLength":1,"maxLength":120},"language":{"type":"string","description":"Language for the editable, unsent draft.","enum":["zh-Hant","en"]}},"required":["trialId","language"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"kind":"Imperative","registration":"registerTool","availabilityGroup":"permission","availability":"Permission-gated","boundary":"Creates an unsent draft","humanControl":"The person reviews and sends outside TrialBridge, if desired.","recovery":"Rejects trial IDs outside current visible results and points back to result review.","untrustedOutput":true,"sourceFile":"lib/webmcp/tools.ts","parameters":[{"name":"trialId","type":"string","description":"Canonical ID of one currently displayed trial match.","required":true,"minLength":1,"maxLength":120},{"name":"language","type":"string","description":"Language for the editable, unsent draft.","required":true,"enum":["zh-Hant","en"]}],"readOnlyBehavior":true,"stateEffect":null,"browserHints":{"readOnlyHint":true,"untrustedContentHint":true},"budgets":{"nameCharacters":20,"nameLimit":30,"descriptionCharacters":148,"descriptionLimit":500,"maxParameterDescriptionCharacters":52,"parameterDescriptionLimit":150,"outputCharacterLimit":1500,"withinGuidance":true}},{"name":"draft_trial_discussion_brief","title":"Draft a care-team trial discussion brief","description":"Call when a user wants to organize current results for their doctor or care team. Uses all current matches; input is language only, never trialId. Not a study-team message.","inputSchema":{"type":"object","properties":{"language":{"type":"string","description":"Output language only; the brief already uses all current matches.","enum":["zh-Hant","en"]}},"required":["language"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"kind":"Imperative","registration":"registerTool","availabilityGroup":"permission","availability":"Permission-gated","boundary":"Local care-team brief · never sent","humanControl":"The person previews and explicitly downloads the local brief.","recovery":"Invalid language receives a supported-language correction.","untrustedOutput":true,"sourceFile":"lib/webmcp/tools.ts","parameters":[{"name":"language","type":"string","description":"Output language only; the brief already uses all current matches.","required":true,"enum":["zh-Hant","en"]}],"readOnlyBehavior":true,"stateEffect":null,"browserHints":{"readOnlyHint":true,"untrustedContentHint":true},"budgets":{"nameCharacters":28,"nameLimit":30,"descriptionCharacters":172,"descriptionLimit":500,"maxParameterDescriptionCharacters":65,"parameterDescriptionLimit":150,"outputCharacterLimit":1500,"withinGuidance":true}},{"name":"compare_shortlisted_trials","title":"Compare the visible trial shortlist","description":"Call only when a user asks to compare trials they already added to the visible shortlist. Reads two or three user-selected trials; never chooses or changes the shortlist.","inputSchema":{"type":"object","properties":{"language":{"type":"string","description":"Output language only; trial IDs come from the visible user-controlled shortlist.","enum":["zh-Hant","en"]}},"required":["language"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"untrustedContentHint":true},"kind":"Imperative","registration":"registerTool","availabilityGroup":"shortlist","availability":"2–3 visible selections","boundary":"Reads only the user-controlled shortlist","humanControl":"The person chooses, orders, and removes every compared trial.","recovery":"If fewer than two current selections remain, asks the person to select result cards.","untrustedOutput":true,"sourceFile":"lib/webmcp/tools.ts","parameters":[{"name":"language","type":"string","description":"Output language only; trial IDs come from the visible user-controlled shortlist.","required":true,"enum":["zh-Hant","en"]}],"readOnlyBehavior":true,"stateEffect":null,"browserHints":{"readOnlyHint":true,"untrustedContentHint":true},"budgets":{"nameCharacters":26,"nameLimit":30,"descriptionCharacters":170,"descriptionLimit":500,"maxParameterDescriptionCharacters":80,"parameterDescriptionLimit":150,"outputCharacterLimit":1500,"withinGuidance":true}}],"evidenceBoundary":"Static implementation contracts only. This catalog is not a WebMCP protocol endpoint and does not prove current-browser discovery, execution, or Inspector behavior."}