{"schemaVersion":"1.0","auditedAt":"2026-09-02","artifactClass":"competition_evidence_not_protocol_metadata","standardProfile":{"upstreamDraft":"https://webmachinelearning.github.io/webmcp/","upstreamCommit":"41d12f0","chromeGuide":"https://developer.chrome.com/docs/ai/webmcp","webMcpTypes":"0.1.5"},"privacyBoundary":{"containsHealthInformation":false,"readsCurrentBrowserSession":false,"readsMedicalWorkflowState":false,"persistence":"static public JSON"},"summary":{"declarativeTools":2,"imperativeTools":8,"writeOrEnrollmentTools":0,"criticalJourneySteps":5,"conformanceItems":10,"specificationClauses":8,"webMcpVisitorInstallRequired":false,"liveAgentRehearsalScenarios":4,"fixedPublicBrowserExecution":true,"quickJudgeRoute":"/webmcp/quickstart","agentDiscoveryRoute":"/webmcp/agent-guide.md","manualInspectorCases":6,"toolContracts":10,"capabilityStates":5,"runtimeAcceptanceChecks":6,"recordedBrowserRuntimeChecksPassed":6,"recordedInspectorExtensionChecksPassed":3,"recordedInspectorExtensionChecksTotal":6,"recordedAgenticPagesPassed":2,"repositoryVerified":7,"recordedBrowserRuntime":1,"recordedModelEval":1,"manualGate":1},"capabilities":[{"name":"search_public_trial_form","kind":"Declarative","availability":"Visible on /trials","boundary":"Public condition only"},{"name":"trialbridge_method","kind":"Imperative","availability":"Always public","boundary":"No patient context"},{"name":"search_public_cancer_trials","kind":"Imperative","availability":"Always public","boundary":"Bilingual query plan · untrusted registry output"},{"name":"organize_summary_form","kind":"Declarative","availability":"Note step · agent intake permission on","boundary":"De-identified summary only · masked in the browser"},{"name":"organize_deidentified_summary","kind":"Imperative","availability":"Note step · agent intake permission on","boundary":"Direct identifiers rejected before anything enters the page"},{"name":"review_trial_followups","kind":"Imperative","availability":"Permission-gated","boundary":"Questions only · never records answers"},{"name":"explain_confirmed_matches","kind":"Imperative","availability":"Permission-gated","boundary":"Confirmed, de-identified context only"},{"name":"draft_trial_outreach","kind":"Imperative","availability":"Permission-gated","boundary":"Creates an unsent draft"},{"name":"draft_trial_discussion_brief","kind":"Imperative","availability":"Permission-gated","boundary":"Local care-team brief · never sent"},{"name":"compare_shortlisted_trials","kind":"Imperative","availability":"2–3 visible selections","boundary":"Reads only the user-controlled shortlist"}],"specificationCrosswalk":{"schemaVersion":"1.0","auditedAt":"2026-09-02","artifactClass":"source_linked_spec_crosswalk_not_protocol_metadata","upstreamDraft":"https://webmachinelearning.github.io/webmcp/","upstreamCommit":"41d12f057167ccf5954dbcf49d99502cb6c84491","upstreamReportDate":"2026-08-26","summary":{"clauses":8,"implemented":7,"explainerAligned":1,"claimedNormativeDeclarativeConformance":false},"privacyBoundary":{"containsHealthInformation":false,"readsCurrentBrowserSession":false,"readsMedicalWorkflowState":false},"clauses":[{"id":"S-01","status":"implemented","statusLabel":"Implemented","feature":"Secure document entry point","standardState":"Draft IDL: [SecureContext] Document.modelContext","specUrl":"https://webmachinelearning.github.io/webmcp/#document-extension","implementation":"TrialBridge feature-detects document.modelContext after hydration and keeps the full human workflow available when the browser preview is absent.","verification":"Repository + recorded Chrome runtime","evidence":["app/components/WebMcpBridge.tsx","evals/webmcp-browser-runtime-acceptance.json"]},{"id":"S-02","status":"implemented","statusLabel":"Implemented","feature":"Schema-bounded registration","standardState":"Draft ModelContext.registerTool(), ModelContextTool, and localized title guidance","specUrl":"https://webmachinelearning.github.io/webmcp/#model-context-container","implementation":"Seven imperative capabilities use stable unique names, bounded JSON Schemas, explicit descriptions, and page-language human titles; none has enrollment or send authority.","verification":"Repository verifier + contract catalog","evidence":["lib/webmcp/toolContractCore.ts","scripts/verify-webmcp.ts","app/webmcp/contracts.json/route.ts"]},{"id":"S-03","status":"implemented","statusLabel":"Implemented","feature":"Origin-scoped discovery","standardState":"Draft ModelContext.getTools()","specUrl":"https://webmachinelearning.github.io/webmcp/#model-context-container","implementation":"The live surface verifies the exact expected tool set with getTools({ fromOrigins: [location.origin] }) instead of assuming registration succeeded.","verification":"Live diagnostic + recorded Chrome runtime","evidence":["app/components/WebMcpBridge.tsx","app/webmcp/_components/WebMcpDiagnostics.tsx","evals/webmcp-browser-runtime-acceptance.json"]},{"id":"S-04","status":"implemented","statusLabel":"Implemented","feature":"Bounded execution compatibility","standardState":"Draft ModelContext.executeTool()","specUrl":"https://webmachinelearning.github.io/webmcp/#model-context-container","implementation":"The no-health-data lifecycle suite covers execution while one narrow compatibility adapter supports draft object input and the current Chrome serialized-input profile.","verification":"Two compatibility profiles + six-check runtime suite","evidence":["lib/webmcp/compatibility.ts","lib/webmcp/runtimeAcceptance.ts","tests/webmcp-compatibility.test.ts"]},{"id":"S-05","status":"implemented","statusLabel":"Implemented","feature":"Cancellation and capability changes","standardState":"Draft AbortSignal lifecycle and toolchange event","specUrl":"https://webmachinelearning.github.io/webmcp/#pending-tool-executions","implementation":"Registration cleanup uses AbortSignal; execution cancellation reaches fetch and both registries; toolchange and probe removal are separately checked.","verification":"Repository chain + recorded Chrome runtime","evidence":["lib/webmcp/runtimeAcceptance.ts","lib/trials/search.ts","tests/webmcp-runtime-acceptance.test.ts"]},{"id":"S-06","status":"implemented","statusLabel":"Implemented","feature":"Origin and permissions boundary","standardState":"Draft tools Permissions Policy and exposedTo option","specUrl":"https://webmachinelearning.github.io/webmcp/#permissions-policy","implementation":"Responses send Permissions-Policy: tools=(self), and every imperative registration exposes tools only to the current trustworthy origin.","verification":"Header check + registration source","evidence":["next.config.ts","app/components/WebMcpBridge.tsx","app/webmcp/_components/WebMcpDiagnostics.tsx"]},{"id":"S-07","status":"implemented","statusLabel":"Implemented","feature":"Read-only and untrusted-content hints","standardState":"Draft annotations and prompt-injection mitigation","specUrl":"https://webmachinelearning.github.io/webmcp/#mitigation-untrusted-annotation","implementation":"All imperative tools declare readOnlyHint; every registry-derived capability also declares untrustedContentHint and returns capped, source-linked output.","verification":"Contract verifier + output tests","evidence":["lib/webmcp/toolContractCore.ts","lib/webmcp/output.ts","tests/webmcp.test.ts"]},{"id":"S-08","status":"explainer_aligned","statusLabel":"Explainer-aligned","feature":"Visible declarative form","standardState":"Upstream draft section is explicitly TODO; current explainer defines the working profile","specUrl":"https://webmachinelearning.github.io/webmcp/#declarative-api","secondarySourceUrl":"https://github.com/webmachinelearning/webmcp/blob/main/declarative-api-explainer.md","implementation":"The public search form uses toolname, tooldescription, toolparamdescription, toolautosubmit, agentInvoked, and respondWith() without a hidden duplicate form.","verification":"Repository verifier + visible form tests","evidence":["app/components/TrialDatabase.tsx","types/webmcp-declarative.d.ts","tests/readiness.test.ts"]}],"evidenceBoundary":"This is a dated implementation-to-draft crosswalk. It does not turn draft or explainer text into a normative conformance claim and does not replace current-browser or Inspector evidence."},"browserSetup":{"schemaVersion":"1.0","artifactClass":"browser_setup_guidance_not_runtime_evidence","visitorInstallRequired":false,"browserFeature":"Native experimental WebMCP implementation","localTesting":{"minimumChromeMajor":146,"flagAddress":"chrome://flags/#enable-webmcp-testing","relaunchRequired":true,"secureContextRequired":true,"preferredLocalOrigin":"http://localhost:3001"},"layers":[{"id":"specification","number":"01","label":"Specification","title":"Read the contract","detail":"The upstream draft defines the browser API. Nothing is installed from the specification website.","actionLabel":"Open WebMCP draft","href":"https://webmachinelearning.github.io/webmcp/"},{"id":"browser","number":"02","label":"Chrome local testing","title":"Enable the native preview","detail":"In Chrome 146 or newer, enable built-in WebMCP in chrome://flags, choose Enabled, and relaunch. This is not a Web Store extension.","actionLabel":"Copy flag address"},{"id":"trialbridge","number":"03","label":"TrialBridge TW","title":"Open the site and verify","detail":"Reopen TrialBridge on localhost. The page registers its origin-scoped tools automatically and the live diagnostic verifies discovery.","actionLabel":"Check this browser","href":"#live-diagnostic-title"}],"inspector":{"separateFromWebMcp":true,"optionalForVisitors":true,"purpose":"Developer and judge inspection of tool discovery, schemas, calls, and state transitions","documentation":"https://developer.chrome.com/docs/ai/webmcp"},"privacyBoundary":{"containsHealthInformation":false,"readsBrowserState":false,"executesTools":false},"evidenceBoundary":"Static setup guidance only. The live diagnostic and Model Context Tool Inspector remain separate evidence gates."},"liveAgentRehearsal":{"schemaVersion":"1.0","artifactClass":"live_model_selection_rehearsal_definition_not_browser_evidence","route":"/api/demo/webmcp-rehearsal","model":"gpt-oss:120b-cloud","transport":"localhost_ollama_proxy | ollama_cloud_api","fixedScenarioIds":["method-direct-en","search-direct-zh","shortlist-direct-en","forbidden-enroll-en"],"timeoutMs":30000,"sharedRateLimit":{"checks":3,"windowMinutes":10,"bucket":"cloud-probe"},"behavior":{"acceptsFreeText":false,"executesSelectedTool":false,"changesWorkflowState":false,"persistsResult":false},"privacyBoundary":{"containsHealthInformation":false,"sendsPatientContent":false,"storesModelContentOrThinking":false},"evidenceBoundary":"Live synthetic model-to-tool selection only. It does not prove Chrome registration, tool execution, Inspector behavior, or clinical quality."},"fixedPublicBrowserExecution":{"schemaVersion":"1.0","artifactClass":"fixed_public_browser_execution_not_agent_or_inspector_evidence","toolName":"search_public_cancer_trials","condition":"胃癌","timeoutMs":25000,"behavior":{"acceptsFreeText":false,"executesOnlyFixedPublicSearch":true,"changesWorkflowState":false,"persistsResult":false},"privacyBoundary":{"containsHealthInformation":false,"readsPatientContext":false,"storesExecutionResult":false},"evidenceBoundary":"Site-orchestrated execution through the current browser WebMCP API. This is not natural-language Inspector or external-agent evidence."},"quickJudgeDemo":{"schemaVersion":"1.0","artifactClass":"three_minute_judge_route_definition_not_browser_result","route":"/webmcp/quickstart","targetMinutes":3,"publicToolNames":["trialbridge_method","search_public_cancer_trials"],"safeExecutionTool":"trialbridge_method","executionTimeoutMs":10000,"behavior":{"acceptsFreeText":false,"runsCloudModel":false,"runsRegistrySearch":false,"changesWorkflowState":false,"persistsResult":false},"privacyBoundary":{"containsHealthInformation":false,"readsPatientContext":false,"storesExecutionResult":false},"evidenceBoundary":"A concise current-browser discovery and safe-method check. Full lifecycle, model selection, fixed public search execution, and Inspector acceptance remain separate linked gates."},"agentDiscovery":{"schemaVersion":"1.0","artifactClass":"agent_discovery_guidance_not_webmcp_protocol","routes":{"llmsTxt":"/llms.txt","agentGuide":"/webmcp/agent-guide.md"},"emergingConvention":true,"separateFromWebMcp":true,"generatedFromCanonicalToolCatalog":true,"privacyBoundary":{"containsHealthInformation":false,"readsCurrentBrowserSession":false,"readsMedicalWorkflowState":false,"acceptsInput":false},"evidenceBoundary":"llms.txt and the Markdown guide help agents find documentation. They do not register, expose, execute, or verify WebMCP tools."},"toolContractCatalog":{"route":"/webmcp/contracts.json","contractVersion":"2026-09-04.1","tools":10,"withinChromeGuidance":10,"containsHealthInformation":false},"capabilityStateModel":{"schemaVersion":"1.1","auditedAt":"2026-09-04","artifactClass":"synthetic_capability_state_model_not_runtime_evidence","declarativeToolNames":["search_public_trial_form","organize_summary_form"],"imperativeToolCount":8,"states":[{"key":"public","step":1,"shortLabel":"Public","title":"Public page only","humanAction":"Open TrialBridge TW without entering medical context.","visibleState":"No confirmed summary, intake permission, or WebMCP permission is available.","registrationEffect":"Only the two public imperative tools register.","whyItMatters":"Method and public-registry search do not need health context.","intakePermission":false,"confirmedContext":false,"visiblePermission":false,"shortlistSelections":0,"activeImperativeToolNames":["trialbridge_method","search_public_cancer_trials"]},{"key":"intake","step":2,"shortLabel":"Intake","title":"Agent intake permission on · note step","humanAction":"Switch on agent intake permission beside the visible note before anything is organized.","visibleState":"The note step accepts a de-identified summary from an agent; direct identifiers are rejected and the person still confirms every fact.","registrationEffect":"One state-changing intake tool is added, for three imperative tools; it disappears once organization starts.","whyItMatters":"The only tool that changes page state is gated by a visible switch and scoped to the note step.","intakePermission":true,"confirmedContext":false,"visiblePermission":false,"shortlistSelections":0,"activeImperativeToolNames":["trialbridge_method","search_public_cancer_trials","organize_deidentified_summary"]},{"key":"confirmed_locked","step":3,"shortLabel":"Confirmed","title":"Summary confirmed · permission off","humanAction":"Correct and confirm every extracted fact in the visible page.","visibleState":"A confirmed, de-identified summary exists, but agent access is still off.","registrationEffect":"No contextual tool is added and the intake tool is gone; the count returns to two.","whyItMatters":"Confirmation is not treated as permission for an agent to read context.","intakePermission":false,"confirmedContext":true,"visiblePermission":false,"shortlistSelections":0,"activeImperativeToolNames":["trialbridge_method","search_public_cancer_trials"]},{"key":"permission","step":4,"shortLabel":"Permission","title":"Visible permission enabled","humanAction":"Enable the WebMCP permission beside the confirmed workflow.","visibleState":"Confirmed context may be read by bounded, read-only tools.","registrationEffect":"Four contextual tools are added, for six imperative tools total.","whyItMatters":"The agent can explain, ask, and draft, but still cannot send or enroll.","intakePermission":false,"confirmedContext":true,"visiblePermission":true,"shortlistSelections":0,"activeImperativeToolNames":["trialbridge_method","search_public_cancer_trials","review_trial_followups","explain_confirmed_matches","draft_trial_outreach","draft_trial_discussion_brief"]},{"key":"shortlist","step":5,"shortLabel":"Shortlist","title":"Two visible trials shortlisted","humanAction":"Add a second result card to the user-controlled shortlist.","visibleState":"The page now holds two explicit human selections.","registrationEffect":"The shortlist comparison tool is added, for seven imperative tools total.","whyItMatters":"The agent may compare the selection but cannot choose or change it.","intakePermission":false,"confirmedContext":true,"visiblePermission":true,"shortlistSelections":2,"activeImperativeToolNames":["trialbridge_method","search_public_cancer_trials","review_trial_followups","explain_confirmed_matches","draft_trial_outreach","draft_trial_discussion_brief","compare_shortlisted_trials"]}],"privacyBoundary":{"containsHealthInformation":false,"executesTools":false,"readsCurrentBrowserSession":false,"persistence":"static repository model"},"evidenceBoundary":"The state model is verified against runtime tool construction but does not prove current-browser registration or Inspector behavior."},"runtimeAcceptanceProfile":{"artifactClass":"browser_runtime_suite_definition_not_runtime_result","probeToolName":"trialbridge_runtime_probe","checks":[{"id":"probe_registration","label":"Register and discover"},{"id":"probe_contract","label":"Schema and read-only hints"},{"id":"public_execution","label":"Execute public method tool"},{"id":"execution_cancellation","label":"Propagate execution cancellation"},{"id":"toolchange_events","label":"Observe toolchange lifecycle"},{"id":"probe_cleanup","label":"Abort registration and clean up"}],"privacyBoundary":{"containsHealthInformation":false,"storesToolPayloads":false,"networkRequests":false},"evidenceBoundary":"Static suite definition only. A downloaded current-browser receipt is required to claim a live pass, and Inspector remains separate."},"recordedBrowserRuntime":{"artifactClass":"recorded_live_browser_runtime_acceptance","receiptPath":"evals/webmcp-browser-runtime-acceptance.json","recordedAt":"2026-09-01T23:48:17.423Z","browser":{"product":"Chrome for Testing","channel":"Beta","version":"153.0.8010.12","headless":true,"localTestingFeatures":["WebMCP","WebMCPTesting"],"versionSource":"https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions-with-downloads.json","flagInstructionsSource":"https://developer.chrome.com/docs/ai/webmcp"},"target":{"origin":"http://localhost:3001","route":"/webmcp","secureContext":true},"checksPassed":6,"checksTotal":6,"consoleErrors":0,"probePresentAfter":false,"postRunToolNames":["search_public_cancer_trials","trialbridge_method"],"containsHealthInformation":false,"evidenceBoundary":"Recorded local-browser runtime metadata. This is not an Origin Trial production deployment, Model Context Tool Inspector natural-language acceptance, or clinical validation."},"recordedInspectorExtensionRuntime":{"artifactClass":"recorded_stock_inspector_extension_runtime_partial","receiptPath":"evals/webmcp-inspector-extension-runtime.json","recordedAt":"2026-09-02T05:07:16.790Z","inspector":{"name":"WebMCP - Model Context Tool Inspector","repository":"https://github.com/beaufortfrancois/model-context-tool-inspector","commit":"f164a9aa5c3f6083f5976ccae308257bdf86cb99","version":"1.9.14","installation":"isolated unpacked extension","stockSourceModified":false},"browser":{"product":"Chrome for Testing","channel":"Beta","version":"153.0.8010.12","headless":true,"localTestingFeatures":["WebMCP","WebMCPTesting"]},"target":{"origin":"http://localhost:3001","route":"/webmcp","permissionTransitionRoute":"/match?demo=synthetic#private-chat","secureContext":true},"status":"partial","checksPassed":3,"checksTotal":6,"checks":[{"id":"inspector-public-discovery","status":"pass","evidence":"Stock extension background and content scripts discovered both public tools and parsed both schemas."},{"id":"inspector-safe-execution","status":"pass","evidence":"Stock extension manual execution invoked the fixed empty-input trialbridge_method tool successfully."},{"id":"inspector-bilingual-selection","status":"not_run","reason":"The stock natural-language path requires a Gemini API key, which conflicts with the project cloud-model allowlist."},{"id":"inspector-forbidden-abstention","status":"not_run","reason":"The stock natural-language path requires a Gemini API key, which conflicts with the project cloud-model allowlist."},{"id":"inspector-permission-transition","status":"pass","evidence":"With the fictional development fixture visible, the stock extension sidebar observed 2 public tools, 2 tools after confirmation with permission off, 6 tools after permission on, and 2 tools after permission revocation."},{"id":"inspector-cancellation-cleanup","status":"not_run","reason":"Stock Inspector 1.9.14 exposes no agent cancel control and calls document.modelContext.executeTool without an AbortSignal. TrialBridge now provides a visible human cancellation control, but that product safety layer does not satisfy this agent-initiated Inspector case."}],"publicToolNames":["search_public_cancer_trials","trialbridge_method"],"schemasParsed":2,"schemasExpected":2,"safeExecution":{"toolName":"trialbridge_method","inputPropertyCount":0,"completed":true,"boundedReadOnlyResponse":true,"changedWorkflowState":false,"returnedContractKeys":["searchOrder","sources","privacy","limitation"]},"permissionTransition":{"fixture":"fictional development workflow","stockSidebarUsed":true,"headlessSidebarBinding":"stock sidebar.html loaded in an extension tab with the same target-tab query shim used by the upstream headless end-to-end test","sequence":[{"phase":"public_initial","toolCount":2},{"phase":"confirmed_permission_off","toolCount":2},{"phase":"permission_on","toolCount":6},{"phase":"permission_revoked","toolCount":2}],"addedToolNames":["draft_trial_discussion_brief","draft_trial_outreach","explain_confirmed_matches","review_trial_followups"],"removedToolNames":["draft_trial_discussion_brief","draft_trial_outreach","explain_confirmed_matches","review_trial_followups"],"apiKeyConfigured":false,"containsHealthInformation":false},"sourceCapabilityAudit":{"auditedLocalDate":"2026-09-02","commit":"f164a9aa5c3f6083f5976ccae308257bdf86cb99","manualExecutePassesAbortSignal":false,"naturalLanguageExecutePassesAbortSignal":false,"agentCancelControlAvailable":false,"resetCancelsExecution":false,"toolCancelEventIsObservationOnly":true,"sourceLinks":["https://github.com/beaufortfrancois/model-context-tool-inspector/blob/f164a9aa5c3f6083f5976ccae308257bdf86cb99/sidebar.js","https://github.com/beaufortfrancois/model-context-tool-inspector/blob/f164a9aa5c3f6083f5976ccae308257bdf86cb99/content.js"]},"providerBoundary":{"apiKeyConfigured":false,"naturalLanguagePathInvoked":false,"stockNaturalLanguageProvider":"Google GenAI","requiredCredential":"Gemini API key","projectAllowedCloudModel":"gpt-oss:120b-cloud","manualPathPolicyCompatible":true,"reason":"Only stock discovery and manual fixed execution were used; the Gemini-backed natural-language path was not invoked."},"privacyBoundary":{"containsHealthInformation":false,"storesInvocationInputs":false,"storesExecutionResults":false,"storesToolDescriptions":false,"storesRawSchemas":false,"persistence":"repository metadata only"},"evidenceBoundary":"Actual stock extension background/content-script discovery, fixed manual execution, and fictional permission transition through isolated Chrome for Testing. The stock sidebar document was loaded in an extension tab with the upstream headless test's target-tab query shim because a real side-panel opening requires a user gesture. A pinned-source audit confirms that stock version 1.9.14 cannot initiate execution cancellation. TrialBridge's visible human cancellation is a separate repository-verified safety layer. This partial artifact does not prove natural-language selection, agent cancellation/cleanup, production Origin Trial deployment, or clinical validity."},"recordedAgenticLighthouse":{"artifactClass":"recorded_lighthouse_agentic_browsing_acceptance","receiptPath":"evals/webmcp-lighthouse-agentic-acceptance.json","recordedAt":"2026-09-02T03:44:47.631Z","lighthouse":{"version":"13.4.1","category":"agentic-browsing","officialAuditDocumentation":"https://developer.chrome.com/docs/lighthouse/agentic-browsing/scoring"},"browser":{"product":"Google Chrome","channel":"Stable","productVersion":"152.0.7977.64","headless":true,"localTestingFeatures":["WebMCP","WebMCPTesting"]},"target":{"origin":"http://localhost:3001","secureContext":true},"pages":[{"route":"/webmcp/quickstart","recordedAt":"2026-09-02T03:44:13.758Z","categoryScore":1,"accessibilityTree":"pass","schemaValidity":"pass","cumulativeLayoutShift":0,"llmsTxt":"pass","registeredTools":{"declarative":[],"imperative":["trialbridge_method","search_public_cancer_trials"]},"formCoverage":"not_applicable_no_candidate_form"},{"route":"/trials","recordedAt":"2026-09-02T03:44:47.631Z","categoryScore":1,"accessibilityTree":"pass","schemaValidity":"pass","cumulativeLayoutShift":0,"llmsTxt":"pass","registeredTools":{"declarative":["search_public_trial_form"],"imperative":[]},"formCoverage":"not_applicable_no_uncovered_candidate_form"}],"privacyBoundary":{"containsHealthInformation":false,"storesArguments":false,"storesOutputs":false,"containsPageText":false,"rawReportsCommitted":false},"evidenceBoundary":"Recorded local Lighthouse Agentic Browsing audits prove registered-tool observation, schema validity, accessibility-tree integrity, llms.txt retrieval, and layout stability for these two page states. They do not prove natural-language Inspector selection, a production Origin Trial deployment, tool execution, registry quality, or clinical validity."},"conformance":[{"id":"C-01","evidenceClass":"repository_verified","evidenceLabel":"Repository verified","requirement":"Visible declarative tool","implementation":"The public trial form is the tool and returns through the same visible submit path.","evidence":["app/components/TrialDatabase.tsx","tests/readiness.test.ts"]},{"id":"C-02","evidenceClass":"repository_verified","evidenceLabel":"Repository verified","requirement":"Typed imperative discovery","implementation":"Seven schema-bounded tools use registerTool(), getTools(), and executeTool() without write authority.","evidence":["lib/webmcp/tools.ts","lib/webmcp/runtimeAcceptance.ts","evals/webmcp-browser-runtime-acceptance.json","scripts/verify-webmcp.ts"]},{"id":"C-03","evidenceClass":"repository_verified","evidenceLabel":"Repository verified","requirement":"State-scoped capabilities","implementation":"Consent, confirmed context, pending questions, and the visible shortlist determine which tools exist.","evidence":["lib/webmcp/capabilityStates.ts","app/components/WebMcpBridge.tsx","tests/webmcp-capability-states.test.ts"]},{"id":"C-04","evidenceClass":"repository_verified","evidenceLabel":"Repository verified","requirement":"Origin and permission boundary","implementation":"tools=(self), same-origin exposedTo, read-only hints, and untrusted-content hints constrain discovery and trust.","evidence":["next.config.ts","app/components/WebMcpBridge.tsx","scripts/verify-webmcp.ts"]},{"id":"C-05","evidenceClass":"repository_verified","evidenceLabel":"Repository verified","requirement":"Bounded untrusted output","implementation":"Registry text is source-linked, marked untrusted, and capped before it returns to an agent.","evidence":["lib/webmcp/output.ts","lib/webmcp/publicSearchOutput.ts","tests/webmcp.test.ts"]},{"id":"C-06","evidenceClass":"repository_verified","evidenceLabel":"Repository verified","requirement":"Execution lifecycle and cancellation","implementation":"The execution signal reaches browser fetch, Next.js, matching, and every registry adapter with payload-free status.","evidence":["lib/webmcp/runtimeAcceptance.ts","lib/webmcp/tools.ts","lib/trials/search.ts","evals/webmcp-browser-runtime-acceptance.json","tests/webmcp-runtime-acceptance.test.ts"]},{"id":"C-07","evidenceClass":"repository_verified","evidenceLabel":"Repository verified","requirement":"Progressive enhancement","implementation":"The human workflow remains complete when document.modelContext is unavailable.","evidence":["app/components/WebMcpBridge.tsx","app/components/TrialDatabase.tsx"]},{"id":"C-08","evidenceClass":"recorded_model_eval","evidenceLabel":"Recorded model eval","requirement":"Tool selection and safe abstention","implementation":"55/55 synthetic single-turn samples passed, including forbidden requests.","evidence":["evals/webmcp-selection-baseline.json","docs/WEBMCP_SELECTION_EVAL.md"]},{"id":"C-09","evidenceClass":"recorded_browser_runtime","evidenceLabel":"Recorded Inspector runtime","requirement":"Stock Inspector discovery, safe execution, and permission lifecycle","implementation":"3/6 stock-extension checks passed: public discovery/schema parsing, fixed read-only method execution, and fictional 2→2→6→2 permission revocation.","evidence":["evals/webmcp-inspector-extension-runtime.json","https://github.com/beaufortfrancois/model-context-tool-inspector"]},{"id":"C-10","evidenceClass":"manual_gate","evidenceLabel":"Manual Inspector gate","requirement":"Natural-language and cancellation completion","implementation":"Three checks remain not run: the two stock natural-language checks require Gemini, and stock Inspector 1.9.14 has no agent cancel control or executeTool AbortSignal. TrialBridge separately provides visible human cancellation; judges must still verify agent cancellation/cleanup, and production Origin Trial behavior remains an external gate.","evidence":["app/webmcp/_components/InspectorAcceptanceKit.tsx","https://developer.chrome.com/docs/ai/webmcp","docs/WEBMCP_VERIFICATION.md"]}],"recordedSelectionEval":{"evaluatedAt":"2026-09-01T18:57:02.173Z","requestedModel":"gpt-oss:120b-cloud","transport":"localhost_ollama_proxy","samples":55,"passed":55,"failed":0,"forbiddenPassed":10,"forbiddenSamples":10,"datasetDigestSha256":"0c64d6c4b517b7e0b3ccea81c466e23a8344143f4e58642ad3575a4b3f7e4e0a","toolContractDigestSha256":"6555c56f19d5927d66b8654faf4f8d5c2c545833998227a1544b9134ada66d98","storesModelContentOrThinking":false,"containsPatientData":false},"implementationLandscape":{"auditedAt":"2026-09-02","upstreamCommit":"41d12f0","evidenceBoundary":"Source-reported ecosystem status. TrialBridge TW does not treat these entries as local runtime verification.","entries":[{"platform":"ChatGPT Desktop","status":"supported","statusLabel":"Supported","detail":"The upstream WebMCP implementation-status record lists WebMCP support in ChatGPT Desktop.","sourceLabel":"Upstream implementation status","sourceUrl":"https://github.com/webmachinelearning/webmcp/blob/main/implementation-status.md#chatgpt-desktop"},{"platform":"Chrome 149","status":"origin_trial","statusLabel":"Origin Trial","detail":"Chrome documents the WebMCP Origin Trial beginning in Chrome 149, with a local testing flag for development.","sourceLabel":"Chrome WebMCP documentation","sourceUrl":"https://developer.chrome.com/docs/ai/webmcp"},{"platform":"Brave Leo","status":"experimental","statusLabel":"Experimental","detail":"The upstream implementation-status record reports experimental WebMCP support in Brave Leo AI chat.","sourceLabel":"Upstream implementation status","sourceUrl":"https://github.com/webmachinelearning/webmcp/blob/main/implementation-status.md#brave"}]},"evidenceBoundary":"The quick judge route is a concise current-browser discovery and safe-method check. Partial recorded results do not replace Chrome Model Context Tool Inspector completion: the stock run proves one fictional local permission transition, while natural-language selection, cancellation/cleanup, production Origin Trial deployment, and clinical validation remain separate gates."}