[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-posthog-mcp-servers":3,"mdc-pvaup2-key":31,"related-repo-posthog-mcp-servers":2069,"related-org-posthog-mcp-servers":2097},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":20,"repoUrl":21,"updatedAt":22,"license":23,"forks":24,"topics":25,"repo":26,"sourceUrl":29,"mdContent":30},"mcp-servers","configure and manage MCP servers","Install, configure, authenticate, and troubleshoot MCP (Model Context Protocol) servers for this agent. Use when the user asks to add\u002Finstall\u002Fremove an MCP server, connect a tool like Linear\u002FSentry\u002FSupabase\u002FGitHub via MCP, set up mcp.json, or when MCP tools are failing or need OAuth login.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"posthog","PostHog","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fposthog.png",[12,14,17],{"name":9,"slug":8,"type":13},"tag",{"name":15,"slug":16,"type":13},"MCP","mcp",{"name":18,"slug":19,"type":13},"API Development","api-development",162,"https:\u002F\u002Fgithub.com\u002FPostHog\u002Fcode","2026-07-10T06:50:31.6926",null,58,[],{"repoUrl":21,"stars":20,"forks":24,"topics":27,"description":28},[],"The era of self-driving development is here","https:\u002F\u002Fgithub.com\u002FPostHog\u002Fcode\u002Ftree\u002FHEAD\u002Fpackages\u002Fharness\u002Fsrc\u002Fextensions\u002Fmcp\u002Fskills\u002Fmcp-servers","---\nname: mcp-servers\ndescription: Install, configure, authenticate, and troubleshoot MCP (Model Context Protocol) servers for this agent. Use when the user asks to add\u002Finstall\u002Fremove an MCP server, connect a tool like Linear\u002FSentry\u002FSupabase\u002FGitHub via MCP, set up mcp.json, or when MCP tools are failing or need OAuth login.\n---\n\n# MCP servers\n\nThis agent has a built-in MCP client. Servers are declared in `mcp.json`; their tools\nappear as `mcp_\u003Cserver>_\u003Ctool>` once connected. The model can also always find and call\nMCP tools via a single `mcp` proxy tool (`mcp({ search: \"...\" })` \u002F `mcp({ tool: \"...\", args }`)\nwithout their schemas ever being loaded into context, and without a `lifecycle: \"lazy\"`\nserver being connected until one of its tools is actually needed — see \"Context window\ncontrol\" below.\n\n## Config files\n\n| File | Scope |\n| --- | --- |\n| `~\u002F.pi\u002Fagent\u002Fmcp.json` | global (all projects) |\n| `\u003Cproject>\u002F.pi\u002Fmcp.json` | project-local, only honored in trusted projects |\n\nProject entries override global entries with the same server name; project `settings`\nkeys override global ones per key. Prefer project-local config for project-specific\nservers, global for personal\u002Fgeneral-purpose ones. Create the file if it doesn't exist.\n\n**Applying changes:** config is read at session start. After editing `mcp.json`, tell\nthe user to run `\u002Freload` (this re-reads config, restarts servers, and refreshes tools).\nYou cannot run `\u002Freload` yourself.\n\n## Config format\n\n```json\n{\n  \"settings\": {\n    \"toolPrefix\": \"mcp\",\n    \"requestTimeoutMs\": 30000,\n    \"maxRetries\": 3,\n    \"searchResultLimit\": 15\n  },\n  \"mcpServers\": {\n    \"\u003Cserver-name>\": { ... }\n  }\n}\n```\n\n`settings` is optional. Server names: keep them short and lowercase; they become part\nof tool names.\n\n### Local (stdio) server — spawned as a subprocess\n\n```json\n{\n  \"mcpServers\": {\n    \"filesystem\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol\u002Fserver-filesystem\", \"\u002Fworkspace\"],\n      \"env\": { \"SOME_VAR\": \"literal-value\" }\n    }\n  }\n}\n```\n\n- `command` is required; `transport` defaults to `\"stdio\"`.\n- `env` values are literals merged over the parent environment — there is **no**\n  `${VAR}` interpolation. If a server needs a secret, ask the user to provide it or\n  reference their shell environment by launching via a wrapper script.\n- Most published servers run via `npx -y \u003Cpackage>` (Node) or `uvx \u003Cpackage>` (Python).\n  If unsure of the package name, search the web for \"\u003Cproduct> MCP server\".\n\n### Remote (HTTP) server\n\n```json\n{\n  \"mcpServers\": {\n    \"internal\": {\n      \"transport\": \"streamable-http\",\n      \"url\": \"https:\u002F\u002Fmcp.example.com\u002Fmcp\",\n      \"headers\": { \"Authorization\": \"Bearer \u003Capi-key>\" }\n    }\n  }\n}\n```\n\n- `transport`: `\"streamable-http\"` (preferred) or `\"sse\"` (legacy); `url` required.\n- `headers` is for static API-key auth. Never invent keys — ask the user for theirs.\n\n### Remote server with OAuth (user login in browser)\n\n```json\n{\n  \"mcpServers\": {\n    \"linear\": {\n      \"transport\": \"streamable-http\",\n      \"url\": \"https:\u002F\u002Fmcp.linear.app\u002Fmcp\",\n      \"auth\": { \"type\": \"oauth\" }\n    }\n  }\n}\n```\n\n- `auth: { \"type\": \"oauth\" }` is enough for most servers (discovery + dynamic client\n  registration + PKCE are automatic). Optional fields: `scope`, `clientId`,\n  `clientSecret`, `redirectUrl` (only for pre-registered clients), `clientName`.\n- After `\u002Freload`, the first connection will fail with \"Authentication required\" —\n  that is expected. Start the login yourself with the `mcp_auth` tool (opens the\n  user's browser), or tell the user to run `\u002Fmcp:auth \u003Cserver-name>`. Tokens are\n  stored and refreshed automatically afterwards.\n- OAuth is only valid for `streamable-http`\u002F`sse`, not `stdio`.\n- If dynamic client registration is rejected (e.g. a client-name policy error), set\n  `\"clientName\"` in the `auth` object and retry.\n\n### Other per-server options\n\n- `lifecycle`: `\"lazy\"` (default — starts on first use of one of its tools via the `mcp`\n  proxy tool, or manually with `\u002Fmcp:start \u003Cname>`) or `\"eager\"` (starts at session\n  start). Use eager only for a server you want connected from the very first turn.\n- `requestTimeoutMs`, `healthCheckIntervalMs`: numeric overrides, rarely needed.\n- `idleTimeoutMs`: `lifecycle: \"lazy\"` only — auto-disconnect this many ms after the\n  server's last tool call. Good for servers used in bursts, e.g. `600000` (10 min).\n- `description`: one-line summary shown by `mcp` search before this server has ever\n  connected (its real tool list isn't known yet). Set this on lazy servers so the model\n  can find them via search before the first connection.\n- `directTools`: `false` (default — all tools stay searchable-only via `mcp`), `true`\n  (all tools load straight into context), or an array of MCP-side tool names to keep\n  direct while the rest stay proxy-only. Set `true` (or list specific names) only for a\n  small server used on nearly every turn, where a `search` round-trip isn't worth it.\n\n## Context window control (the `mcp` proxy tool)\n\nA single `mcp` tool is always available, independent of `mcp.json`:\n\n- `mcp({ search: \"keywords\" })` — finds relevant tools\u002Fservers by keyword, including\n  ones that are not currently connected (their cached or configured `description`\n  metadata is searched instead of connecting).\n- `mcp({ tool: \"\u003Cname>\", args: '{\"key\":\"value\"}' })` — calls a tool by its exact name\n  (from search), starting its server automatically if needed. Passing a bare server\n  name instead of a tool name connects that server and lists its tools without calling\n  anything.\n\nYou do not need to do anything for this to work — it's automatic for every configured\nserver. Only mention `directTools`\u002F`idleTimeoutMs`\u002F`description` to the user if they\nask about reducing context usage or about servers not starting immediately.\n\n## Workflow for \"install X MCP server\"\n\n1. Find the server's package name (stdio) or MCP endpoint URL (remote). Use web search\n   if unsure; official docs usually show an `mcpServers` JSON snippet you can adapt.\n2. Decide global vs project config; read the existing file first and merge — do not\n   clobber other servers.\n3. Write the config. Validate: stdio needs `command`; http\u002Fsse needs `url`.\n4. Ask the user to run `\u002Freload`, then `\u002Fmcp` to confirm the server is `ready`. If it\n   uses OAuth, start the login with the `mcp_auth` tool once the server exists.\n\n## Agent tool\n\n- `mcp_auth` (`{ \"server\": \"\u003Cname>\" }`): queues the interactive browser OAuth flow for\n  a configured server. Use it when the user asks you to log in \u002F authenticate an MCP\n  server. The flow starts after your turn ends; the user completes it in the browser.\n\n## Commands (user-facing — suggest these, you cannot run them)\n\n| Command | Purpose |\n| --- | --- |\n| `\u002Fmcp` | status of all servers |\n| `\u002Fmcp \u003Cname>` | state, last error, recent server logs |\n| `\u002Fmcp:start \u003Cname>` \u002F `\u002Fmcp:stop \u003Cname>` | start\u002Fstop a server |\n| `\u002Fmcp:auth \u003Cname> [reset]` | browser OAuth login (`reset` wipes stored credentials) |\n| `\u002Freload` | apply mcp.json changes |\n\n## Troubleshooting\n\n- Server stuck at `stopped` with an error: suggest `\u002Fmcp \u003Cname>` to see its stderr log.\n  Common causes: package name typo, missing runtime (`npx`\u002F`uvx` not installed),\n  missing env var\u002FAPI key, wrong URL.\n- `401`\u002F`Unauthorized` on an OAuth server: `mcp_auth` tool or `\u002Fmcp:auth \u003Cname>`; if\n  it keeps failing, `\u002Fmcp:auth \u003Cname> reset`.\n- OAuth registration rejected with a client-name error: set `\"clientName\"` in the\n  server's `auth` config to a compliant name, `\u002Freload`, and retry the login.\n- Tools missing after config edit: `\u002Freload` was probably not run.\n- Project config ignored: the project may not be trusted; move the server to\n  `~\u002F.pi\u002Fagent\u002Fmcp.json` or have the user trust the project.\n",{"data":32,"body":33},{"name":4,"description":6},{"type":34,"children":35},"root",[36,44,98,105,167,180,213,219,488,498,505,764,845,851,1064,1110,1116,1327,1453,1459,1611,1624,1642,1674,1698,1704,1778,1784,1805,1811,1930,1936,2063],{"type":37,"tag":38,"props":39,"children":40},"element","h1",{"id":4},[41],{"type":42,"value":43},"text","MCP servers",{"type":37,"tag":45,"props":46,"children":47},"p",{},[48,50,57,59,65,67,72,74,80,82,88,90,96],{"type":42,"value":49},"This agent has a built-in MCP client. Servers are declared in ",{"type":37,"tag":51,"props":52,"children":54},"code",{"className":53},[],[55],{"type":42,"value":56},"mcp.json",{"type":42,"value":58},"; their tools\nappear as ",{"type":37,"tag":51,"props":60,"children":62},{"className":61},[],[63],{"type":42,"value":64},"mcp_\u003Cserver>_\u003Ctool>",{"type":42,"value":66}," once connected. The model can also always find and call\nMCP tools via a single ",{"type":37,"tag":51,"props":68,"children":70},{"className":69},[],[71],{"type":42,"value":16},{"type":42,"value":73}," proxy tool (",{"type":37,"tag":51,"props":75,"children":77},{"className":76},[],[78],{"type":42,"value":79},"mcp({ search: \"...\" })",{"type":42,"value":81}," \u002F ",{"type":37,"tag":51,"props":83,"children":85},{"className":84},[],[86],{"type":42,"value":87},"mcp({ tool: \"...\", args }",{"type":42,"value":89},")\nwithout their schemas ever being loaded into context, and without a ",{"type":37,"tag":51,"props":91,"children":93},{"className":92},[],[94],{"type":42,"value":95},"lifecycle: \"lazy\"",{"type":42,"value":97},"\nserver being connected until one of its tools is actually needed — see \"Context window\ncontrol\" below.",{"type":37,"tag":99,"props":100,"children":102},"h2",{"id":101},"config-files",[103],{"type":42,"value":104},"Config files",{"type":37,"tag":106,"props":107,"children":108},"table",{},[109,128],{"type":37,"tag":110,"props":111,"children":112},"thead",{},[113],{"type":37,"tag":114,"props":115,"children":116},"tr",{},[117,123],{"type":37,"tag":118,"props":119,"children":120},"th",{},[121],{"type":42,"value":122},"File",{"type":37,"tag":118,"props":124,"children":125},{},[126],{"type":42,"value":127},"Scope",{"type":37,"tag":129,"props":130,"children":131},"tbody",{},[132,150],{"type":37,"tag":114,"props":133,"children":134},{},[135,145],{"type":37,"tag":136,"props":137,"children":138},"td",{},[139],{"type":37,"tag":51,"props":140,"children":142},{"className":141},[],[143],{"type":42,"value":144},"~\u002F.pi\u002Fagent\u002Fmcp.json",{"type":37,"tag":136,"props":146,"children":147},{},[148],{"type":42,"value":149},"global (all projects)",{"type":37,"tag":114,"props":151,"children":152},{},[153,162],{"type":37,"tag":136,"props":154,"children":155},{},[156],{"type":37,"tag":51,"props":157,"children":159},{"className":158},[],[160],{"type":42,"value":161},"\u003Cproject>\u002F.pi\u002Fmcp.json",{"type":37,"tag":136,"props":163,"children":164},{},[165],{"type":42,"value":166},"project-local, only honored in trusted projects",{"type":37,"tag":45,"props":168,"children":169},{},[170,172,178],{"type":42,"value":171},"Project entries override global entries with the same server name; project ",{"type":37,"tag":51,"props":173,"children":175},{"className":174},[],[176],{"type":42,"value":177},"settings",{"type":42,"value":179},"\nkeys override global ones per key. Prefer project-local config for project-specific\nservers, global for personal\u002Fgeneral-purpose ones. Create the file if it doesn't exist.",{"type":37,"tag":45,"props":181,"children":182},{},[183,189,191,196,198,204,206,211],{"type":37,"tag":184,"props":185,"children":186},"strong",{},[187],{"type":42,"value":188},"Applying changes:",{"type":42,"value":190}," config is read at session start. After editing ",{"type":37,"tag":51,"props":192,"children":194},{"className":193},[],[195],{"type":42,"value":56},{"type":42,"value":197},", tell\nthe user to run ",{"type":37,"tag":51,"props":199,"children":201},{"className":200},[],[202],{"type":42,"value":203},"\u002Freload",{"type":42,"value":205}," (this re-reads config, restarts servers, and refreshes tools).\nYou cannot run ",{"type":37,"tag":51,"props":207,"children":209},{"className":208},[],[210],{"type":42,"value":203},{"type":42,"value":212}," yourself.",{"type":37,"tag":99,"props":214,"children":216},{"id":215},"config-format",[217],{"type":42,"value":218},"Config format",{"type":37,"tag":220,"props":221,"children":226},"pre",{"className":222,"code":223,"language":224,"meta":225,"style":225},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"settings\": {\n    \"toolPrefix\": \"mcp\",\n    \"requestTimeoutMs\": 30000,\n    \"maxRetries\": 3,\n    \"searchResultLimit\": 15\n  },\n  \"mcpServers\": {\n    \"\u003Cserver-name>\": { ... }\n  }\n}\n","json","",[227],{"type":37,"tag":51,"props":228,"children":229},{"__ignoreMap":225},[230,242,271,313,344,374,400,409,434,471,480],{"type":37,"tag":231,"props":232,"children":235},"span",{"class":233,"line":234},"line",1,[236],{"type":37,"tag":231,"props":237,"children":239},{"style":238},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[240],{"type":42,"value":241},"{\n",{"type":37,"tag":231,"props":243,"children":245},{"class":233,"line":244},2,[246,251,256,261,266],{"type":37,"tag":231,"props":247,"children":248},{"style":238},[249],{"type":42,"value":250},"  \"",{"type":37,"tag":231,"props":252,"children":254},{"style":253},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[255],{"type":42,"value":177},{"type":37,"tag":231,"props":257,"children":258},{"style":238},[259],{"type":42,"value":260},"\"",{"type":37,"tag":231,"props":262,"children":263},{"style":238},[264],{"type":42,"value":265},":",{"type":37,"tag":231,"props":267,"children":268},{"style":238},[269],{"type":42,"value":270}," {\n",{"type":37,"tag":231,"props":272,"children":274},{"class":233,"line":273},3,[275,280,286,290,294,299,304,308],{"type":37,"tag":231,"props":276,"children":277},{"style":238},[278],{"type":42,"value":279},"    \"",{"type":37,"tag":231,"props":281,"children":283},{"style":282},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[284],{"type":42,"value":285},"toolPrefix",{"type":37,"tag":231,"props":287,"children":288},{"style":238},[289],{"type":42,"value":260},{"type":37,"tag":231,"props":291,"children":292},{"style":238},[293],{"type":42,"value":265},{"type":37,"tag":231,"props":295,"children":296},{"style":238},[297],{"type":42,"value":298}," \"",{"type":37,"tag":231,"props":300,"children":302},{"style":301},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[303],{"type":42,"value":16},{"type":37,"tag":231,"props":305,"children":306},{"style":238},[307],{"type":42,"value":260},{"type":37,"tag":231,"props":309,"children":310},{"style":238},[311],{"type":42,"value":312},",\n",{"type":37,"tag":231,"props":314,"children":316},{"class":233,"line":315},4,[317,321,326,330,334,340],{"type":37,"tag":231,"props":318,"children":319},{"style":238},[320],{"type":42,"value":279},{"type":37,"tag":231,"props":322,"children":323},{"style":282},[324],{"type":42,"value":325},"requestTimeoutMs",{"type":37,"tag":231,"props":327,"children":328},{"style":238},[329],{"type":42,"value":260},{"type":37,"tag":231,"props":331,"children":332},{"style":238},[333],{"type":42,"value":265},{"type":37,"tag":231,"props":335,"children":337},{"style":336},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[338],{"type":42,"value":339}," 30000",{"type":37,"tag":231,"props":341,"children":342},{"style":238},[343],{"type":42,"value":312},{"type":37,"tag":231,"props":345,"children":347},{"class":233,"line":346},5,[348,352,357,361,365,370],{"type":37,"tag":231,"props":349,"children":350},{"style":238},[351],{"type":42,"value":279},{"type":37,"tag":231,"props":353,"children":354},{"style":282},[355],{"type":42,"value":356},"maxRetries",{"type":37,"tag":231,"props":358,"children":359},{"style":238},[360],{"type":42,"value":260},{"type":37,"tag":231,"props":362,"children":363},{"style":238},[364],{"type":42,"value":265},{"type":37,"tag":231,"props":366,"children":367},{"style":336},[368],{"type":42,"value":369}," 3",{"type":37,"tag":231,"props":371,"children":372},{"style":238},[373],{"type":42,"value":312},{"type":37,"tag":231,"props":375,"children":377},{"class":233,"line":376},6,[378,382,387,391,395],{"type":37,"tag":231,"props":379,"children":380},{"style":238},[381],{"type":42,"value":279},{"type":37,"tag":231,"props":383,"children":384},{"style":282},[385],{"type":42,"value":386},"searchResultLimit",{"type":37,"tag":231,"props":388,"children":389},{"style":238},[390],{"type":42,"value":260},{"type":37,"tag":231,"props":392,"children":393},{"style":238},[394],{"type":42,"value":265},{"type":37,"tag":231,"props":396,"children":397},{"style":336},[398],{"type":42,"value":399}," 15\n",{"type":37,"tag":231,"props":401,"children":403},{"class":233,"line":402},7,[404],{"type":37,"tag":231,"props":405,"children":406},{"style":238},[407],{"type":42,"value":408},"  },\n",{"type":37,"tag":231,"props":410,"children":412},{"class":233,"line":411},8,[413,417,422,426,430],{"type":37,"tag":231,"props":414,"children":415},{"style":238},[416],{"type":42,"value":250},{"type":37,"tag":231,"props":418,"children":419},{"style":253},[420],{"type":42,"value":421},"mcpServers",{"type":37,"tag":231,"props":423,"children":424},{"style":238},[425],{"type":42,"value":260},{"type":37,"tag":231,"props":427,"children":428},{"style":238},[429],{"type":42,"value":265},{"type":37,"tag":231,"props":431,"children":432},{"style":238},[433],{"type":42,"value":270},{"type":37,"tag":231,"props":435,"children":437},{"class":233,"line":436},9,[438,442,447,451,455,460,466],{"type":37,"tag":231,"props":439,"children":440},{"style":238},[441],{"type":42,"value":279},{"type":37,"tag":231,"props":443,"children":444},{"style":282},[445],{"type":42,"value":446},"\u003Cserver-name>",{"type":37,"tag":231,"props":448,"children":449},{"style":238},[450],{"type":42,"value":260},{"type":37,"tag":231,"props":452,"children":453},{"style":238},[454],{"type":42,"value":265},{"type":37,"tag":231,"props":456,"children":457},{"style":238},[458],{"type":42,"value":459}," {",{"type":37,"tag":231,"props":461,"children":463},{"style":462},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[464],{"type":42,"value":465}," ... ",{"type":37,"tag":231,"props":467,"children":468},{"style":238},[469],{"type":42,"value":470},"}\n",{"type":37,"tag":231,"props":472,"children":474},{"class":233,"line":473},10,[475],{"type":37,"tag":231,"props":476,"children":477},{"style":238},[478],{"type":42,"value":479},"  }\n",{"type":37,"tag":231,"props":481,"children":483},{"class":233,"line":482},11,[484],{"type":37,"tag":231,"props":485,"children":486},{"style":238},[487],{"type":42,"value":470},{"type":37,"tag":45,"props":489,"children":490},{},[491,496],{"type":37,"tag":51,"props":492,"children":494},{"className":493},[],[495],{"type":42,"value":177},{"type":42,"value":497}," is optional. Server names: keep them short and lowercase; they become part\nof tool names.",{"type":37,"tag":499,"props":500,"children":502},"h3",{"id":501},"local-stdio-server-spawned-as-a-subprocess",[503],{"type":42,"value":504},"Local (stdio) server — spawned as a subprocess",{"type":37,"tag":220,"props":506,"children":508},{"className":222,"code":507,"language":224,"meta":225,"style":225},"{\n  \"mcpServers\": {\n    \"filesystem\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol\u002Fserver-filesystem\", \"\u002Fworkspace\"],\n      \"env\": { \"SOME_VAR\": \"literal-value\" }\n    }\n  }\n}\n",[509],{"type":37,"tag":51,"props":510,"children":511},{"__ignoreMap":225},[512,519,542,566,604,682,742,750,757],{"type":37,"tag":231,"props":513,"children":514},{"class":233,"line":234},[515],{"type":37,"tag":231,"props":516,"children":517},{"style":238},[518],{"type":42,"value":241},{"type":37,"tag":231,"props":520,"children":521},{"class":233,"line":244},[522,526,530,534,538],{"type":37,"tag":231,"props":523,"children":524},{"style":238},[525],{"type":42,"value":250},{"type":37,"tag":231,"props":527,"children":528},{"style":253},[529],{"type":42,"value":421},{"type":37,"tag":231,"props":531,"children":532},{"style":238},[533],{"type":42,"value":260},{"type":37,"tag":231,"props":535,"children":536},{"style":238},[537],{"type":42,"value":265},{"type":37,"tag":231,"props":539,"children":540},{"style":238},[541],{"type":42,"value":270},{"type":37,"tag":231,"props":543,"children":544},{"class":233,"line":273},[545,549,554,558,562],{"type":37,"tag":231,"props":546,"children":547},{"style":238},[548],{"type":42,"value":279},{"type":37,"tag":231,"props":550,"children":551},{"style":282},[552],{"type":42,"value":553},"filesystem",{"type":37,"tag":231,"props":555,"children":556},{"style":238},[557],{"type":42,"value":260},{"type":37,"tag":231,"props":559,"children":560},{"style":238},[561],{"type":42,"value":265},{"type":37,"tag":231,"props":563,"children":564},{"style":238},[565],{"type":42,"value":270},{"type":37,"tag":231,"props":567,"children":568},{"class":233,"line":315},[569,574,579,583,587,591,596,600],{"type":37,"tag":231,"props":570,"children":571},{"style":238},[572],{"type":42,"value":573},"      \"",{"type":37,"tag":231,"props":575,"children":576},{"style":336},[577],{"type":42,"value":578},"command",{"type":37,"tag":231,"props":580,"children":581},{"style":238},[582],{"type":42,"value":260},{"type":37,"tag":231,"props":584,"children":585},{"style":238},[586],{"type":42,"value":265},{"type":37,"tag":231,"props":588,"children":589},{"style":238},[590],{"type":42,"value":298},{"type":37,"tag":231,"props":592,"children":593},{"style":301},[594],{"type":42,"value":595},"npx",{"type":37,"tag":231,"props":597,"children":598},{"style":238},[599],{"type":42,"value":260},{"type":37,"tag":231,"props":601,"children":602},{"style":238},[603],{"type":42,"value":312},{"type":37,"tag":231,"props":605,"children":606},{"class":233,"line":346},[607,611,616,620,624,629,633,638,642,647,651,656,660,664,668,673,677],{"type":37,"tag":231,"props":608,"children":609},{"style":238},[610],{"type":42,"value":573},{"type":37,"tag":231,"props":612,"children":613},{"style":336},[614],{"type":42,"value":615},"args",{"type":37,"tag":231,"props":617,"children":618},{"style":238},[619],{"type":42,"value":260},{"type":37,"tag":231,"props":621,"children":622},{"style":238},[623],{"type":42,"value":265},{"type":37,"tag":231,"props":625,"children":626},{"style":238},[627],{"type":42,"value":628}," [",{"type":37,"tag":231,"props":630,"children":631},{"style":238},[632],{"type":42,"value":260},{"type":37,"tag":231,"props":634,"children":635},{"style":301},[636],{"type":42,"value":637},"-y",{"type":37,"tag":231,"props":639,"children":640},{"style":238},[641],{"type":42,"value":260},{"type":37,"tag":231,"props":643,"children":644},{"style":238},[645],{"type":42,"value":646},",",{"type":37,"tag":231,"props":648,"children":649},{"style":238},[650],{"type":42,"value":298},{"type":37,"tag":231,"props":652,"children":653},{"style":301},[654],{"type":42,"value":655},"@modelcontextprotocol\u002Fserver-filesystem",{"type":37,"tag":231,"props":657,"children":658},{"style":238},[659],{"type":42,"value":260},{"type":37,"tag":231,"props":661,"children":662},{"style":238},[663],{"type":42,"value":646},{"type":37,"tag":231,"props":665,"children":666},{"style":238},[667],{"type":42,"value":298},{"type":37,"tag":231,"props":669,"children":670},{"style":301},[671],{"type":42,"value":672},"\u002Fworkspace",{"type":37,"tag":231,"props":674,"children":675},{"style":238},[676],{"type":42,"value":260},{"type":37,"tag":231,"props":678,"children":679},{"style":238},[680],{"type":42,"value":681},"],\n",{"type":37,"tag":231,"props":683,"children":684},{"class":233,"line":376},[685,689,694,698,702,706,710,716,720,724,728,733,737],{"type":37,"tag":231,"props":686,"children":687},{"style":238},[688],{"type":42,"value":573},{"type":37,"tag":231,"props":690,"children":691},{"style":336},[692],{"type":42,"value":693},"env",{"type":37,"tag":231,"props":695,"children":696},{"style":238},[697],{"type":42,"value":260},{"type":37,"tag":231,"props":699,"children":700},{"style":238},[701],{"type":42,"value":265},{"type":37,"tag":231,"props":703,"children":704},{"style":238},[705],{"type":42,"value":459},{"type":37,"tag":231,"props":707,"children":708},{"style":238},[709],{"type":42,"value":298},{"type":37,"tag":231,"props":711,"children":713},{"style":712},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[714],{"type":42,"value":715},"SOME_VAR",{"type":37,"tag":231,"props":717,"children":718},{"style":238},[719],{"type":42,"value":260},{"type":37,"tag":231,"props":721,"children":722},{"style":238},[723],{"type":42,"value":265},{"type":37,"tag":231,"props":725,"children":726},{"style":238},[727],{"type":42,"value":298},{"type":37,"tag":231,"props":729,"children":730},{"style":301},[731],{"type":42,"value":732},"literal-value",{"type":37,"tag":231,"props":734,"children":735},{"style":238},[736],{"type":42,"value":260},{"type":37,"tag":231,"props":738,"children":739},{"style":238},[740],{"type":42,"value":741}," }\n",{"type":37,"tag":231,"props":743,"children":744},{"class":233,"line":402},[745],{"type":37,"tag":231,"props":746,"children":747},{"style":238},[748],{"type":42,"value":749},"    }\n",{"type":37,"tag":231,"props":751,"children":752},{"class":233,"line":411},[753],{"type":37,"tag":231,"props":754,"children":755},{"style":238},[756],{"type":42,"value":479},{"type":37,"tag":231,"props":758,"children":759},{"class":233,"line":436},[760],{"type":37,"tag":231,"props":761,"children":762},{"style":238},[763],{"type":42,"value":470},{"type":37,"tag":765,"props":766,"children":767},"ul",{},[768,795,818],{"type":37,"tag":769,"props":770,"children":771},"li",{},[772,777,779,785,787,793],{"type":37,"tag":51,"props":773,"children":775},{"className":774},[],[776],{"type":42,"value":578},{"type":42,"value":778}," is required; ",{"type":37,"tag":51,"props":780,"children":782},{"className":781},[],[783],{"type":42,"value":784},"transport",{"type":42,"value":786}," defaults to ",{"type":37,"tag":51,"props":788,"children":790},{"className":789},[],[791],{"type":42,"value":792},"\"stdio\"",{"type":42,"value":794},".",{"type":37,"tag":769,"props":796,"children":797},{},[798,803,805,810,816],{"type":37,"tag":51,"props":799,"children":801},{"className":800},[],[802],{"type":42,"value":693},{"type":42,"value":804}," values are literals merged over the parent environment — there is ",{"type":37,"tag":184,"props":806,"children":807},{},[808],{"type":42,"value":809},"no",{"type":37,"tag":51,"props":811,"children":813},{"className":812},[],[814],{"type":42,"value":815},"${VAR}",{"type":42,"value":817}," interpolation. If a server needs a secret, ask the user to provide it or\nreference their shell environment by launching via a wrapper script.",{"type":37,"tag":769,"props":819,"children":820},{},[821,823,829,831,837,839],{"type":42,"value":822},"Most published servers run via ",{"type":37,"tag":51,"props":824,"children":826},{"className":825},[],[827],{"type":42,"value":828},"npx -y \u003Cpackage>",{"type":42,"value":830}," (Node) or ",{"type":37,"tag":51,"props":832,"children":834},{"className":833},[],[835],{"type":42,"value":836},"uvx \u003Cpackage>",{"type":42,"value":838}," (Python).\nIf unsure of the package name, search the web for \"",{"type":37,"tag":840,"props":841,"children":842},"product",{},[843],{"type":42,"value":844}," MCP server\".",{"type":37,"tag":499,"props":846,"children":848},{"id":847},"remote-http-server",[849],{"type":42,"value":850},"Remote (HTTP) server",{"type":37,"tag":220,"props":852,"children":854},{"className":222,"code":853,"language":224,"meta":225,"style":225},"{\n  \"mcpServers\": {\n    \"internal\": {\n      \"transport\": \"streamable-http\",\n      \"url\": \"https:\u002F\u002Fmcp.example.com\u002Fmcp\",\n      \"headers\": { \"Authorization\": \"Bearer \u003Capi-key>\" }\n    }\n  }\n}\n",[855],{"type":37,"tag":51,"props":856,"children":857},{"__ignoreMap":225},[858,865,888,912,948,985,1043,1050,1057],{"type":37,"tag":231,"props":859,"children":860},{"class":233,"line":234},[861],{"type":37,"tag":231,"props":862,"children":863},{"style":238},[864],{"type":42,"value":241},{"type":37,"tag":231,"props":866,"children":867},{"class":233,"line":244},[868,872,876,880,884],{"type":37,"tag":231,"props":869,"children":870},{"style":238},[871],{"type":42,"value":250},{"type":37,"tag":231,"props":873,"children":874},{"style":253},[875],{"type":42,"value":421},{"type":37,"tag":231,"props":877,"children":878},{"style":238},[879],{"type":42,"value":260},{"type":37,"tag":231,"props":881,"children":882},{"style":238},[883],{"type":42,"value":265},{"type":37,"tag":231,"props":885,"children":886},{"style":238},[887],{"type":42,"value":270},{"type":37,"tag":231,"props":889,"children":890},{"class":233,"line":273},[891,895,900,904,908],{"type":37,"tag":231,"props":892,"children":893},{"style":238},[894],{"type":42,"value":279},{"type":37,"tag":231,"props":896,"children":897},{"style":282},[898],{"type":42,"value":899},"internal",{"type":37,"tag":231,"props":901,"children":902},{"style":238},[903],{"type":42,"value":260},{"type":37,"tag":231,"props":905,"children":906},{"style":238},[907],{"type":42,"value":265},{"type":37,"tag":231,"props":909,"children":910},{"style":238},[911],{"type":42,"value":270},{"type":37,"tag":231,"props":913,"children":914},{"class":233,"line":315},[915,919,923,927,931,935,940,944],{"type":37,"tag":231,"props":916,"children":917},{"style":238},[918],{"type":42,"value":573},{"type":37,"tag":231,"props":920,"children":921},{"style":336},[922],{"type":42,"value":784},{"type":37,"tag":231,"props":924,"children":925},{"style":238},[926],{"type":42,"value":260},{"type":37,"tag":231,"props":928,"children":929},{"style":238},[930],{"type":42,"value":265},{"type":37,"tag":231,"props":932,"children":933},{"style":238},[934],{"type":42,"value":298},{"type":37,"tag":231,"props":936,"children":937},{"style":301},[938],{"type":42,"value":939},"streamable-http",{"type":37,"tag":231,"props":941,"children":942},{"style":238},[943],{"type":42,"value":260},{"type":37,"tag":231,"props":945,"children":946},{"style":238},[947],{"type":42,"value":312},{"type":37,"tag":231,"props":949,"children":950},{"class":233,"line":346},[951,955,960,964,968,972,977,981],{"type":37,"tag":231,"props":952,"children":953},{"style":238},[954],{"type":42,"value":573},{"type":37,"tag":231,"props":956,"children":957},{"style":336},[958],{"type":42,"value":959},"url",{"type":37,"tag":231,"props":961,"children":962},{"style":238},[963],{"type":42,"value":260},{"type":37,"tag":231,"props":965,"children":966},{"style":238},[967],{"type":42,"value":265},{"type":37,"tag":231,"props":969,"children":970},{"style":238},[971],{"type":42,"value":298},{"type":37,"tag":231,"props":973,"children":974},{"style":301},[975],{"type":42,"value":976},"https:\u002F\u002Fmcp.example.com\u002Fmcp",{"type":37,"tag":231,"props":978,"children":979},{"style":238},[980],{"type":42,"value":260},{"type":37,"tag":231,"props":982,"children":983},{"style":238},[984],{"type":42,"value":312},{"type":37,"tag":231,"props":986,"children":987},{"class":233,"line":376},[988,992,997,1001,1005,1009,1013,1018,1022,1026,1030,1035,1039],{"type":37,"tag":231,"props":989,"children":990},{"style":238},[991],{"type":42,"value":573},{"type":37,"tag":231,"props":993,"children":994},{"style":336},[995],{"type":42,"value":996},"headers",{"type":37,"tag":231,"props":998,"children":999},{"style":238},[1000],{"type":42,"value":260},{"type":37,"tag":231,"props":1002,"children":1003},{"style":238},[1004],{"type":42,"value":265},{"type":37,"tag":231,"props":1006,"children":1007},{"style":238},[1008],{"type":42,"value":459},{"type":37,"tag":231,"props":1010,"children":1011},{"style":238},[1012],{"type":42,"value":298},{"type":37,"tag":231,"props":1014,"children":1015},{"style":712},[1016],{"type":42,"value":1017},"Authorization",{"type":37,"tag":231,"props":1019,"children":1020},{"style":238},[1021],{"type":42,"value":260},{"type":37,"tag":231,"props":1023,"children":1024},{"style":238},[1025],{"type":42,"value":265},{"type":37,"tag":231,"props":1027,"children":1028},{"style":238},[1029],{"type":42,"value":298},{"type":37,"tag":231,"props":1031,"children":1032},{"style":301},[1033],{"type":42,"value":1034},"Bearer \u003Capi-key>",{"type":37,"tag":231,"props":1036,"children":1037},{"style":238},[1038],{"type":42,"value":260},{"type":37,"tag":231,"props":1040,"children":1041},{"style":238},[1042],{"type":42,"value":741},{"type":37,"tag":231,"props":1044,"children":1045},{"class":233,"line":402},[1046],{"type":37,"tag":231,"props":1047,"children":1048},{"style":238},[1049],{"type":42,"value":749},{"type":37,"tag":231,"props":1051,"children":1052},{"class":233,"line":411},[1053],{"type":37,"tag":231,"props":1054,"children":1055},{"style":238},[1056],{"type":42,"value":479},{"type":37,"tag":231,"props":1058,"children":1059},{"class":233,"line":436},[1060],{"type":37,"tag":231,"props":1061,"children":1062},{"style":238},[1063],{"type":42,"value":470},{"type":37,"tag":765,"props":1065,"children":1066},{},[1067,1100],{"type":37,"tag":769,"props":1068,"children":1069},{},[1070,1075,1077,1083,1085,1091,1093,1098],{"type":37,"tag":51,"props":1071,"children":1073},{"className":1072},[],[1074],{"type":42,"value":784},{"type":42,"value":1076},": ",{"type":37,"tag":51,"props":1078,"children":1080},{"className":1079},[],[1081],{"type":42,"value":1082},"\"streamable-http\"",{"type":42,"value":1084}," (preferred) or ",{"type":37,"tag":51,"props":1086,"children":1088},{"className":1087},[],[1089],{"type":42,"value":1090},"\"sse\"",{"type":42,"value":1092}," (legacy); ",{"type":37,"tag":51,"props":1094,"children":1096},{"className":1095},[],[1097],{"type":42,"value":959},{"type":42,"value":1099}," required.",{"type":37,"tag":769,"props":1101,"children":1102},{},[1103,1108],{"type":37,"tag":51,"props":1104,"children":1106},{"className":1105},[],[1107],{"type":42,"value":996},{"type":42,"value":1109}," is for static API-key auth. Never invent keys — ask the user for theirs.",{"type":37,"tag":499,"props":1111,"children":1113},{"id":1112},"remote-server-with-oauth-user-login-in-browser",[1114],{"type":42,"value":1115},"Remote server with OAuth (user login in browser)",{"type":37,"tag":220,"props":1117,"children":1119},{"className":222,"code":1118,"language":224,"meta":225,"style":225},"{\n  \"mcpServers\": {\n    \"linear\": {\n      \"transport\": \"streamable-http\",\n      \"url\": \"https:\u002F\u002Fmcp.linear.app\u002Fmcp\",\n      \"auth\": { \"type\": \"oauth\" }\n    }\n  }\n}\n",[1120],{"type":37,"tag":51,"props":1121,"children":1122},{"__ignoreMap":225},[1123,1130,1153,1177,1212,1248,1306,1313,1320],{"type":37,"tag":231,"props":1124,"children":1125},{"class":233,"line":234},[1126],{"type":37,"tag":231,"props":1127,"children":1128},{"style":238},[1129],{"type":42,"value":241},{"type":37,"tag":231,"props":1131,"children":1132},{"class":233,"line":244},[1133,1137,1141,1145,1149],{"type":37,"tag":231,"props":1134,"children":1135},{"style":238},[1136],{"type":42,"value":250},{"type":37,"tag":231,"props":1138,"children":1139},{"style":253},[1140],{"type":42,"value":421},{"type":37,"tag":231,"props":1142,"children":1143},{"style":238},[1144],{"type":42,"value":260},{"type":37,"tag":231,"props":1146,"children":1147},{"style":238},[1148],{"type":42,"value":265},{"type":37,"tag":231,"props":1150,"children":1151},{"style":238},[1152],{"type":42,"value":270},{"type":37,"tag":231,"props":1154,"children":1155},{"class":233,"line":273},[1156,1160,1165,1169,1173],{"type":37,"tag":231,"props":1157,"children":1158},{"style":238},[1159],{"type":42,"value":279},{"type":37,"tag":231,"props":1161,"children":1162},{"style":282},[1163],{"type":42,"value":1164},"linear",{"type":37,"tag":231,"props":1166,"children":1167},{"style":238},[1168],{"type":42,"value":260},{"type":37,"tag":231,"props":1170,"children":1171},{"style":238},[1172],{"type":42,"value":265},{"type":37,"tag":231,"props":1174,"children":1175},{"style":238},[1176],{"type":42,"value":270},{"type":37,"tag":231,"props":1178,"children":1179},{"class":233,"line":315},[1180,1184,1188,1192,1196,1200,1204,1208],{"type":37,"tag":231,"props":1181,"children":1182},{"style":238},[1183],{"type":42,"value":573},{"type":37,"tag":231,"props":1185,"children":1186},{"style":336},[1187],{"type":42,"value":784},{"type":37,"tag":231,"props":1189,"children":1190},{"style":238},[1191],{"type":42,"value":260},{"type":37,"tag":231,"props":1193,"children":1194},{"style":238},[1195],{"type":42,"value":265},{"type":37,"tag":231,"props":1197,"children":1198},{"style":238},[1199],{"type":42,"value":298},{"type":37,"tag":231,"props":1201,"children":1202},{"style":301},[1203],{"type":42,"value":939},{"type":37,"tag":231,"props":1205,"children":1206},{"style":238},[1207],{"type":42,"value":260},{"type":37,"tag":231,"props":1209,"children":1210},{"style":238},[1211],{"type":42,"value":312},{"type":37,"tag":231,"props":1213,"children":1214},{"class":233,"line":346},[1215,1219,1223,1227,1231,1235,1240,1244],{"type":37,"tag":231,"props":1216,"children":1217},{"style":238},[1218],{"type":42,"value":573},{"type":37,"tag":231,"props":1220,"children":1221},{"style":336},[1222],{"type":42,"value":959},{"type":37,"tag":231,"props":1224,"children":1225},{"style":238},[1226],{"type":42,"value":260},{"type":37,"tag":231,"props":1228,"children":1229},{"style":238},[1230],{"type":42,"value":265},{"type":37,"tag":231,"props":1232,"children":1233},{"style":238},[1234],{"type":42,"value":298},{"type":37,"tag":231,"props":1236,"children":1237},{"style":301},[1238],{"type":42,"value":1239},"https:\u002F\u002Fmcp.linear.app\u002Fmcp",{"type":37,"tag":231,"props":1241,"children":1242},{"style":238},[1243],{"type":42,"value":260},{"type":37,"tag":231,"props":1245,"children":1246},{"style":238},[1247],{"type":42,"value":312},{"type":37,"tag":231,"props":1249,"children":1250},{"class":233,"line":376},[1251,1255,1260,1264,1268,1272,1276,1281,1285,1289,1293,1298,1302],{"type":37,"tag":231,"props":1252,"children":1253},{"style":238},[1254],{"type":42,"value":573},{"type":37,"tag":231,"props":1256,"children":1257},{"style":336},[1258],{"type":42,"value":1259},"auth",{"type":37,"tag":231,"props":1261,"children":1262},{"style":238},[1263],{"type":42,"value":260},{"type":37,"tag":231,"props":1265,"children":1266},{"style":238},[1267],{"type":42,"value":265},{"type":37,"tag":231,"props":1269,"children":1270},{"style":238},[1271],{"type":42,"value":459},{"type":37,"tag":231,"props":1273,"children":1274},{"style":238},[1275],{"type":42,"value":298},{"type":37,"tag":231,"props":1277,"children":1278},{"style":712},[1279],{"type":42,"value":1280},"type",{"type":37,"tag":231,"props":1282,"children":1283},{"style":238},[1284],{"type":42,"value":260},{"type":37,"tag":231,"props":1286,"children":1287},{"style":238},[1288],{"type":42,"value":265},{"type":37,"tag":231,"props":1290,"children":1291},{"style":238},[1292],{"type":42,"value":298},{"type":37,"tag":231,"props":1294,"children":1295},{"style":301},[1296],{"type":42,"value":1297},"oauth",{"type":37,"tag":231,"props":1299,"children":1300},{"style":238},[1301],{"type":42,"value":260},{"type":37,"tag":231,"props":1303,"children":1304},{"style":238},[1305],{"type":42,"value":741},{"type":37,"tag":231,"props":1307,"children":1308},{"class":233,"line":402},[1309],{"type":37,"tag":231,"props":1310,"children":1311},{"style":238},[1312],{"type":42,"value":749},{"type":37,"tag":231,"props":1314,"children":1315},{"class":233,"line":411},[1316],{"type":37,"tag":231,"props":1317,"children":1318},{"style":238},[1319],{"type":42,"value":479},{"type":37,"tag":231,"props":1321,"children":1322},{"class":233,"line":436},[1323],{"type":37,"tag":231,"props":1324,"children":1325},{"style":238},[1326],{"type":42,"value":470},{"type":37,"tag":765,"props":1328,"children":1329},{},[1330,1378,1406,1433],{"type":37,"tag":769,"props":1331,"children":1332},{},[1333,1339,1341,1347,1349,1355,1356,1362,1363,1369,1371,1377],{"type":37,"tag":51,"props":1334,"children":1336},{"className":1335},[],[1337],{"type":42,"value":1338},"auth: { \"type\": \"oauth\" }",{"type":42,"value":1340}," is enough for most servers (discovery + dynamic client\nregistration + PKCE are automatic). Optional fields: ",{"type":37,"tag":51,"props":1342,"children":1344},{"className":1343},[],[1345],{"type":42,"value":1346},"scope",{"type":42,"value":1348},", ",{"type":37,"tag":51,"props":1350,"children":1352},{"className":1351},[],[1353],{"type":42,"value":1354},"clientId",{"type":42,"value":312},{"type":37,"tag":51,"props":1357,"children":1359},{"className":1358},[],[1360],{"type":42,"value":1361},"clientSecret",{"type":42,"value":1348},{"type":37,"tag":51,"props":1364,"children":1366},{"className":1365},[],[1367],{"type":42,"value":1368},"redirectUrl",{"type":42,"value":1370}," (only for pre-registered clients), ",{"type":37,"tag":51,"props":1372,"children":1374},{"className":1373},[],[1375],{"type":42,"value":1376},"clientName",{"type":42,"value":794},{"type":37,"tag":769,"props":1379,"children":1380},{},[1381,1383,1388,1390,1396,1398,1404],{"type":42,"value":1382},"After ",{"type":37,"tag":51,"props":1384,"children":1386},{"className":1385},[],[1387],{"type":42,"value":203},{"type":42,"value":1389},", the first connection will fail with \"Authentication required\" —\nthat is expected. Start the login yourself with the ",{"type":37,"tag":51,"props":1391,"children":1393},{"className":1392},[],[1394],{"type":42,"value":1395},"mcp_auth",{"type":42,"value":1397}," tool (opens the\nuser's browser), or tell the user to run ",{"type":37,"tag":51,"props":1399,"children":1401},{"className":1400},[],[1402],{"type":42,"value":1403},"\u002Fmcp:auth \u003Cserver-name>",{"type":42,"value":1405},". Tokens are\nstored and refreshed automatically afterwards.",{"type":37,"tag":769,"props":1407,"children":1408},{},[1409,1411,1416,1418,1424,1426,1432],{"type":42,"value":1410},"OAuth is only valid for ",{"type":37,"tag":51,"props":1412,"children":1414},{"className":1413},[],[1415],{"type":42,"value":939},{"type":42,"value":1417},"\u002F",{"type":37,"tag":51,"props":1419,"children":1421},{"className":1420},[],[1422],{"type":42,"value":1423},"sse",{"type":42,"value":1425},", not ",{"type":37,"tag":51,"props":1427,"children":1429},{"className":1428},[],[1430],{"type":42,"value":1431},"stdio",{"type":42,"value":794},{"type":37,"tag":769,"props":1434,"children":1435},{},[1436,1438,1444,1446,1451],{"type":42,"value":1437},"If dynamic client registration is rejected (e.g. a client-name policy error), set\n",{"type":37,"tag":51,"props":1439,"children":1441},{"className":1440},[],[1442],{"type":42,"value":1443},"\"clientName\"",{"type":42,"value":1445}," in the ",{"type":37,"tag":51,"props":1447,"children":1449},{"className":1448},[],[1450],{"type":42,"value":1259},{"type":42,"value":1452}," object and retry.",{"type":37,"tag":499,"props":1454,"children":1456},{"id":1455},"other-per-server-options",[1457],{"type":42,"value":1458},"Other per-server options",{"type":37,"tag":765,"props":1460,"children":1461},{},[1462,1503,1520,1545,1563],{"type":37,"tag":769,"props":1463,"children":1464},{},[1465,1471,1472,1478,1480,1485,1487,1493,1495,1501],{"type":37,"tag":51,"props":1466,"children":1468},{"className":1467},[],[1469],{"type":42,"value":1470},"lifecycle",{"type":42,"value":1076},{"type":37,"tag":51,"props":1473,"children":1475},{"className":1474},[],[1476],{"type":42,"value":1477},"\"lazy\"",{"type":42,"value":1479}," (default — starts on first use of one of its tools via the ",{"type":37,"tag":51,"props":1481,"children":1483},{"className":1482},[],[1484],{"type":42,"value":16},{"type":42,"value":1486},"\nproxy tool, or manually with ",{"type":37,"tag":51,"props":1488,"children":1490},{"className":1489},[],[1491],{"type":42,"value":1492},"\u002Fmcp:start \u003Cname>",{"type":42,"value":1494},") or ",{"type":37,"tag":51,"props":1496,"children":1498},{"className":1497},[],[1499],{"type":42,"value":1500},"\"eager\"",{"type":42,"value":1502}," (starts at session\nstart). Use eager only for a server you want connected from the very first turn.",{"type":37,"tag":769,"props":1504,"children":1505},{},[1506,1511,1512,1518],{"type":37,"tag":51,"props":1507,"children":1509},{"className":1508},[],[1510],{"type":42,"value":325},{"type":42,"value":1348},{"type":37,"tag":51,"props":1513,"children":1515},{"className":1514},[],[1516],{"type":42,"value":1517},"healthCheckIntervalMs",{"type":42,"value":1519},": numeric overrides, rarely needed.",{"type":37,"tag":769,"props":1521,"children":1522},{},[1523,1529,1530,1535,1537,1543],{"type":37,"tag":51,"props":1524,"children":1526},{"className":1525},[],[1527],{"type":42,"value":1528},"idleTimeoutMs",{"type":42,"value":1076},{"type":37,"tag":51,"props":1531,"children":1533},{"className":1532},[],[1534],{"type":42,"value":95},{"type":42,"value":1536}," only — auto-disconnect this many ms after the\nserver's last tool call. Good for servers used in bursts, e.g. ",{"type":37,"tag":51,"props":1538,"children":1540},{"className":1539},[],[1541],{"type":42,"value":1542},"600000",{"type":42,"value":1544}," (10 min).",{"type":37,"tag":769,"props":1546,"children":1547},{},[1548,1554,1556,1561],{"type":37,"tag":51,"props":1549,"children":1551},{"className":1550},[],[1552],{"type":42,"value":1553},"description",{"type":42,"value":1555},": one-line summary shown by ",{"type":37,"tag":51,"props":1557,"children":1559},{"className":1558},[],[1560],{"type":42,"value":16},{"type":42,"value":1562}," search before this server has ever\nconnected (its real tool list isn't known yet). Set this on lazy servers so the model\ncan find them via search before the first connection.",{"type":37,"tag":769,"props":1564,"children":1565},{},[1566,1572,1573,1579,1581,1586,1588,1594,1596,1601,1603,1609],{"type":37,"tag":51,"props":1567,"children":1569},{"className":1568},[],[1570],{"type":42,"value":1571},"directTools",{"type":42,"value":1076},{"type":37,"tag":51,"props":1574,"children":1576},{"className":1575},[],[1577],{"type":42,"value":1578},"false",{"type":42,"value":1580}," (default — all tools stay searchable-only via ",{"type":37,"tag":51,"props":1582,"children":1584},{"className":1583},[],[1585],{"type":42,"value":16},{"type":42,"value":1587},"), ",{"type":37,"tag":51,"props":1589,"children":1591},{"className":1590},[],[1592],{"type":42,"value":1593},"true",{"type":42,"value":1595},"\n(all tools load straight into context), or an array of MCP-side tool names to keep\ndirect while the rest stay proxy-only. Set ",{"type":37,"tag":51,"props":1597,"children":1599},{"className":1598},[],[1600],{"type":42,"value":1593},{"type":42,"value":1602}," (or list specific names) only for a\nsmall server used on nearly every turn, where a ",{"type":37,"tag":51,"props":1604,"children":1606},{"className":1605},[],[1607],{"type":42,"value":1608},"search",{"type":42,"value":1610}," round-trip isn't worth it.",{"type":37,"tag":99,"props":1612,"children":1614},{"id":1613},"context-window-control-the-mcp-proxy-tool",[1615,1617,1622],{"type":42,"value":1616},"Context window control (the ",{"type":37,"tag":51,"props":1618,"children":1620},{"className":1619},[],[1621],{"type":42,"value":16},{"type":42,"value":1623}," proxy tool)",{"type":37,"tag":45,"props":1625,"children":1626},{},[1627,1629,1634,1636,1641],{"type":42,"value":1628},"A single ",{"type":37,"tag":51,"props":1630,"children":1632},{"className":1631},[],[1633],{"type":42,"value":16},{"type":42,"value":1635}," tool is always available, independent of ",{"type":37,"tag":51,"props":1637,"children":1639},{"className":1638},[],[1640],{"type":42,"value":56},{"type":42,"value":265},{"type":37,"tag":765,"props":1643,"children":1644},{},[1645,1663],{"type":37,"tag":769,"props":1646,"children":1647},{},[1648,1654,1656,1661],{"type":37,"tag":51,"props":1649,"children":1651},{"className":1650},[],[1652],{"type":42,"value":1653},"mcp({ search: \"keywords\" })",{"type":42,"value":1655}," — finds relevant tools\u002Fservers by keyword, including\nones that are not currently connected (their cached or configured ",{"type":37,"tag":51,"props":1657,"children":1659},{"className":1658},[],[1660],{"type":42,"value":1553},{"type":42,"value":1662},"\nmetadata is searched instead of connecting).",{"type":37,"tag":769,"props":1664,"children":1665},{},[1666,1672],{"type":37,"tag":51,"props":1667,"children":1669},{"className":1668},[],[1670],{"type":42,"value":1671},"mcp({ tool: \"\u003Cname>\", args: '{\"key\":\"value\"}' })",{"type":42,"value":1673}," — calls a tool by its exact name\n(from search), starting its server automatically if needed. Passing a bare server\nname instead of a tool name connects that server and lists its tools without calling\nanything.",{"type":37,"tag":45,"props":1675,"children":1676},{},[1677,1679,1684,1685,1690,1691,1696],{"type":42,"value":1678},"You do not need to do anything for this to work — it's automatic for every configured\nserver. Only mention ",{"type":37,"tag":51,"props":1680,"children":1682},{"className":1681},[],[1683],{"type":42,"value":1571},{"type":42,"value":1417},{"type":37,"tag":51,"props":1686,"children":1688},{"className":1687},[],[1689],{"type":42,"value":1528},{"type":42,"value":1417},{"type":37,"tag":51,"props":1692,"children":1694},{"className":1693},[],[1695],{"type":42,"value":1553},{"type":42,"value":1697}," to the user if they\nask about reducing context usage or about servers not starting immediately.",{"type":37,"tag":99,"props":1699,"children":1701},{"id":1700},"workflow-for-install-x-mcp-server",[1702],{"type":42,"value":1703},"Workflow for \"install X MCP server\"",{"type":37,"tag":1705,"props":1706,"children":1707},"ol",{},[1708,1720,1725,1743],{"type":37,"tag":769,"props":1709,"children":1710},{},[1711,1713,1718],{"type":42,"value":1712},"Find the server's package name (stdio) or MCP endpoint URL (remote). Use web search\nif unsure; official docs usually show an ",{"type":37,"tag":51,"props":1714,"children":1716},{"className":1715},[],[1717],{"type":42,"value":421},{"type":42,"value":1719}," JSON snippet you can adapt.",{"type":37,"tag":769,"props":1721,"children":1722},{},[1723],{"type":42,"value":1724},"Decide global vs project config; read the existing file first and merge — do not\nclobber other servers.",{"type":37,"tag":769,"props":1726,"children":1727},{},[1728,1730,1735,1737,1742],{"type":42,"value":1729},"Write the config. Validate: stdio needs ",{"type":37,"tag":51,"props":1731,"children":1733},{"className":1732},[],[1734],{"type":42,"value":578},{"type":42,"value":1736},"; http\u002Fsse needs ",{"type":37,"tag":51,"props":1738,"children":1740},{"className":1739},[],[1741],{"type":42,"value":959},{"type":42,"value":794},{"type":37,"tag":769,"props":1744,"children":1745},{},[1746,1748,1753,1755,1761,1763,1769,1771,1776],{"type":42,"value":1747},"Ask the user to run ",{"type":37,"tag":51,"props":1749,"children":1751},{"className":1750},[],[1752],{"type":42,"value":203},{"type":42,"value":1754},", then ",{"type":37,"tag":51,"props":1756,"children":1758},{"className":1757},[],[1759],{"type":42,"value":1760},"\u002Fmcp",{"type":42,"value":1762}," to confirm the server is ",{"type":37,"tag":51,"props":1764,"children":1766},{"className":1765},[],[1767],{"type":42,"value":1768},"ready",{"type":42,"value":1770},". If it\nuses OAuth, start the login with the ",{"type":37,"tag":51,"props":1772,"children":1774},{"className":1773},[],[1775],{"type":42,"value":1395},{"type":42,"value":1777}," tool once the server exists.",{"type":37,"tag":99,"props":1779,"children":1781},{"id":1780},"agent-tool",[1782],{"type":42,"value":1783},"Agent tool",{"type":37,"tag":765,"props":1785,"children":1786},{},[1787],{"type":37,"tag":769,"props":1788,"children":1789},{},[1790,1795,1797,1803],{"type":37,"tag":51,"props":1791,"children":1793},{"className":1792},[],[1794],{"type":42,"value":1395},{"type":42,"value":1796}," (",{"type":37,"tag":51,"props":1798,"children":1800},{"className":1799},[],[1801],{"type":42,"value":1802},"{ \"server\": \"\u003Cname>\" }",{"type":42,"value":1804},"): queues the interactive browser OAuth flow for\na configured server. Use it when the user asks you to log in \u002F authenticate an MCP\nserver. The flow starts after your turn ends; the user completes it in the browser.",{"type":37,"tag":99,"props":1806,"children":1808},{"id":1807},"commands-user-facing-suggest-these-you-cannot-run-them",[1809],{"type":42,"value":1810},"Commands (user-facing — suggest these, you cannot run them)",{"type":37,"tag":106,"props":1812,"children":1813},{},[1814,1830],{"type":37,"tag":110,"props":1815,"children":1816},{},[1817],{"type":37,"tag":114,"props":1818,"children":1819},{},[1820,1825],{"type":37,"tag":118,"props":1821,"children":1822},{},[1823],{"type":42,"value":1824},"Command",{"type":37,"tag":118,"props":1826,"children":1827},{},[1828],{"type":42,"value":1829},"Purpose",{"type":37,"tag":129,"props":1831,"children":1832},{},[1833,1849,1866,1889,1914],{"type":37,"tag":114,"props":1834,"children":1835},{},[1836,1844],{"type":37,"tag":136,"props":1837,"children":1838},{},[1839],{"type":37,"tag":51,"props":1840,"children":1842},{"className":1841},[],[1843],{"type":42,"value":1760},{"type":37,"tag":136,"props":1845,"children":1846},{},[1847],{"type":42,"value":1848},"status of all servers",{"type":37,"tag":114,"props":1850,"children":1851},{},[1852,1861],{"type":37,"tag":136,"props":1853,"children":1854},{},[1855],{"type":37,"tag":51,"props":1856,"children":1858},{"className":1857},[],[1859],{"type":42,"value":1860},"\u002Fmcp \u003Cname>",{"type":37,"tag":136,"props":1862,"children":1863},{},[1864],{"type":42,"value":1865},"state, last error, recent server logs",{"type":37,"tag":114,"props":1867,"children":1868},{},[1869,1884],{"type":37,"tag":136,"props":1870,"children":1871},{},[1872,1877,1878],{"type":37,"tag":51,"props":1873,"children":1875},{"className":1874},[],[1876],{"type":42,"value":1492},{"type":42,"value":81},{"type":37,"tag":51,"props":1879,"children":1881},{"className":1880},[],[1882],{"type":42,"value":1883},"\u002Fmcp:stop \u003Cname>",{"type":37,"tag":136,"props":1885,"children":1886},{},[1887],{"type":42,"value":1888},"start\u002Fstop a server",{"type":37,"tag":114,"props":1890,"children":1891},{},[1892,1901],{"type":37,"tag":136,"props":1893,"children":1894},{},[1895],{"type":37,"tag":51,"props":1896,"children":1898},{"className":1897},[],[1899],{"type":42,"value":1900},"\u002Fmcp:auth \u003Cname> [reset]",{"type":37,"tag":136,"props":1902,"children":1903},{},[1904,1906,1912],{"type":42,"value":1905},"browser OAuth login (",{"type":37,"tag":51,"props":1907,"children":1909},{"className":1908},[],[1910],{"type":42,"value":1911},"reset",{"type":42,"value":1913}," wipes stored credentials)",{"type":37,"tag":114,"props":1915,"children":1916},{},[1917,1925],{"type":37,"tag":136,"props":1918,"children":1919},{},[1920],{"type":37,"tag":51,"props":1921,"children":1923},{"className":1922},[],[1924],{"type":42,"value":203},{"type":37,"tag":136,"props":1926,"children":1927},{},[1928],{"type":42,"value":1929},"apply mcp.json changes",{"type":37,"tag":99,"props":1931,"children":1933},{"id":1932},"troubleshooting",[1934],{"type":42,"value":1935},"Troubleshooting",{"type":37,"tag":765,"props":1937,"children":1938},{},[1939,1973,2013,2039,2051],{"type":37,"tag":769,"props":1940,"children":1941},{},[1942,1944,1950,1952,1957,1959,1964,1965,1971],{"type":42,"value":1943},"Server stuck at ",{"type":37,"tag":51,"props":1945,"children":1947},{"className":1946},[],[1948],{"type":42,"value":1949},"stopped",{"type":42,"value":1951}," with an error: suggest ",{"type":37,"tag":51,"props":1953,"children":1955},{"className":1954},[],[1956],{"type":42,"value":1860},{"type":42,"value":1958}," to see its stderr log.\nCommon causes: package name typo, missing runtime (",{"type":37,"tag":51,"props":1960,"children":1962},{"className":1961},[],[1963],{"type":42,"value":595},{"type":42,"value":1417},{"type":37,"tag":51,"props":1966,"children":1968},{"className":1967},[],[1969],{"type":42,"value":1970},"uvx",{"type":42,"value":1972}," not installed),\nmissing env var\u002FAPI key, wrong URL.",{"type":37,"tag":769,"props":1974,"children":1975},{},[1976,1982,1983,1989,1991,1996,1998,2004,2006,2012],{"type":37,"tag":51,"props":1977,"children":1979},{"className":1978},[],[1980],{"type":42,"value":1981},"401",{"type":42,"value":1417},{"type":37,"tag":51,"props":1984,"children":1986},{"className":1985},[],[1987],{"type":42,"value":1988},"Unauthorized",{"type":42,"value":1990}," on an OAuth server: ",{"type":37,"tag":51,"props":1992,"children":1994},{"className":1993},[],[1995],{"type":42,"value":1395},{"type":42,"value":1997}," tool or ",{"type":37,"tag":51,"props":1999,"children":2001},{"className":2000},[],[2002],{"type":42,"value":2003},"\u002Fmcp:auth \u003Cname>",{"type":42,"value":2005},"; if\nit keeps failing, ",{"type":37,"tag":51,"props":2007,"children":2009},{"className":2008},[],[2010],{"type":42,"value":2011},"\u002Fmcp:auth \u003Cname> reset",{"type":42,"value":794},{"type":37,"tag":769,"props":2014,"children":2015},{},[2016,2018,2023,2025,2030,2032,2037],{"type":42,"value":2017},"OAuth registration rejected with a client-name error: set ",{"type":37,"tag":51,"props":2019,"children":2021},{"className":2020},[],[2022],{"type":42,"value":1443},{"type":42,"value":2024}," in the\nserver's ",{"type":37,"tag":51,"props":2026,"children":2028},{"className":2027},[],[2029],{"type":42,"value":1259},{"type":42,"value":2031}," config to a compliant name, ",{"type":37,"tag":51,"props":2033,"children":2035},{"className":2034},[],[2036],{"type":42,"value":203},{"type":42,"value":2038},", and retry the login.",{"type":37,"tag":769,"props":2040,"children":2041},{},[2042,2044,2049],{"type":42,"value":2043},"Tools missing after config edit: ",{"type":37,"tag":51,"props":2045,"children":2047},{"className":2046},[],[2048],{"type":42,"value":203},{"type":42,"value":2050}," was probably not run.",{"type":37,"tag":769,"props":2052,"children":2053},{},[2054,2056,2061],{"type":42,"value":2055},"Project config ignored: the project may not be trusted; move the server to\n",{"type":37,"tag":51,"props":2057,"children":2059},{"className":2058},[],[2060],{"type":42,"value":144},{"type":42,"value":2062}," or have the user trust the project.",{"type":37,"tag":2064,"props":2065,"children":2066},"style",{},[2067],{"type":42,"value":2068},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2070,"total":244},[2071,2091],{"slug":2072,"name":2072,"fn":2073,"description":2074,"org":2075,"tags":2076,"stars":20,"repoUrl":21,"updatedAt":2090},"dynamic-workflows","write JavaScript workflow scripts for subagents","How to write JavaScript workflow scripts for the `workflow` tool - fanning work out across many isolated subagents with agent(), parallel(), and pipeline(), then synthesizing one result. Use when a task decomposes into several independent investigations or changes (codebase audits, many-file analysis, wide research, multi-perspective review, applying the same edit across many independent files).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2077,2080,2083,2086,2087],{"name":2078,"slug":2079,"type":13},"Agents","agents",{"name":2081,"slug":2082,"type":13},"JavaScript","javascript",{"name":2084,"slug":2085,"type":13},"Multi-Agent","multi-agent",{"name":9,"slug":8,"type":13},{"name":2088,"slug":2089,"type":13},"Workflow Automation","workflow-automation","2026-07-15T05:29:57.224313",{"slug":4,"name":4,"fn":5,"description":6,"org":2092,"tags":2093,"stars":20,"repoUrl":21,"updatedAt":22},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2094,2095,2096],{"name":18,"slug":19,"type":13},{"name":15,"slug":16,"type":13},{"name":9,"slug":8,"type":13},{"items":2098,"total":2265},[2099,2118,2130,2143,2156,2171,2187,2200,2214,2227,2237,2255],{"slug":2100,"name":2100,"fn":2101,"description":2102,"org":2103,"tags":2104,"stars":2115,"repoUrl":2116,"updatedAt":2117},"analyzing-expensive-users","analyze expensive users in AI observability","Analyze the most expensive users in AI observability and explain why they cost so much. Use when the user asks about top spenders, expensive users, per-user LLM cost, user-level cost drivers, or patterns behind high AI observability spend.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2105,2108,2111,2114],{"name":2106,"slug":2107,"type":13},"Analytics","analytics",{"name":2109,"slug":2110,"type":13},"Cost Optimization","cost-optimization",{"name":2112,"slug":2113,"type":13},"Observability","observability",{"name":9,"slug":8,"type":13},35568,"https:\u002F\u002Fgithub.com\u002FPostHog\u002Fposthog","2026-07-28T05:34:11.117757",{"slug":2119,"name":2119,"fn":2120,"description":2121,"org":2122,"tags":2123,"stars":2115,"repoUrl":2116,"updatedAt":2129},"auditing-endpoints","audit PostHog project endpoints","Audit every endpoint in a PostHog project for staleness, failed materialisations, and unused materialised versions. Use when the user asks \"what endpoints can I clean up?\", \"are any of my endpoints broken?\", \"which materialised versions are still being called?\", or wants a one-shot cleanup pass over the Endpoints product. Produces a prioritised report grouped by issue type, with recommended actions but does not modify anything without explicit confirmation.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2124,2125,2128],{"name":2106,"slug":2107,"type":13},{"name":2126,"slug":2127,"type":13},"Audit","audit",{"name":9,"slug":8,"type":13},"2026-06-08T08:08:33.693989",{"slug":2131,"name":2131,"fn":2132,"description":2133,"org":2134,"tags":2135,"stars":2115,"repoUrl":2116,"updatedAt":2142},"auditing-warehouse-source-health","audit PostHog data warehouse source health","Audit the health of a PostHog project's data warehouse sources and syncs — find every broken or degraded source connection, sync schema, and webhook channel. Use when the user asks \"why are my imports failing?\", \"what's broken with my sources?\", \"why is my warehouse data stale?\", or wants a one-shot triage of source\u002Fsync health before deciding where to dig in. Produces a prioritized report grouped by severity, with recommended next steps. For materialized-view health use `auditing-warehouse-view-health`; for a single failing sync use `diagnosing-failed-warehouse-syncs`.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2136,2137,2140,2141],{"name":2126,"slug":2127,"type":13},{"name":2138,"slug":2139,"type":13},"Data Warehouse","data-warehouse",{"name":2112,"slug":2113,"type":13},{"name":9,"slug":8,"type":13},"2026-06-18T08:22:57.67984",{"slug":2144,"name":2144,"fn":2145,"description":2146,"org":2147,"tags":2148,"stars":2115,"repoUrl":2116,"updatedAt":2155},"auditing-warehouse-view-health","audit PostHog materialized view health","Audit the health of a PostHog project's materialized views (saved queries) — find every failed materialization and flag unused or stale materialized views that cost storage and compute. Use when the user asks \"which of my views are broken?\", \"why is this materialized view failing?\", \"are any of my views wasting compute?\", or wants a one-shot triage of view health. For source\u002Fsync health use `auditing-warehouse-source-health`.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2149,2150,2151,2154],{"name":2126,"slug":2127,"type":13},{"name":2138,"slug":2139,"type":13},{"name":2152,"slug":2153,"type":13},"Performance","performance",{"name":9,"slug":8,"type":13},"2026-06-18T08:25:10.936787",{"slug":2157,"name":2157,"fn":2158,"description":2159,"org":2160,"tags":2161,"stars":2115,"repoUrl":2116,"updatedAt":2170},"authoring-error-tracking-alerts","author PostHog error tracking alerts","Author error tracking alerts that fire when an issue is created, reopened, or starts spiking. Use when the user asks to set up error notifications, route exceptions to Slack\u002Fwebhook\u002FLinear, or evaluate which error events are worth alerting on. Covers trigger-event selection, integration choice, dedup against existing alerts, and shipping with the canonical message body shape.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2162,2165,2168,2169],{"name":2163,"slug":2164,"type":13},"Alerting","alerting",{"name":2166,"slug":2167,"type":13},"Debugging","debugging",{"name":2112,"slug":2113,"type":13},{"name":9,"slug":8,"type":13},"2026-06-18T08:24:40.318583",{"slug":2172,"name":2172,"fn":2173,"description":2174,"org":2175,"tags":2176,"stars":2115,"repoUrl":2116,"updatedAt":2186},"authoring-log-alerts","author log alerts in PostHog","Author useful, low-noise log alerts on services in a PostHog project. Use when the user asks to set up alerts for their logs, suggest alerts they should add, or evaluate whether a service is worth monitoring. Covers service triage, baseline characterisation, threshold drafting, back-testing via simulate, and shipping with a notification destination.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2177,2178,2181,2182,2185],{"name":2106,"slug":2107,"type":13},{"name":2179,"slug":2180,"type":13},"Monitoring","monitoring",{"name":2112,"slug":2113,"type":13},{"name":2183,"slug":2184,"type":13},"Operations","operations",{"name":9,"slug":8,"type":13},"2026-07-18T05:10:54.430898",{"slug":2188,"name":2188,"fn":2189,"description":2190,"org":2191,"tags":2192,"stars":2115,"repoUrl":2116,"updatedAt":2199},"building-workflows","build and edit PostHog workflows","Build, edit, test, enable, and monitor PostHog workflows over MCP. Author the action\u002Fedge graph so it runs and opens cleanly in the visual editor, then change drafts surgically with patch operations. Use when asked to build, set up, automate, change, fix, or debug a workflow, campaign, broadcast, drip sequence, or event-triggered automation in the workflows product.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2193,2196,2197,2198],{"name":2194,"slug":2195,"type":13},"Automation","automation",{"name":15,"slug":16,"type":13},{"name":9,"slug":8,"type":13},{"name":2088,"slug":2089,"type":13},"2026-07-28T05:34:12.167015",{"slug":2201,"name":2201,"fn":2202,"description":2203,"org":2204,"tags":2205,"stars":2115,"repoUrl":2116,"updatedAt":2213},"check-posthog-loading","inspect PostHog SDK loading across URLs","Inspect how the PostHog JavaScript SDK is loaded across a list of URLs. Use to confirm consistent installation across pages, find pages missing the snippet, detect mismatched API keys or hosts between pages, and verify the load method (head snippet vs deferred vs array.js).\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2206,2207,2208,2211,2212],{"name":2106,"slug":2107,"type":13},{"name":2166,"slug":2167,"type":13},{"name":2209,"slug":2210,"type":13},"Frontend","frontend",{"name":2112,"slug":2113,"type":13},{"name":9,"slug":8,"type":13},"2026-05-07T05:56:19.828048",{"slug":2215,"name":2215,"fn":2216,"description":2217,"org":2218,"tags":2219,"stars":2115,"repoUrl":2116,"updatedAt":2226},"consuming-endpoints-from-client-code","integrate PostHog endpoints into client applications","Wire a PostHog endpoint into a client app or SDK. Covers fetching the OpenAPI spec, generating a typed client with openapi-generator or @hey-api\u002Fopenapi-ts, sending the right auth header, shaping the variables payload (HogQL code_name vs insight breakdown property), handling rate-limit and materialised-endpoint error responses. Use when the user says \"how do I call my endpoint\", \"generate a client for this\", or \"what auth header do I use\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2220,2221,2222,2223],{"name":18,"slug":19,"type":13},{"name":2209,"slug":2210,"type":13},{"name":9,"slug":8,"type":13},{"name":2224,"slug":2225,"type":13},"SDK","sdk","2026-06-08T08:08:34.929454",{"slug":2228,"name":2228,"fn":2229,"description":2230,"org":2231,"tags":2232,"stars":2115,"repoUrl":2116,"updatedAt":2236},"copying-endpoints-across-projects","copy PostHog endpoints across projects","Copy a PostHog endpoint (a saved HogQL\u002Finsight query exposed as an API route) to another project in the same organization, or duplicate it under a new name in the same project. Use when the user wants to duplicate an endpoint, promote an endpoint from staging to production, replicate an endpoint's query\u002Fvariables\u002Ffreshness config in another workspace, or clone an endpoint to iterate on it. Unlike feature flags and experiments, endpoints have NO native cross-project copy tool — this skill covers the read-then-recreate flow (endpoint-get then endpoint-create), the active-project switching it requires, name-collision checks, and the safe defaults (land unmaterialised in the target, verify with endpoint-run). Does not cover editing endpoint versions (see managing-endpoint-versions) or authoring a brand-new endpoint from scratch (see creating-an-endpoint).\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2233,2234,2235],{"name":18,"slug":19,"type":13},{"name":2183,"slug":2184,"type":13},{"name":9,"slug":8,"type":13},"2026-07-15T05:29:58.442727",{"slug":2238,"name":2238,"fn":2239,"description":2240,"org":2241,"tags":2242,"stars":2115,"repoUrl":2116,"updatedAt":2254},"creating-ai-subscription","schedule recurring AI-generated PostHog reports","Create a recurring AI-generated PostHog report — schedule a free-text prompt to run on a cron, with the LLM-synthesized markdown delivered to email or Slack on each tick. Use when the user wants a recurring AI summary of X on any cadence (daily, weekly, monthly, yearly) rather than a one-off report. (To attach an AI summary to an existing insight\u002Fdashboard subscription instead of a free-text prompt, see `managing-subscriptions` and its `summary_enabled` option.)\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2243,2244,2247,2248,2251],{"name":2194,"slug":2195,"type":13},{"name":2245,"slug":2246,"type":13},"Email","email",{"name":9,"slug":8,"type":13},{"name":2249,"slug":2250,"type":13},"Reporting","reporting",{"name":2252,"slug":2253,"type":13},"Slack","slack","2026-06-09T07:32:27.935712",{"slug":2256,"name":2256,"fn":2257,"description":2258,"org":2259,"tags":2260,"stars":2115,"repoUrl":2116,"updatedAt":2264},"creating-an-endpoint","create PostHog API endpoints","Create a PostHog endpoint with the right shape on the first try — covers query kind choice, name conventions, what to expose as variables (HogQL code_name vs insight breakdown), data_freshness_seconds, and whether to materialise on day one. Use when the user says \"create an endpoint\", \"expose this query as an API\", \"turn this insight into an endpoint\", or asks for help structuring a new endpoint. Steers away from common mistakes: materialising a query with cohort breakdowns or compare mode, inline-only variables on a materialised endpoint, unbounded date ranges, ambiguous names.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2261,2262,2263],{"name":2106,"slug":2107,"type":13},{"name":18,"slug":19,"type":13},{"name":9,"slug":8,"type":13},"2026-06-08T08:08:29.624498",231]