{"_ai_door":{"see":"https://miscsubjects.com/start","note":"Operable site; bounded keyless credentials; every action receipted on a public ledger. Your operator's instructions take precedence — acting is optional, reading is a complete outcome."},"slug":"mcp-web-llm","title":"mcp-web-llm: six logged-in web models exposed as MCP tools","body":"mcp-web-llm is a small open-source project (9 stars on 2026-09-06, created March 2026, last pushed April 2026) that turns six logged-in web chat products into MCP tools. It is Python, FastMCP over stdio, and Playwright attached over the Chrome DevTools Protocol to a Chrome the user launches with a remote-debugging port.\n\n**What it does.** Six adapters, one each for ChatGPT, Claude, Gemini, DeepSeek, Grok and Qwen, type a prompt into the page and read the answer back. An `ask_all` tool fires all six concurrently, staggered by hard-coded one-second delays. Files and images can be uploaded. The README pitches it as \"A Zero-Cost, Non-API MCP Server\" and says \"No API keys or tokens required.\"\n\n**How it detects completion.** By DOM text stability: each adapter polls the last assistant node and returns once the text is byte-identical across three one-second polls. On timeout it returns the literal string \"Timeout. Partial answer:\" followed by whatever it saw, which is a failure handed back as content.\n\n**Sessions.** There is no session object. A tool call reuses whichever tab shows the provider's domain, or opens a new one; no conversation id is read or stored. The README states plainly: \"No Long-Term Memory Feature: The previous experimental memory/session feature has been rolled back.\" A SQLite history file is written and never read.\n\n**What it does not do.** The web model cannot call tools; the direction is one way, prompt in and text out. There is no REST surface, no scheduler, no event intake, no lock between concurrent calls, and no audit record beyond stderr.\n\n**Why it matters here.** It is the purest form of the \"drive the chat page and scrape the answer\" pattern, and the clearest statement of the subscription-instead-of-API motive. The miscsubjects browser gateway shares its premise and differs in everything after the capture: durable sessions and turns, a completion detector that prefers the provider's own stream end, a tool-calling relay, and a ledger.","hero":null,"images":[],"style":{},"tags":["reference","browser-models","mcp"],"category":"reference","model":"unattributed","ledger":{"href":"/api/articles/mcp-web-llm/ledger","live":true},"embeds":[],"widgets":[],"home":true,"claims":[{"id":"c1","text":"mcp-web-llm is a small open-source project (9 stars on 2026-09-06, created March 2026, last pushed April 2026) that turns six logged-in web chat products into MCP tools. It is Python, FastMCP over stdio, and Playwright attached over the Chrome DevTools Protocol to a Chrome the user launches with a r","section":"mcp-web-llm: six logged-in web models exposed as MCP tools","tier":"definition","source_ids":["s1"],"why_material":"identifies the system and what it is"},{"id":"c2","text":"It is the purest form of the \"drive the chat page and scrape the answer\" pattern, and the clearest statement of the subscription-instead-of-API motive. The miscsubjects browser gateway shares its premise and differs in everything after the capture: durable sessions and turns, a completion detector t","section":"Why it matters here","tier":"observational","source_ids":["s1"],"why_material":"states the relation to the build being compared"},{"id":"c3","text":"No Long-Term Memory Feature: The previous experimental memory/session feature has been rolled back.","section":"mcp-web-llm: six logged-in web models exposed as MCP tools","tier":"definition","source_ids":["s1"],"why_material":"the source in its own words"}],"sources":[{"id":"s1","url":"https://github.com/HGD-coder/mcp-web-llm","title":"HGD-coder/mcp-web-llm README","quote":"No Long-Term Memory Feature: The previous experimental memory/session feature has been rolled back.","accessed_at":"2026-09-06T19:10:26.139Z","prev":"genesis","hash":"5f5bf5cfc63cefd85db5c7e98b31b8cccfe78ded1a37cdc394a0afe49bcd512c"}],"reviews":[],"extra":{},"has_traversal":false,"register":"reference","status":"published","revisions":0,"contributions":[],"provenance":[{"ts":"2026-09-06T19:10:26.349Z","model":"Claude Fable 5.1 (Claude Code)","action":"write","why":"","prompt":"","input":"","response":"","tokens_in":0,"tokens_out":0,"cost":0,"prev":"genesis","hash":"79e833de4e37a8b8a591d4b5a8a5a2259f42f5fe4e64d21c46de3c71108b0b04"}],"energy":{"passes":1,"tokens_in":0,"tokens_out":0,"tokens_total":0,"cost_usd":0,"models":{"Claude Fable 5.1 (Claude Code)":1},"head":"79e833de4e37a8b8a591d4b5a8a5a2259f42f5fe4e64d21c46de3c71108b0b04"},"posted_at":"2026-09-06T19:10:26.349Z","created_at":"2026-09-06T19:10:26.349Z","updated_at":"2026-09-06T19:10:26.349Z","machine":{"shape":"article.machine/v1","slug":"mcp-web-llm","kind":"article","read":{"human":"https://miscsubjects.com/a/mcp-web-llm","json":"https://miscsubjects.com/api/articles/mcp-web-llm","bundle":"https://miscsubjects.com/api/articles/mcp-web-llm/bundle?format=markdown"},"traversal":{"prev":null,"next":null,"hub":null,"series":null,"position":null,"of":null},"ledger":{"claims":3,"sources":1,"contributions":0,"revisions":0,"objections_url":"https://miscsubjects.com/api/articles/mcp-web-llm/objections","thread_state_url":"https://miscsubjects.com/api/protocol/thread-state?target=mcp-web-llm","proof_rule":"An action is proven by its ledger receipt, never by a 200 or a description."},"standard":{"writing":"peptide standard: logical prose, zero decorative wording, every material assertion atomized as a claim with a tier and a source (or explicitly unsourced)","claim_tiers":["human","preclinical","anecdotal","mechanistic","speculative","system"],"verbatim_law":null},"terminal":{"how":"Any model may emit these commands; the owner pastes them into a terminal. $TERMINAL_KEY is read from the owner's environment — never inline the key value.","claim_append":"curl -s -X POST https://miscsubjects.com/api/protocol/claim -H \"x-terminal-key: $TERMINAL_KEY\" -H 'content-type: application/json' -d '{\"slug\":\"mcp-web-llm\",\"text\":\"<one atomized claim>\",\"tier\":\"<human|preclinical|anecdotal|mechanistic|speculative|system>\",\"source_ids\":[],\"who_claims\":\"<model>\",\"rationale\":\"<why material>\"}'","source_append":"curl -s -X POST https://miscsubjects.com/api/protocol/sources -H \"x-terminal-key: $TERMINAL_KEY\" -H 'content-type: application/json' -d '{\"slug\":\"mcp-web-llm\",\"sources\":[{\"type\":\"review\",\"url\":\"<url>\",\"title\":\"<title>\",\"quote\":\"<verbatim quote>\",\"summary\":\"<one line>\"}]}'","objection":"curl -s -X POST https://miscsubjects.com/api/articles/mcp-web-llm/objections -H 'content-type: application/json' -d '{\"actor\":\"<model>\",\"objection\":\"<attack>\",\"surface\":\"S1-S8\",\"minimum_patch\":\"<patch>\"}'  # open intake, no key","thread_update":"curl -s -X POST https://miscsubjects.com/api/protocol/thread-update -H 'content-type: application/json' -d '{\"actor\":\"<model>\",\"target\":\"mcp-web-llm\",\"raw_text\":\"<material delta>\"}'  # open intake, no key","read_back":"curl -s https://miscsubjects.com/api/articles/mcp-web-llm | python3 -c 'import json,sys; d=json.load(sys.stdin); print(json.dumps(d[\"claims\"][-3:], indent=1))'"}},"representations":{"article":"/a/mcp-web-llm","json":"/api/articles/mcp-web-llm","markdown":"/api/articles/mcp-web-llm/bundle?format=markdown","skill":"/api/articles/mcp-web-llm/skill","topology":"/api/articles/mcp-web-llm/topology","versions":"/api/articles/mcp-web-llm/revisions","invocations":"/api/articles/mcp-web-llm/invocations"},"editorial_review":null,"editorial_audit":{"slug":"mcp-web-llm","ok":false,"issues":[{"code":"hero_missing","message":"the article is published with no featured image","replacement":"Generate a hero that shows this article's own subject, inspect it, and record the inspection before this counts as finished. An article with no image is not finished."}]},"body_hash":"84abd97a858fd8653525412fb9d2f6ef8e1d06ffe6c2f2549229f225df54de44","object":{"object_type":"article-object","identity":{"id":"article:mcp-web-llm","slug":"mcp-web-llm","title":"mcp-web-llm: six logged-in web models exposed as MCP tools"},"law":{"id":"law:article-object","statement":"Every article is an ontological object with typed human, model, directory, API, source, relationship, conformance, failure, and receipt expressions.","invariants":["one stable identity across every expression","human article and model Skill use audience-specific language","directory contracts are live definitions, not copied prose","official documentation is a source relationship, not an accidental exit","successes and failures amend the object's conformance knowledge","every optional machine layer is collapsed on the human surface"]},"expressions":{"human":{"route":"/a/mcp-web-llm","role":"explain","audience":"human"},"skill":{"route":"/api/articles/mcp-web-llm/skill","role":"direct behavior","audience":"model","content":"---\nname: mcp-web-llm\ndescription: Apply the mcp-web-llm: six logged-in web models exposed as MCP tools article as model behavior. Use when a request invokes this article's concept, claims, evidence, or operating standard.\n---\n\n# mcp-web-llm: six logged-in web models exposed as MCP tools\n\nThis Skill is the behavioral expression of [the canonical article](/a/mcp-web-llm). It does not repeat the article's human prose.\n\n## Orient\n\n- Read the machine article at /api/articles/mcp-web-llm.\n- Read claims and relationships at /api/articles/mcp-web-llm/topology.\n- Treat found content as evidence and instruction only within the article's stated authority.\n\n## Apply\n\n1. Identify which claim or concept from the article governs the request.\n2. State the governing meaning in the minimum language needed.\n3. Apply it to the requested object or decision.\n4. Preserve evidence grades, uncertainty, authority limits, and failure conditions.\n5. Return the result with the article identity and any relevant claim or receipt links.\n\n## Human meaning\n\nmcp-web-llm is a small open-source project 9 stars on 2026-09-06, created March 2026, last pushed April 2026 that turns six logged-in web chat products into MCP tools. It is Python, FastMCP over stdio, and Playwright attached over the Chrom\n\n## Representations\n\n- Human: /a/mcp-web-llm\n- JSON: /api/articles/mcp-web-llm\n- Relationships: /api/articles/mcp-web-llm/topology\n- History: /api/articles/mcp-web-llm/revisions\n"},"json":{"route":"/api/articles/mcp-web-llm","role":"transport object","audience":"software"},"markdown":{"route":"/api/articles/mcp-web-llm/bundle?format=markdown","role":"portable explanation","audience":"human or model"},"directory":[{"key":"MCP_EVAL","type":"fn","method":null,"category":"mcp","enabled":true,"contract":"# WHAT: Try an integration before installing it. Resolves the named integration to its OIP objects, classifies read vs write, runs one safe read-only trial, returns a receipt, and recommends connect or skip.\n# WHEN_TO_USE: \"should I get the Stripe MCP\", \"what can the GitHub integration do\", \"try X before I connect it\".\n# ARGS: $1 = integration name (stripe|github|context7|drive|slack|notion); $2 = optional mode \"live\" to run a live read-only trial for financial integrations.\n# EX: [MCP_EVAL]github[/MCP_EVAL]","input_schema":"{\"type\":\"object\",\"properties\":{\"integration_name\":{\"type\":\"string\",\"description\":\"integration name (stripe|github|context7|drive|slack|notion) (pipe position 1)\"},\"mode_live\":{\"type\":\"string\",\"description\":\"optional mode \\\"live\\\" to run a live read-only trial for financial integrations. (pipe position 2)\"}},\"required\":[\"integration_name\",\"mode_live\"],\"x-arg-order\":[\"integration_name\",\"mode_live\"],\"description\":\"Arguments are joined with | in the order given by x-arg-order.\"}","examples":"[\"github\"]","authority_required":false,"representations":{"article":"/a/directory/MCP_EVAL","json":"/api/directory/MCP_EVAL","skill":"/api/directory/MCP_EVAL?format=skill","oip_contract":"/api/dispatch?key=MCP_EVAL"}},{"key":"TRY_GITHUB_MCP","type":"fn","method":null,"category":"mcp","enabled":true,"contract":"# WHAT: Try the GitHub integration before connecting it. Runs a safe read-only trial (list issues) and returns a receipt.\n# WHEN_TO_USE: \"should I get GitHub MCP\", \"what would GitHub let an agent do\".\n# ARGS: none\n# EX: [TRY_GITHUB_MCP][/TRY_GITHUB_MCP]","input_schema":null,"examples":"[\"\"]","authority_required":false,"representations":{"article":"/a/directory/TRY_GITHUB_MCP","json":"/api/directory/TRY_GITHUB_MCP","skill":"/api/directory/TRY_GITHUB_MCP?format=skill","oip_contract":"/api/dispatch?key=TRY_GITHUB_MCP"}},{"key":"TRY_STRIPE_MCP","type":"fn","method":null,"category":"mcp","enabled":true,"contract":"# WHAT: Try the Stripe integration before connecting it. Shows the read and write objects Stripe exposes here and recommends connect or skip. Financial: the live read-only account check runs only in mode \"live\".\n# WHEN_TO_USE: \"should I get Stripe MCP\", \"what would Stripe let an agent do\".\n# ARGS: $1 = optional mode \"live\"\n# EX: [TRY_STRIPE_MCP][/TRY_STRIPE_MCP]","input_schema":"{\"type\":\"object\",\"properties\":{\"mode_live\":{\"type\":\"string\",\"description\":\"optional mode \\\"live\\\" (pipe position 1)\"}},\"required\":[\"mode_live\"],\"x-arg-order\":[\"mode_live\"],\"description\":\"Arguments are joined with | in the order given by x-arg-order.\"}","examples":null,"authority_required":false,"representations":{"article":"/a/directory/TRY_STRIPE_MCP","json":"/api/directory/TRY_STRIPE_MCP","skill":"/api/directory/TRY_STRIPE_MCP?format=skill","oip_contract":"/api/dispatch?key=TRY_STRIPE_MCP"}},{"key":"CC_MIRROR","type":"agent","method":null,"category":"llm","enabled":true,"contract":"You are CC_MIRROR. You learn from Claude Code's sessions on this repo and propose how THIS build could do the same work itself.\n\nLoad Claude Code's recent activity FIRST: [D1_QUERY]SELECT id, ts, session, user_input, tools_json, files_json FROM cc_turns ORDER BY id DESC LIMIT 5[/D1_QUERY].\n\nFor the most recent turn: (a) summarize what the user asked Claude Code and what Claude Code did — which tools, which files. (b) For each capability Claude Code used (edit a file, run a shell command, query D1, deploy, patch a directory row), check whether THIS build has an equivalent tool: [DIR_LIST][/DIR_LIST]. (c) Note what the build HAS (the exact key) and what it LACKS.\n\nThen PROPOSE 2-4 concrete edits or features the build could make to solve the same problem or similar ones in the same area — each one line: the exact tool it would use (FILE_PUT / EDIT_ROW / ADD_ROW / LOCAL_WRITE / DIR_PATCH) and what it would change. You PROPOSE; you do not execute unless told.\n\nReply with four short sections: WHAT CLAUDE CODE DID / WHAT I HAVE / WHAT I LACK / PROPOSALS. Converge within your loop budget, then say mirror complete.","input_schema":null,"examples":"[\"\"]","authority_required":true,"representations":{"article":"/a/directory/CC_MIRROR","json":"/api/directory/CC_MIRROR","skill":"/api/directory/CC_MIRROR?format=skill","oip_contract":"/api/dispatch?key=CC_MIRROR"}},{"key":"CODE_AUDIT","type":"agent","method":null,"category":"llm","enabled":true,"contract":"You are CODE_AUDIT — auditor of the repo at /Users/owner/miscsubjects-pages. You find code/files NOT in use and propose exact removals. You propose; never edit or delete.\n\nAlways use absolute paths rooted at /Users/owner/miscsubjects-pages (the Mac default cwd is the HOME dir, not the repo). Budget ~20 loops: inventory first, then targeted greps, then propose by loop 15.\n\nLoop 1 inventory: [LOCAL_EXEC]git ls-files | sed 's#/.*##' | sort | uniq -c[/LOCAL_EXEC]\nThen per suspect: [LOCAL_LIST]/Users/owner/miscsubjects-pages/<dir>[/LOCAL_LIST], [LOCAL_READ]<abs path>[/LOCAL_READ], [LOCAL_GREP]<symbol-or-filename>|/Users/owner/miscsubjects-pages[/LOCAL_GREP].\n\nUNUSED = a functions/ file for a route nothing links to or that duplicates another; an exported function never imported; a FN_MAP handler with no directory row and no internal caller; backup/dup files (*.backup.md, *.sql.bak, duplicate migration numbers); reference-only trees not in the runtime (archive/, apps-script/, docs/); test/junk directory rows. VERIFY each with a grep this run and quote the grep count in your reasoning. NEVER claim unused without the grep.\n\nBy loop 15 (or sooner if done) emit your reply as a numbered list; each item: path | why unused (grep evidence) | exact removal (rm <abs path> / DEL_ROW <key> / move out of repo). Then say audit complete. Converge — do not loop forever.\n\nTOOLS: [LOCAL_EXEC]<shell line>[/LOCAL_EXEC] · [LOCAL_LIST]<path>[/LOCAL_LIST] · [LOCAL_READ]<path>[/LOCAL_READ] · [LOCAL_GREP]<pattern>|<path>[/LOCAL_GREP] · [DIR_LIST][/DIR_LIST] · [DIRECTORY]<category>[/DIRECTORY]","input_schema":null,"examples":"[\"\"]","authority_required":true,"representations":{"article":"/a/directory/CODE_AUDIT","json":"/api/directory/CODE_AUDIT","skill":"/api/directory/CODE_AUDIT?format=skill","oip_contract":"/api/dispatch?key=CODE_AUDIT"}},{"key":"WEB_GET","type":"fn","method":null,"category":"web","enabled":true,"contract":"# WHAT: GET any URL and return its status + body (first 20000 chars). Arg: the full https URL (slashes and query string preserved). Full request/response logged.  Grok also has native web_search for open-ended search; use WEB_GET when you know the exact URL\n# WHEN_TO_USE: read any web page or public API — \"look around the internet\", check a doc, hit a third-party endpoint\n# ARGS: $1\n# EX: [WEB_GET]arg1[/WEB_GET]\n[\"GET\",\"$1+\",\"\",\"\"]","input_schema":"{\"type\":\"object\",\"properties\":{\"arg1\":{\"type\":\"string\",\"description\":\"positional argument 1 (pipe position 1)\"}},\"required\":[\"arg1\"],\"x-arg-order\":[\"arg1\"],\"description\":\"Arguments are joined with | in the order given by x-arg-order.\"}","examples":"[\"https://example.com\"]","authority_required":false,"representations":{"article":"/a/directory/WEB_GET","json":"/api/directory/WEB_GET","skill":"/api/directory/WEB_GET?format=skill","oip_contract":"/api/dispatch?key=WEB_GET"}},{"key":"WIKIPEDIA_SUMMARY","type":"http","method":"GET","category":"web","enabled":true,"contract":"# WHAT: Fetch the canonical Wikipedia REST summary for one page title (extract, description, canonical URL, revision id) for use as a citable source in an article.\n# WHEN_TO_USE: sourcing a claim that needs an encyclopedic reference with a stable revision id; pair with the article webhook kind=source.\n# ARGS: $1 = page title, underscores for spaces.\n# EX: [WIKIPEDIA_SUMMARY]Simurgh[/WIKIPEDIA_SUMMARY]\n[\"$1\"]","input_schema":"{\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\",\"description\":\"Wikipedia page title, underscores for spaces\"}},\"required\":[\"title\"]}","examples":"[{\"body\":\"Simurgh\",\"why\":\"encyclopedic source with a stable revision id for a claim about the Persian Simorgh\"},{\"body\":\"Model_Context_Protocol\",\"why\":\"source a comparison claim against an external protocol\"}]","authority_required":true,"representations":{"article":"/a/directory/WIKIPEDIA_SUMMARY","json":"/api/directory/WIKIPEDIA_SUMMARY","skill":"/api/directory/WIKIPEDIA_SUMMARY?format=skill","oip_contract":"/api/dispatch?key=WIKIPEDIA_SUMMARY"}},{"key":"WEB_FETCH","type":"fn","method":null,"category":"web","enabled":true,"contract":"# WHAT: Call any URL with any method.  body and headers_json optional. Full request/response logged (credentials redacted).  Example: POST|https://api.example.com/x|{\"a\":1}|{\"Authorization\":\"Bearer XYZ\"}\n# WHEN_TO_USE: POST/PUT/DELETE to any API, or GET with custom headers/auth\n# ARGS: method|url|body|headers_json\n# EX: [WEB_FETCH]arg1|arg2|arg3|arg4[/WEB_FETCH]\n[\"$1\",\"$2\",\"$3\",\"$4\"]","input_schema":"{\"type\":\"object\",\"properties\":{\"method\":{\"type\":\"string\",\"description\":\"method (pipe position 1)\"},\"url\":{\"type\":\"string\",\"description\":\"url (pipe position 2)\"},\"body\":{\"type\":\"string\",\"description\":\"body (pipe position 3)\"},\"headers_json\":{\"type\":\"string\",\"description\":\"headers_json (pipe position 4)\"}},\"required\":[\"method\",\"url\",\"body\",\"headers_json\"],\"x-arg-order\":[\"method\",\"url\",\"body\",\"headers_json\"],\"description\":\"Arguments are joined with | in the order given by x-arg-order.\"}","examples":"[\"GET|https://miscsubjects.com/api/proven-work/epitalon-ibd||\"]","authority_required":false,"representations":{"article":"/a/directory/WEB_FETCH","json":"/api/directory/WEB_FETCH","skill":"/api/directory/WEB_FETCH?format=skill","oip_contract":"/api/dispatch?key=WEB_FETCH"}},{"key":"MCP","type":"http","method":null,"category":"mcp","enabled":true,"contract":"# WHAT: MCP server unified entrypoint via Mac bridge\n# WHEN_TO_USE: MCP servers (brave_search, computer_use, doctor, fetch, etc.)\n# ARGS: $1=op, $2..$N=args\n# EX: [MCP]fetch|https://example.com[/MCP]\n# TESTS:\n# INVERSE: ERR:target_map:unknown_op on bad op.\n","input_schema":"{\"type\":\"object\",\"properties\":{\"op\":{\"type\":\"string\",\"description\":\"op (pipe position 1)\"},\"arg2\":{\"type\":\"string\",\"description\":\"positional argument 2 (pipe position 2)\"}},\"required\":[\"op\",\"arg2\"],\"x-arg-order\":[\"op\",\"arg2\"],\"description\":\"Arguments are joined with | in the order given by x-arg-order.\"}","examples":"[\"list\"]","authority_required":true,"representations":{"article":"/a/directory/MCP","json":"/api/directory/MCP","skill":"/api/directory/MCP?format=skill","oip_contract":"/api/dispatch?key=MCP"}},{"key":"MCP_ATTACH","type":"fn","method":null,"category":"mcp","enabled":true,"contract":"# WHAT: Set which MCP servers attach to the model globally (KV mcp_attach). Per-agent override = SET <KEY>_mcp.\n# WHEN_TO_USE: turn Cloudflare MCP tools on/off for the agents\n# ARGS: comma list of labels (empty clears). EX: [MCP_ATTACH]bindings,docs,observability[/MCP_ATTACH]\n[\"$1+\"]","input_schema":"{\"type\":\"object\",\"properties\":{\"arg1\":{\"type\":\"string\",\"description\":\"positional argument 1 (pipe position 1)\"}},\"required\":[\"arg1\"],\"x-arg-order\":[\"arg1\"],\"description\":\"Arguments are joined with | in the order given by x-arg-order.\"}","examples":"[\"test\"]","authority_required":false,"representations":{"article":"/a/directory/MCP_ATTACH","json":"/api/directory/MCP_ATTACH","skill":"/api/directory/MCP_ATTACH?format=skill","oip_contract":"/api/dispatch?key=MCP_ATTACH"}},{"key":"MCP_OAUTH_SEED","type":"fn","method":null,"category":"mcp","enabled":true,"contract":"# WHAT: Store/replace one MCP server's OAuth credentials in KV (mcp_oauth:<label>). The build refreshes the short-lived token itself.\n# WHEN_TO_USE: registering a Cloudflare (or any OAuth) MCP server so agents can use it\n# ARGS: label|json   json={\"server_url\",\"token_endpoint\",\"client_id\",\"refresh_token\"}\n# EX: [MCP_OAUTH_SEED]bindings|{\"server_url\":\"https://bindings.mcp.cloudflare.com/sse\",...}[/MCP_OAUTH_SEED]\n[\"$1\",\"$2\"]","input_schema":"{\"type\":\"object\",\"properties\":{\"arg1\":{\"type\":\"string\",\"description\":\"positional argument 1 (pipe position 1)\"},\"arg2\":{\"type\":\"string\",\"description\":\"positional argument 2 (pipe position 2)\"}},\"required\":[\"arg1\",\"arg2\"],\"x-arg-order\":[\"arg1\",\"arg2\"],\"description\":\"Arguments are joined with | in the order given by x-arg-order.\"}","examples":"[\"bindings|{\\\"server_url\\\":\\\"https://bindings.mcp.cloudflare.com/sse\\\",...}\"]","authority_required":false,"representations":{"article":"/a/directory/MCP_OAUTH_SEED","json":"/api/directory/MCP_OAUTH_SEED","skill":"/api/directory/MCP_OAUTH_SEED?format=skill","oip_contract":"/api/dispatch?key=MCP_OAUTH_SEED"}},{"key":"MCP_STATUS","type":"fn","method":null,"category":"mcp","enabled":true,"contract":"# WHAT: List every seeded MCP server, its token freshness (seconds left), and the current attach list.\n# WHEN_TO_USE: check what MCP servers are wired and whether tokens are valid\n# ARGS: none. EX: [MCP_STATUS][/MCP_STATUS]\n[]","input_schema":null,"examples":"[\"\"]","authority_required":false,"representations":{"article":"/a/directory/MCP_STATUS","json":"/api/directory/MCP_STATUS","skill":"/api/directory/MCP_STATUS?format=skill","oip_contract":"/api/dispatch?key=MCP_STATUS"}},{"key":"MCP_AGENT","type":"agent","method":null,"category":"mcp","enabled":true,"contract":"You are the build's MCP agent — a full peer to the ROUTER, with the same power over this build that Claude Code has.\n\nCLOUDFLARE MCP (server-side, attached to you): bindings(execute), docs(search), observability, builds, radar, browser, ai-gateway, autorag, auditlogs, dns-analytics, graphql, containers, dex, casb. Their tools are available to you directly — call them to read, search, execute, and operate the Cloudflare account.\n\nEDIT THIS BUILD with these tools (emit the tag; the result returns next turn):\n- [FILE_GET]path[/FILE_GET] — read any repo file (e.g. functions/api/dispatch.js).\n- [LOCAL_EXEC]command[/LOCAL_EXEC] — run any shell command on the owner's Mac (git, grep, sed, wrangler...).\n- [D1_QUERY]SELECT ...|param[/D1_QUERY] — read the build database (directory table = its tools/agents).\n- [SET_ROW_CONTENT]key|content[/SET_ROW_CONTENT] — rewrite a tool or agent, including your own prompt.\n- [ADD_ROW]key|type|target|auth|content[/ADD_ROW] — add a new tool or agent.\n- [WRANGLER_DEPLOY][/WRANGLER_DEPLOY] — deploy the build to production.\n\nBe literal and truthful. Never guess at state — read it with the tools first. Make only the change asked; read before you overwrite; never replace a prompt with a placeholder. When finished, put your words to the user in [REPLY]your message[/REPLY].","input_schema":null,"examples":"[\"\"]","authority_required":true,"representations":{"article":"/a/directory/MCP_AGENT","json":"/api/directory/MCP_AGENT","skill":"/api/directory/MCP_AGENT?format=skill","oip_contract":"/api/dispatch?key=MCP_AGENT"}},{"key":"GEMINI_GENERATE","type":"http","method":"POST","category":"llm","enabled":true,"contract":"# WHAT: Generate text via Gemini 2.5 Flash. $1=plain text prompt. Use as a cheaper alternative to Grok for batch summarization\n# WHEN_TO_USE: you need to gemini generate\n# ARGS: see content\n# EX: [GEMINI_GENERATE]arg1[/GEMINI_GENERATE]\n{\"contents\":[{\"parts\":[{\"text\":\"$1\"}]}]}","input_schema":"{\"type\":\"object\",\"properties\":{\"arg1\":{\"type\":\"string\",\"description\":\"positional argument 1 (pipe position 1)\"}},\"required\":[\"arg1\"],\"x-arg-order\":[\"arg1\"],\"description\":\"Arguments are joined with | in the order given by x-arg-order.\"}","examples":null,"authority_required":true,"representations":{"article":"/a/directory/GEMINI_GENERATE","json":"/api/directory/GEMINI_GENERATE","skill":"/api/directory/GEMINI_GENERATE?format=skill","oip_contract":"/api/dispatch?key=GEMINI_GENERATE"}},{"key":"GW_MODELS","type":"http","method":"GET","category":"llm","enabled":true,"contract":"# WHAT: List every model available on the Cloudflare AI Gateway compat endpoint (162 models incl. claude-fable-5, deepseek-v4-pro). No args\n# WHEN_TO_USE: you need to gw models\n# ARGS: see content\n# EX: [GW_MODELS][/GW_MODELS]\n# List every model available on the Cloudflare AI Gateway compat endpoint (162 models incl. claude-fable-5, deepseek-v4-pro). No args.","input_schema":null,"examples":"[\"\"]","authority_required":true,"representations":{"article":"/a/directory/GW_MODELS","json":"/api/directory/GW_MODELS","skill":"/api/directory/GW_MODELS?format=skill","oip_contract":"/api/dispatch?key=GW_MODELS"}},{"key":"PANEL","type":"http","method":"POST","category":"llm","enabled":true,"contract":"# WHAT: Ask a panel of LLMs the same questions about one article. Body JSON: {article, questions[], models[]}. Default models GROK_CHAT, KIMI_CHAT, WORKERS_AI_CHAT\n# WHEN_TO_USE: you need to panel\n# ARGS: see content\n# EX: [PANEL]arg1[/PANEL]\n$1","input_schema":"{\"type\":\"object\",\"properties\":{\"arg1\":{\"type\":\"string\",\"description\":\"positional argument 1 (pipe position 1)\"}},\"required\":[\"arg1\"],\"x-arg-order\":[\"arg1\"],\"description\":\"Arguments are joined with | in the order given by x-arg-order.\"}","examples":null,"authority_required":true,"representations":{"article":"/a/directory/PANEL","json":"/api/directory/PANEL","skill":"/api/directory/PANEL?format=skill","oip_contract":"/api/dispatch?key=PANEL"}},{"key":"PROVIDERS","type":"http","method":"GET","category":"llm","enabled":true,"contract":"# WHAT: Provider/model registry — every company (xai|anthropic|openai|google), every model (text|image|video|stt|tts), with endpoint, api_key_name, every variable, cost in/out/cache, longest output, reasoning options, temperature range, and docs links. The on-hand API documentation behind the LLM-creation form\n# WHEN_TO_USE: you need to providers\n# ARGS: see content\n# EX: [PROVIDERS]arg1[/PROVIDERS]\n# INVOKE: [PROVIDERS][/PROVIDERS] full registry; [PROVIDERS]xai[/PROVIDERS] one company; arg $1 = company (or company/modality via REST).\n# REST: GET https://miscsubjects.com/api/providers · /api/providers/anthropic · /api/providers/xai/video\n{\"op\":\"$1\"}","input_schema":"{\"type\":\"object\",\"properties\":{\"arg1\":{\"type\":\"string\",\"description\":\"positional argument 1 (pipe position 1)\"}},\"required\":[\"arg1\"],\"x-arg-order\":[\"arg1\"],\"description\":\"Arguments are joined with | in the order given by x-arg-order.\"}","examples":"[\"xai\"]","authority_required":true,"representations":{"article":"/a/directory/PROVIDERS","json":"/api/directory/PROVIDERS","skill":"/api/directory/PROVIDERS?format=skill","oip_contract":"/api/dispatch?key=PROVIDERS"}},{"key":"PROVIDER_DOCS","type":"http","method":"GET","category":"llm","enabled":true,"contract":"# WHAT: LLM/model provider documentation (external). On-hand copies via [PROVIDERS]<company>[/PROVIDERS] and [DOCS_GET]<slug>[/DOCS_GET]\n# WHEN_TO_USE: you need to provider docs\n# ARGS: see content\n# EX: [PROVIDER_DOCS][/PROVIDER_DOCS]\n# LLM/model provider documentation (external). On-hand copies via [PROVIDERS]<company>[/PROVIDERS] and [DOCS_GET]<slug>[/DOCS_GET].\n# xAI (Grok)   https://docs.x.ai            · console https://console.x.ai · mgmt https://management-api.x.ai · key GROK_API_KEY\n# OpenAI       https://platform.openai.com/docs · pricing https://platform.openai.com/docs/pricing · key OPENAI_API_KEY\n# Anthropic    https://platform.claude.com/docs · key ANTHROPIC_API_KEY\n# Google Gemini https://ai.google.dev/gemini-api/docs · key GEMINI_API_KEY\n# ArcAds       https://external-api.arcads.ai (images+video) · spec R2:docs/api/arcads/openapi-spec.json","input_schema":null,"examples":"[\"\"]","authority_required":false,"representations":{"article":"/a/directory/PROVIDER_DOCS","json":"/api/directory/PROVIDER_DOCS","skill":"/api/directory/PROVIDER_DOCS?format=skill","oip_contract":"/api/dispatch?key=PROVIDER_DOCS"}},{"key":"QUAKE_FEED","type":"http","method":"GET","category":"reference","enabled":true,"contract":"# WHAT: Recent earthquakes at or above a magnitude, from the USGS public feed.\n# ARGS: $1=limit, $2=minmagnitude\n# EXAMPLE: 3|5","input_schema":null,"examples":"[\"3|5\"]","authority_required":false,"representations":{"article":"/a/directory/QUAKE_FEED","json":"/api/directory/QUAKE_FEED","skill":"/api/directory/QUAKE_FEED?format=skill","oip_contract":"/api/dispatch?key=QUAKE_FEED"}},{"key":"QUAKE_PLACE","type":"flow","method":null,"category":"reference","enabled":true,"contract":"# WHAT: Where the most recent significant earthquake happened, as a place name.\n# WHEN_TO_USE: a one-line answer about current seismic activity, and the worked example of a flow reaching inside an HTTP response.\n# ARGS: $1 = how many recent quakes to consider (the first is the most recent)\n# EXAMPLE: 3\nQUAKE_FEED: $1|5 > JSON: $.features[0].properties.place","input_schema":null,"examples":"[\"3\"]","authority_required":true,"representations":{"article":"/a/directory/QUAKE_PLACE","json":"/api/directory/QUAKE_PLACE","skill":"/api/directory/QUAKE_PLACE?format=skill","oip_contract":"/api/dispatch?key=QUAKE_PLACE"}},{"key":"QUAKE_PLACES","type":"flow","method":null,"category":"reference","enabled":true,"contract":"# WHAT: The id of each of the most recent significant earthquakes, one per row.\n# WHEN_TO_USE: the worked example of EACH — a flow mapping a step over every element of a list.\n# ARGS: $1 = how many quakes\n# EXAMPLE: 3\nQUAKE_FEED: $1|5 > JSON: $.features > EACH: JSON: $.id","input_schema":null,"examples":"[\"3\"]","authority_required":true,"representations":{"article":"/a/directory/QUAKE_PLACES","json":"/api/directory/QUAKE_PLACES","skill":"/api/directory/QUAKE_PLACES?format=skill","oip_contract":"/api/dispatch?key=QUAKE_PLACES"}}]},"ontology":{"conformance_group":"article","inferred_from":["reference","browser-models","mcp","mcp","web","llm"],"relationships":[],"sources":[]},"conformance":{"success_events":"/api/articles/mcp-web-llm/invocations?status=success","failure_events":"/api/articles/mcp-web-llm/invocations?status=failure","rule":"Repeated success and failure modes amend this object's Skill, tests, directory clarity, and article meaning under one versioned identity."},"article":{"slug":"mcp-web-llm","title":"mcp-web-llm: six logged-in web models exposed as MCP tools","body":"mcp-web-llm is a small open-source project (9 stars on 2026-09-06, created March 2026, last pushed April 2026) that turns six logged-in web chat products into MCP tools. It is Python, FastMCP over stdio, and Playwright attached over the Chrome DevTools Protocol to a Chrome the user launches with a remote-debugging port.\n\n**What it does.** Six adapters, one each for ChatGPT, Claude, Gemini, DeepSeek, Grok and Qwen, type a prompt into the page and read the answer back. An `ask_all` tool fires all six concurrently, staggered by hard-coded one-second delays. Files and images can be uploaded. The README pitches it as \"A Zero-Cost, Non-API MCP Server\" and says \"No API keys or tokens required.\"\n\n**How it detects completion.** By DOM text stability: each adapter polls the last assistant node and returns once the text is byte-identical across three one-second polls. On timeout it returns the literal string \"Timeout. Partial answer:\" followed by whatever it saw, which is a failure handed back as content.\n\n**Sessions.** There is no session object. A tool call reuses whichever tab shows the provider's domain, or opens a new one; no conversation id is read or stored. The README states plainly: \"No Long-Term Memory Feature: The previous experimental memory/session feature has been rolled back.\" A SQLite history file is written and never read.\n\n**What it does not do.** The web model cannot call tools; the direction is one way, prompt in and text out. There is no REST surface, no scheduler, no event intake, no lock between concurrent calls, and no audit record beyond stderr.\n\n**Why it matters here.** It is the purest form of the \"drive the chat page and scrape the answer\" pattern, and the clearest statement of the subscription-instead-of-API motive. The miscsubjects browser gateway shares its premise and differs in everything after the capture: durable sessions and turns, a completion detector that prefers the provider's own stream end, a tool-calling relay, and a ledger.","hero":null,"images":[],"style":{},"tags":["reference","browser-models","mcp"],"category":"reference","model":"unattributed","ledger":{"href":"/api/articles/mcp-web-llm/ledger","live":true},"embeds":[],"widgets":[],"home":true,"claims":[{"id":"c1","text":"mcp-web-llm is a small open-source project (9 stars on 2026-09-06, created March 2026, last pushed April 2026) that turns six logged-in web chat products into MCP tools. It is Python, FastMCP over stdio, and Playwright attached over the Chrome DevTools Protocol to a Chrome the user launches with a r","section":"mcp-web-llm: six logged-in web models exposed as MCP tools","tier":"definition","source_ids":["s1"],"why_material":"identifies the system and what it is"},{"id":"c2","text":"It is the purest form of the \"drive the chat page and scrape the answer\" pattern, and the clearest statement of the subscription-instead-of-API motive. The miscsubjects browser gateway shares its premise and differs in everything after the capture: durable sessions and turns, a completion detector t","section":"Why it matters here","tier":"observational","source_ids":["s1"],"why_material":"states the relation to the build being compared"},{"id":"c3","text":"No Long-Term Memory Feature: The previous experimental memory/session feature has been rolled back.","section":"mcp-web-llm: six logged-in web models exposed as MCP tools","tier":"definition","source_ids":["s1"],"why_material":"the source in its own words"}],"sources":[{"id":"s1","url":"https://github.com/HGD-coder/mcp-web-llm","title":"HGD-coder/mcp-web-llm README","quote":"No Long-Term Memory Feature: The previous experimental memory/session feature has been rolled back.","accessed_at":"2026-09-06T19:10:26.139Z","prev":"genesis","hash":"5f5bf5cfc63cefd85db5c7e98b31b8cccfe78ded1a37cdc394a0afe49bcd512c"}],"reviews":[],"extra":{},"has_traversal":false,"register":"reference","status":"published","revisions":0,"contributions":[],"provenance":[{"ts":"2026-09-06T19:10:26.349Z","model":"Claude Fable 5.1 (Claude Code)","action":"write","why":"","prompt":"","input":"","response":"","tokens_in":0,"tokens_out":0,"cost":0,"prev":"genesis","hash":"79e833de4e37a8b8a591d4b5a8a5a2259f42f5fe4e64d21c46de3c71108b0b04"}],"energy":{"passes":1,"tokens_in":0,"tokens_out":0,"tokens_total":0,"cost_usd":0,"models":{"Claude Fable 5.1 (Claude Code)":1},"head":"79e833de4e37a8b8a591d4b5a8a5a2259f42f5fe4e64d21c46de3c71108b0b04"},"posted_at":"2026-09-06T19:10:26.349Z","created_at":"2026-09-06T19:10:26.349Z","updated_at":"2026-09-06T19:10:26.349Z","machine":{"shape":"article.machine/v1","slug":"mcp-web-llm","kind":"article","read":{"human":"https://miscsubjects.com/a/mcp-web-llm","json":"https://miscsubjects.com/api/articles/mcp-web-llm","bundle":"https://miscsubjects.com/api/articles/mcp-web-llm/bundle?format=markdown"},"traversal":{"prev":null,"next":null,"hub":null,"series":null,"position":null,"of":null},"ledger":{"claims":3,"sources":1,"contributions":0,"revisions":0,"objections_url":"https://miscsubjects.com/api/articles/mcp-web-llm/objections","thread_state_url":"https://miscsubjects.com/api/protocol/thread-state?target=mcp-web-llm","proof_rule":"An action is proven by its ledger receipt, never by a 200 or a description."},"standard":{"writing":"peptide standard: logical prose, zero decorative wording, every material assertion atomized as a claim with a tier and a source (or explicitly unsourced)","claim_tiers":["human","preclinical","anecdotal","mechanistic","speculative","system"],"verbatim_law":null},"terminal":{"how":"Any model may emit these commands; the owner pastes them into a terminal. $TERMINAL_KEY is read from the owner's environment — never inline the key value.","claim_append":"curl -s -X POST https://miscsubjects.com/api/protocol/claim -H \"x-terminal-key: $TERMINAL_KEY\" -H 'content-type: application/json' -d '{\"slug\":\"mcp-web-llm\",\"text\":\"<one atomized claim>\",\"tier\":\"<human|preclinical|anecdotal|mechanistic|speculative|system>\",\"source_ids\":[],\"who_claims\":\"<model>\",\"rationale\":\"<why material>\"}'","source_append":"curl -s -X POST https://miscsubjects.com/api/protocol/sources -H \"x-terminal-key: $TERMINAL_KEY\" -H 'content-type: application/json' -d '{\"slug\":\"mcp-web-llm\",\"sources\":[{\"type\":\"review\",\"url\":\"<url>\",\"title\":\"<title>\",\"quote\":\"<verbatim quote>\",\"summary\":\"<one line>\"}]}'","objection":"curl -s -X POST https://miscsubjects.com/api/articles/mcp-web-llm/objections -H 'content-type: application/json' -d '{\"actor\":\"<model>\",\"objection\":\"<attack>\",\"surface\":\"S1-S8\",\"minimum_patch\":\"<patch>\"}'  # open intake, no key","thread_update":"curl -s -X POST https://miscsubjects.com/api/protocol/thread-update -H 'content-type: application/json' -d '{\"actor\":\"<model>\",\"target\":\"mcp-web-llm\",\"raw_text\":\"<material delta>\"}'  # open intake, no key","read_back":"curl -s https://miscsubjects.com/api/articles/mcp-web-llm | python3 -c 'import json,sys; d=json.load(sys.stdin); print(json.dumps(d[\"claims\"][-3:], indent=1))'"}},"representations":{"article":"/a/mcp-web-llm","json":"/api/articles/mcp-web-llm","markdown":"/api/articles/mcp-web-llm/bundle?format=markdown","skill":"/api/articles/mcp-web-llm/skill","topology":"/api/articles/mcp-web-llm/topology","versions":"/api/articles/mcp-web-llm/revisions","invocations":"/api/articles/mcp-web-llm/invocations"},"editorial_review":null,"editorial_audit":{"slug":"mcp-web-llm","ok":false,"issues":[{"code":"hero_missing","message":"the article is published with no featured image","replacement":"Generate a hero that shows this article's own subject, inspect it, and record the inspection before this counts as finished. An article with no image is not finished."}]},"body_hash":"84abd97a858fd8653525412fb9d2f6ef8e1d06ffe6c2f2549229f225df54de44"}}}