[{"data":1,"prerenderedAt":634},["ShallowReactive",2],{"docs-nav":3,"docs-\u002Fdocs\u002Fagents\u002Fmcp-setup":22},[4,10,14,18],{"path":5,"title":6,"tree":7,"group":8,"order":9},"\u002Fdocs\u002Fagents\u002Fllms-and-agents","llms.txt and agents","agents","Getting started",2,{"path":11,"title":12,"tree":7,"group":8,"order":13},"\u002Fdocs\u002Fagents\u002Fmcp-setup","MCP setup",1,{"path":15,"title":16,"tree":17,"group":8,"order":13},"\u002Fdocs\u002Fdevelopers\u002Fquickstart","Quickstart","developers",{"path":19,"title":20,"tree":17,"group":21,"order":13},"\u002Fdocs\u002Fdevelopers\u002Frest-api","REST API reference","Reference",{"id":23,"title":12,"body":24,"description":626,"extension":627,"group":8,"icon":628,"meta":629,"navigation":630,"order":13,"path":11,"popular":630,"seo":631,"stem":632,"tree":7,"__hash__":633},"docs\u002Fdocs\u002Fagents\u002Fmcp-setup.md",{"type":25,"value":26,"toc":616},"minimark",[27,48,55,60,67,74,79,119,126,209,213,224,280,284,299,303,532,552,556,559,589,595,599,612],[28,29,30,31,38,39,43,44,47],"p",{},"Pixelhooks ships an ",[32,33,37],"a",{"href":34,"rel":35},"https:\u002F\u002Fmodelcontextprotocol.io",[36],"nofollow","MCP"," server,\n",[40,41,42],"code",{},"@pixelhooks\u002Fmcp",", that lets an AI agent create bins and inspect captured\nrequests directly — no browser, no manual ",[40,45,46],{},"curl",". It runs locally over stdio and\ntalks to the public Pixelhooks API, so there's nothing to host.",[28,49,50,51,54],{},"The headline tool is ",[40,52,53],{},"wait_for_request",": point a service at a bin, then ask the\nagent to wait, and it blocks until the next request lands and hands back the full\ndetail.",[56,57,59],"h2",{"id":58},"install","Install",[28,61,62,63,66],{},"The server runs via ",[40,64,65],{},"npx",", so there's no global install. Add it to your client's\nMCP configuration.",[68,69,71],"callout",{"type":70},"info",[28,72,73],{},"The server talks to the hosted Pixelhooks API out of the box — there's nothing to\nhost or configure.",[75,76,78],"h3",{"id":77},"claude-code","Claude Code",[80,81,86],"pre",{"className":82,"code":83,"language":84,"meta":85,"style":85},"language-bash shiki shiki-themes github-light github-dark","claude mcp add pixelhooks -- npx -y @pixelhooks\u002Fmcp\n","bash","",[40,87,88],{"__ignoreMap":85},[89,90,92,96,100,103,106,110,113,116],"span",{"class":91,"line":13},"line",[89,93,95],{"class":94},"sScJk","claude",[89,97,99],{"class":98},"sZZnC"," mcp",[89,101,102],{"class":98}," add",[89,104,105],{"class":98}," pixelhooks",[89,107,109],{"class":108},"sj4cs"," --",[89,111,112],{"class":98}," npx",[89,114,115],{"class":108}," -y",[89,117,118],{"class":98}," @pixelhooks\u002Fmcp\n",[28,120,121,122,125],{},"Or add it to ",[40,123,124],{},".mcp.json"," in your project:",[80,127,131],{"className":128,"code":129,"language":130,"meta":85,"style":85},"language-json shiki shiki-themes github-light github-dark","{\n  \"mcpServers\": {\n    \"pixelhooks\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@pixelhooks\u002Fmcp\"]\n    }\n  }\n}\n","json",[40,132,133,139,147,155,170,191,197,203],{"__ignoreMap":85},[89,134,135],{"class":91,"line":13},[89,136,138],{"class":137},"sVt8B","{\n",[89,140,141,144],{"class":91,"line":9},[89,142,143],{"class":108},"  \"mcpServers\"",[89,145,146],{"class":137},": {\n",[89,148,150,153],{"class":91,"line":149},3,[89,151,152],{"class":108},"    \"pixelhooks\"",[89,154,146],{"class":137},[89,156,158,161,164,167],{"class":91,"line":157},4,[89,159,160],{"class":108},"      \"command\"",[89,162,163],{"class":137},": ",[89,165,166],{"class":98},"\"npx\"",[89,168,169],{"class":137},",\n",[89,171,173,176,179,182,185,188],{"class":91,"line":172},5,[89,174,175],{"class":108},"      \"args\"",[89,177,178],{"class":137},": [",[89,180,181],{"class":98},"\"-y\"",[89,183,184],{"class":137},", ",[89,186,187],{"class":98},"\"@pixelhooks\u002Fmcp\"",[89,189,190],{"class":137},"]\n",[89,192,194],{"class":91,"line":193},6,[89,195,196],{"class":137},"    }\n",[89,198,200],{"class":91,"line":199},7,[89,201,202],{"class":137},"  }\n",[89,204,206],{"class":91,"line":205},8,[89,207,208],{"class":137},"}\n",[75,210,212],{"id":211},"claude-desktop","Claude Desktop",[28,214,215,216,219,220,223],{},"Edit ",[40,217,218],{},"claude_desktop_config.json"," (on macOS:\n",[40,221,222],{},"~\u002FLibrary\u002FApplication Support\u002FClaude\u002Fclaude_desktop_config.json","):",[80,225,226],{"className":128,"code":129,"language":130,"meta":85,"style":85},[40,227,228,232,238,244,254,268,272,276],{"__ignoreMap":85},[89,229,230],{"class":91,"line":13},[89,231,138],{"class":137},[89,233,234,236],{"class":91,"line":9},[89,235,143],{"class":108},[89,237,146],{"class":137},[89,239,240,242],{"class":91,"line":149},[89,241,152],{"class":108},[89,243,146],{"class":137},[89,245,246,248,250,252],{"class":91,"line":157},[89,247,160],{"class":108},[89,249,163],{"class":137},[89,251,166],{"class":98},[89,253,169],{"class":137},[89,255,256,258,260,262,264,266],{"class":91,"line":172},[89,257,175],{"class":108},[89,259,178],{"class":137},[89,261,181],{"class":98},[89,263,184],{"class":137},[89,265,187],{"class":98},[89,267,190],{"class":137},[89,269,270],{"class":91,"line":193},[89,271,196],{"class":137},[89,273,274],{"class":91,"line":199},[89,275,202],{"class":137},[89,277,278],{"class":91,"line":205},[89,279,208],{"class":137},[75,281,283],{"id":282},"cursor","Cursor",[28,285,286,287,290,291,294,295,298],{},"Add the same ",[40,288,289],{},"mcpServers"," block to ",[40,292,293],{},"~\u002F.cursor\u002Fmcp.json"," (global) or\n",[40,296,297],{},".cursor\u002Fmcp.json"," (per project), then restart Cursor.",[56,300,302],{"id":301},"tools","Tools",[304,305,306,322],"table",{},[307,308,309],"thead",{},[310,311,312,316,319],"tr",{},[313,314,315],"th",{},"Tool",[313,317,318],{},"Arguments",[313,320,321],{},"Returns",[323,324,325,339,354,368,385,401,427,441,462,480,514],"tbody",{},[310,326,327,333,336],{},[328,329,330],"td",{},[40,331,332],{},"create_bin",[328,334,335],{},"—",[328,337,338],{},"New bin id, its capture URL, and a human view URL.",[310,340,341,346,351],{},[328,342,343],{},[40,344,345],{},"get_bin",[328,347,348],{},[40,349,350],{},"binId",[328,352,353],{},"Bin metadata (confirms it exists).",[310,355,356,361,365],{},[328,357,358],{},[40,359,360],{},"list_requests",[328,362,363],{},[40,364,350],{},[328,366,367],{},"Captured request summaries, newest first.",[310,369,370,375,382],{},[328,371,372],{},[40,373,374],{},"get_request",[328,376,377,184,379],{},[40,378,350],{},[40,380,381],{},"requestId",[328,383,384],{},"One request in full: method, headers, query, path, body.",[310,386,387,391,398],{},[328,388,389],{},[40,390,53],{},[328,392,393,184,395],{},[40,394,350],{},[40,396,397],{},"timeoutMs?",[328,399,400],{},"Blocks until the next request arrives, then returns it. Bounded (default 25s); returns a \"no request yet\" result on timeout.",[310,402,403,408,413],{},[328,404,405],{},[40,406,407],{},"list_my_bins",[328,409,410],{},[40,411,412],{},"cursor?",[328,414,415,416,419,420,423,424,426],{},"Your account's bins (newest first) with capture\u002Fview URLs. Up to 500 per call; when ",[40,417,418],{},"hasMore"," is set, pass the returned ",[40,421,422],{},"nextCursor"," back as ",[40,425,282],{}," for the next page.",[310,428,429,434,438],{},[328,430,431],{},[40,432,433],{},"delete_bin",[328,435,436],{},[40,437,350],{},[328,439,440],{},"Removes a bin from your account — an unlink, not a destructive delete, so captured data persists.",[310,442,443,448,455],{},[328,444,445],{},[40,446,447],{},"rename_bin",[328,449,450,184,452],{},[40,451,350],{},[40,453,454],{},"label?",[328,456,457,458,461],{},"Sets or clears a bin's label. Omit or empty ",[40,459,460],{},"label"," to clear it; max 255 characters.",[310,463,464,469,473],{},[328,465,466],{},[40,467,468],{},"get_response_config",[328,470,471],{},[40,472,350],{},[328,474,475,476,479],{},"Reads a bin's configured capture response (",[40,477,478],{},"{ configured, config }",").",[310,481,482,487,506],{},[328,483,484],{},[40,485,486],{},"set_response_config",[328,488,489,184,491,184,494,184,497,184,500,184,503],{},[40,490,350],{},[40,492,493],{},"status?",[40,495,496],{},"contentType?",[40,498,499],{},"body?",[40,501,502],{},"headers?",[40,504,505],{},"delayMs?",[328,507,508,509,513],{},"Configures the response the capture endpoint serves — a ",[510,511,512],"strong",{},"full replacement"," (omitted fields revert to defaults).",[310,515,516,521,525],{},[328,517,518],{},[40,519,520],{},"clear_response_config",[328,522,523],{},[40,524,350],{},[328,526,527,528,531],{},"Clears a bin's response config, reverting the capture endpoint to ",[40,529,530],{},"200 OK",".",[28,533,534,184,536,184,538,184,540,169,542,544,545,547,548,551],{},[40,535,407],{},[40,537,433],{},[40,539,447],{},[40,541,468],{},[40,543,486],{},", and ",[40,546,520],{}," are account-scoped: set\n",[40,549,550],{},"PIXELHOOKS_API_TOKEN"," (a personal access token) in the server config to use\nthem. Without a token they return an actionable error rather than acting\nanonymously.",[56,553,555],{"id":554},"a-typical-loop","A typical loop",[28,557,558],{},"A debugging session usually looks like this:",[560,561,562,573,576,586],"ol",{},[563,564,565,569,570,531],"li",{},[510,566,567],{},[40,568,332],{}," → the agent gets a capture URL like\n",[40,571,572],{},"https:\u002F\u002Fhooks.pixelhop.io\u002Fh\u002Fabc123cuid",[563,574,575],{},"The agent configures the service under test (or asks you to) to send to that\nURL.",[563,577,578,582,583,585],{},[510,579,580],{},[40,581,53],{}," with the ",[40,584,350],{}," → the agent blocks until the webhook\nfires, then receives the method, headers, and body of exactly what was sent.",[563,587,588],{},"If nothing arrives within the timeout, the tool returns a \"no request yet\"\nresult and the agent can simply call it again.",[68,590,592],{"type":591},"tip",[28,593,594],{},"The bin id is the only key to its requests — treat capture URLs as secrets and\ndon't paste them where you wouldn't paste a token.",[56,596,598],{"id":597},"whats-next","What's next",[600,601,602,607],"ul",{},[563,603,604,606],{},[32,605,6],{"href":5}," — let an agent read these\ndocs directly.",[563,608,609,611],{},[32,610,20],{"href":19}," — what each tool calls under\nthe hood.",[613,614,615],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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);}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":85,"searchDepth":9,"depth":9,"links":617},[618,623,624,625],{"id":58,"depth":9,"text":59,"children":619},[620,621,622],{"id":77,"depth":149,"text":78},{"id":211,"depth":149,"text":212},{"id":282,"depth":149,"text":283},{"id":301,"depth":9,"text":302},{"id":554,"depth":9,"text":555},{"id":597,"depth":9,"text":598},"Wire Pixelhooks into an AI agent so it can create bins and wait for requests.","md","bolt",{},true,{"title":12,"description":626},"docs\u002Fagents\u002Fmcp-setup","SZbwFSu_qM_pg95sCnhmGqUqEIabm24sQDiLc9yTj-8",1784741510861]