[{"data":1,"prerenderedAt":442},["ShallowReactive",2],{"guide-\u002Fdocs\u002Fguides\u002Fai-mcp\u002Fclaude-desktop":3,"guides-all":373},{"id":4,"title":5,"body":6,"category":363,"description":364,"extension":365,"icon":366,"meta":367,"navigation":368,"order":126,"path":369,"seo":370,"stem":371,"__hash__":372},"guides\u002Fdocs\u002Fguides\u002Fai-mcp\u002Fclaude-desktop.md","Claude Desktop",{"type":7,"value":8,"toc":354},"minimark",[9,13,17,22,50,54,57,84,91,95,106,201,204,225,229,232,236,246,273,276,282,288,292,301,319,328,332,350],[10,11,5],"h1",{"id":12},"claude-desktop",[14,15,16],"p",{},"The most polished MCP experience as of writing — native, GUI-driven, with a visible \"tools\" button per conversation.",[18,19,21],"h2",{"id":20},"prerequisites","Prerequisites",[23,24,25,37],"ul",{},[26,27,28,29,36],"li",{},"Claude Desktop installed (",[30,31,35],"a",{"href":32,"rel":33},"https:\u002F\u002Fclaude.ai\u002Fdownload",[34],"nofollow","download",")",[26,38,39,40,44,45,49],{},"A Transactional API token (create one from ",[41,42,43],"strong",{},"API Keys → New key",", copy the ",[46,47,48],"code",{},"tk_live_…"," value)",[18,51,53],{"id":52},"_1-open-the-config-file","1. Open the config file",[14,55,56],{},"Claude Desktop reads its MCP config from a JSON file on disk.",[23,58,59,68,76],{},[26,60,61,64,65],{},[41,62,63],{},"macOS"," — ",[46,66,67],{},"~\u002FLibrary\u002FApplication Support\u002FClaude\u002Fclaude_desktop_config.json",[26,69,70,64,73],{},[41,71,72],{},"Windows",[46,74,75],{},"%APPDATA%\\Claude\\claude_desktop_config.json",[26,77,78,64,81],{},[41,79,80],{},"Linux",[46,82,83],{},"~\u002F.config\u002FClaude\u002Fclaude_desktop_config.json",[14,85,86,87,90],{},"If the file doesn't exist yet, create it (and the ",[46,88,89],{},"Claude"," folder if needed).",[18,92,94],{"id":93},"_2-add-the-transactional-server","2. Add the Transactional server",[14,96,97,98,101,102,105],{},"Edit the config to include a ",[46,99,100],{},"mcpServers"," entry. If you already have other MCP servers, just add the ",[46,103,104],{},"transactional"," block alongside them.",[107,108,113],"pre",{"className":109,"code":110,"language":111,"meta":112,"style":112},"language-json shiki shiki-themes github-light github-dark","{\n  \"mcpServers\": {\n    \"transactional\": {\n      \"url\": \"https:\u002F\u002Fmcp.transactional.dev\",\n      \"headers\": {\n        \"Authorization\": \"Bearer tk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\"\n      }\n    }\n  }\n}\n","json","",[46,114,115,124,134,142,158,166,177,183,189,195],{"__ignoreMap":112},[116,117,120],"span",{"class":118,"line":119},"line",1,[116,121,123],{"class":122},"sVt8B","{\n",[116,125,127,131],{"class":118,"line":126},2,[116,128,130],{"class":129},"sj4cs","  \"mcpServers\"",[116,132,133],{"class":122},": {\n",[116,135,137,140],{"class":118,"line":136},3,[116,138,139],{"class":129},"    \"transactional\"",[116,141,133],{"class":122},[116,143,145,148,151,155],{"class":118,"line":144},4,[116,146,147],{"class":129},"      \"url\"",[116,149,150],{"class":122},": ",[116,152,154],{"class":153},"sZZnC","\"https:\u002F\u002Fmcp.transactional.dev\"",[116,156,157],{"class":122},",\n",[116,159,161,164],{"class":118,"line":160},5,[116,162,163],{"class":129},"      \"headers\"",[116,165,133],{"class":122},[116,167,169,172,174],{"class":118,"line":168},6,[116,170,171],{"class":129},"        \"Authorization\"",[116,173,150],{"class":122},[116,175,176],{"class":153},"\"Bearer tk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\"\n",[116,178,180],{"class":118,"line":179},7,[116,181,182],{"class":122},"      }\n",[116,184,186],{"class":118,"line":185},8,[116,187,188],{"class":122},"    }\n",[116,190,192],{"class":118,"line":191},9,[116,193,194],{"class":122},"  }\n",[116,196,198],{"class":118,"line":197},10,[116,199,200],{"class":122},"}\n",[14,202,203],{},"Replace the token with yours.",[205,206,219],"aside",{"className":207},[208,209,210,211,212,213,214,215,216,217,218],"not-prose","my-6","rounded-md","border","border-amber-200","bg-amber-50","text-amber-900","px-4","py-3","text-[14px]","leading-relaxed",[14,220,221,224],{},[41,222,223],{},"Don't commit this file."," The token in plain text is sensitive — treat it like a password.",[18,226,228],{"id":227},"_3-restart-claude-desktop","3. Restart Claude Desktop",[14,230,231],{},"Fully quit (Cmd-Q on macOS, not just close the window) and reopen. MCP servers are discovered at startup.",[18,233,235],{"id":234},"_4-verify","4. Verify",[14,237,238,239,242,243,245],{},"In any conversation, click the ",[41,240,241],{},"🛠 tools"," icon in the input bar. You should see a ",[41,244,104],{}," entry with five tools:",[23,247,248,253,258,263,268],{},[26,249,250],{},[46,251,252],{},"list_documents",[26,254,255],{},[46,256,257],{},"get_document",[26,259,260],{},[46,261,262],{},"generate_pdf",[26,264,265],{},[46,266,267],{},"list_folders",[26,269,270],{},[46,271,272],{},"get_usage",[14,274,275],{},"Try this prompt:",[277,278,279],"blockquote",{},[14,280,281],{},"\"List my Transactional documents.\"",[14,283,284,285,287],{},"Claude will ask permission to call ",[46,286,252],{},". Approve, and you'll see your templates inline.",[18,289,291],{"id":290},"common-issues","Common issues",[14,293,294,300],{},[41,295,296,297,299],{},"No ",[46,298,104],{}," entry in the tools menu"," — The JSON didn't parse. Check for a trailing comma or a missing quote. Restart Claude after every edit.",[14,302,303,306,307,310,311,314,315,318],{},[41,304,305],{},"\"Connection failed\" toast"," — Bad URL or the token isn't being sent. Verify the ",[46,308,309],{},"https:\u002F\u002F"," prefix and that ",[46,312,313],{},"Authorization"," is exactly ",[46,316,317],{},"Bearer tk_live_…"," (one space).",[14,320,321,327],{},[41,322,323,324],{},"Tools listed but every call returns ",[46,325,326],{},"unauthorized"," — Your token is revoked. Generate a new one in the dashboard and update the config.",[18,329,331],{"id":330},"next-steps","Next steps",[23,333,334,342],{},[26,335,336],{},[41,337,338],{},[30,339,341],{"href":340},"\u002Fdocs\u002Fguides\u002Fai-mcp\u002Fuse-from-ai#a-first-prompt-to-try","Run a first prompt →",[26,343,344],{},[41,345,346],{},[30,347,349],{"href":348},"\u002Fdocs\u002Fguides\u002Fai-mcp\u002Ftools-reference","MCP tools reference →",[351,352,353],"style",{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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);}",{"title":112,"searchDepth":126,"depth":126,"links":355},[356,357,358,359,360,361,362],{"id":20,"depth":126,"text":21},{"id":52,"depth":126,"text":53},{"id":93,"depth":126,"text":94},{"id":227,"depth":126,"text":228},{"id":234,"depth":126,"text":235},{"id":290,"depth":126,"text":291},{"id":330,"depth":126,"text":331},"ai-mcp","Connect Transactional to Claude Desktop on macOS or Windows so Claude can read your templates and generate PDFs.","md","book-open",{},true,"\u002Fdocs\u002Fguides\u002Fai-mcp\u002Fclaude-desktop",{"title":5,"description":364},"docs\u002Fguides\u002Fai-mcp\u002Fclaude-desktop","mSWVD73IzKWYY8-7VpSsY_OnAV-N3O3QwXID4eKTa3g",[374,378,382,383,387,391,394,398,403,407,411,415,420,425,429,433,438],{"path":375,"title":376,"description":377,"category":363,"order":160},"\u002Fdocs\u002Fguides\u002Fai-mcp\u002Fchatgpt","ChatGPT (via Custom GPT Actions)","ChatGPT doesn't speak MCP natively yet — but you can give it the same powers through a Custom GPT pointed at the Transactional REST API.",{"path":379,"title":380,"description":381,"category":363,"order":136},"\u002Fdocs\u002Fguides\u002Fai-mcp\u002Fclaude-code","Claude Code (CLI)","Connect Transactional to Claude Code so it can read your templates and generate PDFs from your terminal.",{"path":369,"title":5,"description":364,"category":363,"order":126},{"path":384,"title":385,"description":386,"category":363,"order":144},"\u002Fdocs\u002Fguides\u002Fai-mcp\u002Fcursor","Cursor","Wire Transactional into Cursor's MCP support so you can generate PDFs from inside your editor.",{"path":388,"title":389,"description":390,"category":363,"order":168},"\u002Fdocs\u002Fguides\u002Fai-mcp\u002Fgemini","Gemini Code Assist \u002F Gemini CLI","Connect Transactional to Google's Gemini agents through their MCP support.",{"path":348,"title":392,"description":393,"category":363,"order":179},"MCP tools reference","Every tool the Transactional MCP server exposes, with arguments, return shapes, and a prompt that typically triggers each one.",{"path":395,"title":396,"description":397,"category":363,"order":119},"\u002Fdocs\u002Fguides\u002Fai-mcp\u002Fuse-from-ai","Use Transactional from your AI assistant","Connect Transactional to Claude, Cursor, ChatGPT, or Gemini via MCP so your assistant can read your templates and generate PDFs directly.",{"path":399,"title":400,"description":401,"category":402,"order":126},"\u002Fdocs\u002Fguides\u002Fauthoring\u002Fdesign-for-pdf","Designing templates that survive PDF rendering","PDFs are static — drop the animations, oversample your canvas charts, lean on vectors. The rules that make a template look sharp at print resolution.","authoring",{"path":404,"title":405,"description":406,"category":402,"order":119},"\u002Fdocs\u002Fguides\u002Fauthoring\u002Fhandlebars","Handlebars cheat sheet","The exact subset of Handlebars supported in Transactional templates — variables, conditionals, loops, and what NOT to reach for.",{"path":408,"title":409,"description":410,"category":402,"order":136},"\u002Fdocs\u002Fguides\u002Fauthoring\u002Fmodeling-variables","Modeling your variables","When to make something a variable vs. inline. Keep the API contract small, your templates portable, and your integration code boring.",{"path":412,"title":413,"description":414,"category":402,"order":144},"\u002Fdocs\u002Fguides\u002Fauthoring\u002Fworking-with-ai","Working with the AI assistant","Prompts and patterns to get good templates fast — what to ask, when to iterate, when to start over.",{"path":416,"title":417,"description":418,"category":419,"order":119},"\u002Fdocs\u002Fguides\u002Fgetting-started\u002Fquickstart","Quickstart — your first PDF in 5 minutes","Sign up, design a template, render your first PDF through the API. End-to-end in five minutes.","getting-started",{"path":421,"title":422,"description":423,"category":424,"order":119},"\u002Fdocs\u002Fguides\u002Fintegrations\u002Fnode-bun","Calling \u002Fv1\u002Fgenerate from Node.js & Bun","Production-grade integration using native fetch — retries, error handling, streaming the PDF to your storage.","integrations",{"path":426,"title":427,"description":428,"category":424,"order":126},"\u002Fdocs\u002Fguides\u002Fintegrations\u002Fphp-laravel","Calling \u002Fv1\u002Fgenerate from PHP & Laravel","cURL extension, Guzzle, or Laravel's HTTP client — render PDFs with retries and proper error handling.",{"path":430,"title":431,"description":432,"category":424,"order":136},"\u002Fdocs\u002Fguides\u002Fintegrations\u002Fpython","Calling \u002Fv1\u002Fgenerate from Python","urllib (stdlib), requests, or httpx with retry — render PDFs from Django, FastAPI, or any Python service.",{"path":434,"title":435,"description":436,"category":437,"order":119},"\u002Fdocs\u002Fguides\u002Foperations\u002Fmonitoring-usage","Monitoring usage & credits","Read the dashboard gauges, set sane alerts, and decide when to top up vs. upgrade.","operations",{"path":439,"title":440,"description":441,"category":437,"order":126},"\u002Fdocs\u002Fguides\u002Foperations\u002Fstoring-pdfs","Storing & serving the generated PDF","The \u002Fv1\u002Fgenerate URL is signed and short-lived. Patterns for keeping the PDF around — your bucket, your CDN, your DB.",1780347733844]