[{"data":1,"prerenderedAt":433},["ShallowReactive",2],{"nav-docs":3,"nav-api":60,"docs-mcp-server":89},[4],{"title":5,"path":6,"stem":7,"children":8},"Docs","\u002Fdocs","docs",[9,12,16,20,24,28,32,36,40,44,48,52,56],{"title":10,"path":6,"stem":11},"Installation","docs\u002Findex",{"title":13,"path":14,"stem":15},"Sending files","\u002Fdocs\u002Fsending-files","docs\u002F02.sending-files",{"title":17,"path":18,"stem":19},"Receiving files","\u002Fdocs\u002Freceiving-files","docs\u002F03.receiving-files",{"title":21,"path":22,"stem":23},"Passwords, galleries and backgrounds","\u002Fdocs\u002Fshare-options","docs\u002F04.share-options",{"title":25,"path":26,"stem":27},"Expiry and deletion","\u002Fdocs\u002Fexpiry","docs\u002F05.expiry",{"title":29,"path":30,"stem":31},"Users","\u002Fdocs\u002Fusers","docs\u002F06.users",{"title":33,"path":34,"stem":35},"Configuration","\u002Fdocs\u002Fconfiguration","docs\u002F07.configuration",{"title":37,"path":38,"stem":39},"Colours and branding","\u002Fdocs\u002Fcolors","docs\u002F08.colors",{"title":41,"path":42,"stem":43},"Docker","\u002Fdocs\u002Fdocker","docs\u002F09.docker",{"title":45,"path":46,"stem":47},"API keys","\u002Fdocs\u002Fapi-keys","docs\u002F10.api-keys",{"title":49,"path":50,"stem":51},"MCP server","\u002Fdocs\u002Fmcp-server","docs\u002F11.mcp-server",{"title":53,"path":54,"stem":55},"Troubleshooting","\u002Fdocs\u002Ftroubleshooting","docs\u002F12.troubleshooting",{"title":57,"path":58,"stem":59},"Contributing","\u002Fdocs\u002Fcontributing","docs\u002F13.contributing",[61],{"title":62,"path":63,"stem":64,"children":65},"Api","\u002Fapi","api",[66,69,73,77,81,85],{"title":67,"path":63,"stem":68},"REST API","api\u002Findex",{"title":70,"path":71,"stem":72},"Transfers","\u002Fapi\u002Ftransfers","api\u002F02.transfers",{"title":74,"path":75,"stem":76},"Uploading files","\u002Fapi\u002Fupload","api\u002F03.upload",{"title":78,"path":79,"stem":80},"Sending a transfer","\u002Fapi\u002Fsend","api\u002F04.send",{"title":82,"path":83,"stem":84},"Downloading","\u002Fapi\u002Fdownload","api\u002F05.download",{"title":86,"path":87,"stem":88},"Recipients","\u002Fapi\u002Frecipients","api\u002F06.recipients",{"id":90,"title":49,"body":91,"description":427,"extension":428,"meta":429,"navigation":430,"path":50,"seo":431,"stem":51,"__hash__":432},"docs\u002Fdocs\u002F11.mcp-server.md",{"type":92,"value":93,"toc":420},"minimark",[94,98,110,115,127,217,220,224,314,318,324,349,353,361,384,389,393,416],[95,96,49],"h1",{"id":97},"mcp-server",[99,100,101,102,109],"p",{},"LokalTransfer speaks the ",[103,104,108],"a",{"href":105,"rel":106},"https:\u002F\u002Fmodelcontextprotocol.io",[107],"nofollow","Model Context Protocol",",\nso an AI assistant can send and manage transfers on your behalf. An agent can\nhand a client their files directly, on your own server, without a person driving\na browser.",[111,112,114],"h2",{"id":113},"connecting","Connecting",[99,116,117,118,122,123,126],{},"Point your MCP client at ",[119,120,121],"code",{},"\u002Fmcp"," and give it an ",[103,124,125],{"href":46},"API key",":",[128,129,134],"pre",{"className":130,"code":131,"language":132,"meta":133,"style":133},"language-json shiki shiki-themes github-light github-dark","{\n  \"mcpServers\": {\n    \"lokaltransfer\": {\n      \"url\": \"https:\u002F\u002Ftransfer.example.com\u002Fmcp\",\n      \"headers\": { \"x-api-key\": \"your-api-key\" }\n    }\n  }\n}\n","json","",[119,135,136,145,155,163,179,199,205,211],{"__ignoreMap":133},[137,138,141],"span",{"class":139,"line":140},"line",1,[137,142,144],{"class":143},"sVt8B","{\n",[137,146,148,152],{"class":139,"line":147},2,[137,149,151],{"class":150},"sj4cs","  \"mcpServers\"",[137,153,154],{"class":143},": {\n",[137,156,158,161],{"class":139,"line":157},3,[137,159,160],{"class":150},"    \"lokaltransfer\"",[137,162,154],{"class":143},[137,164,166,169,172,176],{"class":139,"line":165},4,[137,167,168],{"class":150},"      \"url\"",[137,170,171],{"class":143},": ",[137,173,175],{"class":174},"sZZnC","\"https:\u002F\u002Ftransfer.example.com\u002Fmcp\"",[137,177,178],{"class":143},",\n",[137,180,182,185,188,191,193,196],{"class":139,"line":181},5,[137,183,184],{"class":150},"      \"headers\"",[137,186,187],{"class":143},": { ",[137,189,190],{"class":150},"\"x-api-key\"",[137,192,171],{"class":143},[137,194,195],{"class":174},"\"your-api-key\"",[137,197,198],{"class":143}," }\n",[137,200,202],{"class":139,"line":201},6,[137,203,204],{"class":143},"    }\n",[137,206,208],{"class":139,"line":207},7,[137,209,210],{"class":143},"  }\n",[137,212,214],{"class":139,"line":213},8,[137,215,216],{"class":143},"}\n",[99,218,219],{},"There is nothing to switch on. The endpoint carries no authority of its own —\nevery call needs a valid key, the same credential the REST API takes — so an\ninstance that issues no keys exposes nothing.",[111,221,223],{"id":222},"the-tools","The tools",[225,226,227,240],"table",{},[228,229,230],"thead",{},[231,232,233,237],"tr",{},[234,235,236],"th",{},"Tool",[234,238,239],{},"Does",[241,242,243,254,264,274,284,294,304],"tbody",{},[231,244,245,251],{},[246,247,248],"td",{},[119,249,250],{},"whoami",[246,252,253],{},"Which account the key acts as, and whether it is read-only",[231,255,256,261],{},[246,257,258],{},[119,259,260],{},"listTransfers",[246,262,263],{},"What the user sent, or what was sent to them",[231,265,266,271],{},[246,267,268],{},[119,269,270],{},"getTransfer",[246,272,273],{},"One transfer in full, including its file list",[231,275,276,281],{},[246,277,278],{},[119,279,280],{},"listRecipients",[246,282,283],{},"Team members, for resolving a name into an address",[231,285,286,291],{},[246,287,288],{},[119,289,290],{},"createTransfer",[246,292,293],{},"Start a draft — recipients, retention, password, layout",[231,295,296,301],{},[246,297,298],{},[119,299,300],{},"sendTransfer",[246,302,303],{},"Deliver it and return the download link",[231,305,306,311],{},[246,307,308],{},[119,309,310],{},"deleteTransfer",[246,312,313],{},"Erase it — files and record, irreversibly",[111,315,317],{"id":316},"uploading-is-deliberately-not-a-tool","Uploading is deliberately not a tool",[99,319,320,321,323],{},"File bytes have no business inside a tool call. ",[119,322,290],{}," returns the URL\nto POST them to, and the server's own instructions tell the agent how:",[325,326,327,333,344],"ol",{},[328,329,330,332],"li",{},[119,331,290],{}," with the recipients, a subject and a retention.",[328,334,335,336,339,340,343],{},"POST each file to ",[119,337,338],{},"\u002Fapi\u002Ftransfers\u002F\u003Cid>\u002Ffiles"," as multipart form data, with the\nsame ",[119,341,342],{},"x-api-key"," header.",[328,345,346,348],{},[119,347,300],{}," — this is what mails the recipients, starts the expiry clock\nand returns the link.",[111,350,352],{"id":351},"what-an-agent-cannot-do","What an agent cannot do",[99,354,355,356,360],{},"The MCP surface is ",[357,358,359],"strong",{},"member-only"," and inherits every limit the key has:",[362,363,364,367,370,381],"ul",{},[328,365,366],{},"A read-only key can call the read tools and nothing else.",[328,368,369],{},"No tool administers users.",[328,371,372,373,376,377,380],{},"Another account's transfer answers ",[119,374,375],{},"NOT_FOUND"," rather than ",[119,378,379],{},"FORBIDDEN",", so ids\ncannot be probed for existence by watching which error comes back.",[328,382,383],{},"A recipient reading a transfer sent to them does not see who else received it.",[99,385,386,388],{},[119,387,310],{}," is marked destructive and erases the files for good. An agent\nshould confirm with you before calling it, and a well-behaved client will ask.",[111,390,392],{"id":391},"errors","Errors",[99,394,395,396,399,400,178,403,405,406,405,408,411,412,415],{},"Failures come back as ",[119,397,398],{},"CODE: message",", where the code is one of ",[119,401,402],{},"UNAUTHORIZED",[119,404,379],{},", ",[119,407,375],{},[119,409,410],{},"VALIDATION"," or ",[119,413,414],{},"INTERNAL"," — machine-readable, rather\nthan prose an agent has to interpret.",[417,418,419],"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":133,"searchDepth":147,"depth":147,"links":421},[422,423,424,425,426],{"id":113,"depth":147,"text":114},{"id":222,"depth":147,"text":223},{"id":316,"depth":147,"text":317},{"id":351,"depth":147,"text":352},{"id":391,"depth":147,"text":392},"LokalTransfer speaks the Model Context Protocol,\nso an AI assistant can send and manage transfers on your behalf. An agent can\nhand a client their files directly, on your own server, without a person driving\na browser.","md",{},true,{"title":49,"description":427},"mNFFt7lvQ2K5GKXxD2jy3nYdgAttudCnZ9X24EYK9ck",1790104591923]