[{"data":1,"prerenderedAt":631},["ShallowReactive",2],{"navigation_docs":3,"-connectors-api":139,"-connectors-api-surround":626},[4,8,12,16,20,24,28,32,59,63,117,121,135],{"title":5,"path":6,"stem":7},"Introduction","\u002Fintroduction","1.introduction",{"title":9,"path":10,"stem":11},"Memory","\u002Fmemory","10.memory",{"title":13,"path":14,"stem":15},"Customization","\u002Fcustomization","11.customization",{"title":17,"path":18,"stem":19},"Deployment","\u002Fdeployment","12.deployment",{"title":21,"path":22,"stem":23},"Reference","\u002Freference","13.reference",{"title":25,"path":26,"stem":27},"Quickstart","\u002Fquickstart","2.quickstart",{"title":29,"path":30,"stem":31},"Installation","\u002Finstallation","3.installation",{"title":33,"icon":34,"path":35,"stem":36,"children":37,"page":58},"Connectors","i-lucide-cable","\u002Fconnectors","4.connectors",[38,42,46,50,54],{"title":39,"path":40,"stem":41},"Telegram","\u002Fconnectors\u002Ftelegram","4.connectors\u002F1.telegram",{"title":43,"path":44,"stem":45},"Slack","\u002Fconnectors\u002Fslack","4.connectors\u002F2.slack",{"title":47,"path":48,"stem":49},"Email","\u002Fconnectors\u002Femail","4.connectors\u002F3.email",{"title":51,"path":52,"stem":53},"API","\u002Fconnectors\u002Fapi","4.connectors\u002F4.api",{"title":55,"path":56,"stem":57},"Terminal","\u002Fconnectors\u002Fterminal","4.connectors\u002F5.terminal",false,{"title":60,"path":61,"stem":62},"Attachments","\u002Fattachments","5.attachments",{"title":64,"icon":65,"path":66,"stem":67,"children":68,"page":58},"Tools","i-lucide-wrench","\u002Ftools","6.tools",[69,73,77,81,85,89,93,97,101,105,109,113],{"title":70,"path":71,"stem":72},"File Manager","\u002Ftools\u002Ffile-manager","6.tools\u002F1.file-manager",{"title":74,"path":75,"stem":76},"Text-to-Speech","\u002Ftools\u002Ftext-to-speech","6.tools\u002F10.text-to-speech",{"title":78,"path":79,"stem":80},"Confirmations","\u002Ftools\u002Fconfirmations","6.tools\u002F11.confirmations",{"title":82,"path":83,"stem":84},"Adding Custom Tools","\u002Ftools\u002Fadding-custom-tools","6.tools\u002F12.adding-custom-tools",{"title":86,"path":87,"stem":88},"Image Manager","\u002Ftools\u002Fimage-manager","6.tools\u002F2.image-manager",{"title":90,"path":91,"stem":92},"Web Request","\u002Ftools\u002Fweb-request","6.tools\u002F3.web-request",{"title":94,"path":95,"stem":96},"Reminders","\u002Ftools\u002Freminders","6.tools\u002F4.reminders",{"title":98,"path":99,"stem":100},"Heartbeats","\u002Ftools\u002Fheartbeats","6.tools\u002F5.heartbeats",{"title":102,"path":103,"stem":104},"Email Manager","\u002Ftools\u002Femail-manager","6.tools\u002F6.email-manager",{"title":106,"path":107,"stem":108},"Calendar","\u002Ftools\u002Fcalendar","6.tools\u002F7.calendar",{"title":110,"path":111,"stem":112},"Read Database","\u002Ftools\u002Fread-database","6.tools\u002F8.read-database",{"title":114,"path":115,"stem":116},"Headless Browser","\u002Ftools\u002Fbrowser","6.tools\u002F9.browser",{"title":118,"path":119,"stem":120},"Tinker","\u002Ftinker","7.tinker",{"title":122,"icon":123,"path":124,"stem":125,"children":126,"page":58},"Skills","i-lucide-sparkles","\u002Fskills","8.skills",[127,131],{"title":128,"path":129,"stem":130},"Overview","\u002Fskills\u002Foverview","8.skills\u002F1.overview",{"title":132,"path":133,"stem":134},"Adding Custom Skills","\u002Fskills\u002Fadding-custom-skills","8.skills\u002F2.adding-custom-skills",{"title":136,"path":137,"stem":138},"Personas","\u002Fpersonas","9.personas",{"id":140,"title":51,"body":141,"description":619,"extension":620,"links":621,"meta":622,"navigation":623,"path":52,"seo":624,"stem":53,"__hash__":625},"docs\u002F4.connectors\u002F4.api.md",{"type":142,"value":143,"toc":611},"minimark",[144,148,157,161,164,192,199,210,219,223,226,234,244,248,253,326,419,422,510,514,520,590,596,598,604,607],[145,146,5],"h2",{"id":147},"introduction",[149,150,151,152,156],"p",{},"The API connector exposes a single ",[153,154,155],"code",{},"POST \u002Fapi\u002Fmessage"," endpoint authenticated with a Bearer token. It's the only connector that runs synchronously — the agent's reply is returned in the same HTTP response, with no queue in between. Use it for webhooks, internal tools, and any client that wants a request-response shape.",[145,158,160],{"id":159},"setup","Setup",[149,162,163],{},"Run the connector wizard:",[165,166,171],"pre",{"className":167,"code":168,"language":169,"meta":170,"style":170},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","php artisan laraclaw:setup-connector api\n","bash","",[153,172,173],{"__ignoreMap":170},[174,175,178,182,186,189],"span",{"class":176,"line":177},"line",1,[174,179,181],{"class":180},"sBMFI","php",[174,183,185],{"class":184},"sfazB"," artisan",[174,187,188],{"class":184}," laraclaw:setup-connector",[174,190,191],{"class":184}," api\n",[149,193,194,195,198],{},"It generates a 64-character random token, stores its SHA-256 hash in ",[153,196,197],{},"laraclaw_accounts",", prints the plaintext token once, and sets:",[165,200,204],{"className":201,"code":202,"language":203,"meta":170,"style":170},"language-env shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","LARACLAW_API_ENABLED=true\n","env",[153,205,206],{"__ignoreMap":170},[174,207,208],{"class":176,"line":177},[174,209,202],{},[211,212,213],"blockquote",{},[149,214,215,218],{},[174,216,217],{},"!WARNING","\nThe plaintext token is only printed once. Save it somewhere safe. If you lose it, re-run the wizard to generate a new one.",[145,220,222],{"id":221},"authentication","Authentication",[149,224,225],{},"Every request must include the token as a Bearer header:",[165,227,232],{"className":228,"code":230,"language":231},[229],"language-text","Authorization: Bearer YOUR_TOKEN\n","text",[153,233,230],{"__ignoreMap":170},[149,235,236,237,239,240,243],{},"The middleware hashes the incoming token and looks it up in ",[153,238,197],{},". Anything that doesn't match returns ",[153,241,242],{},"401",".",[145,245,247],{"id":246},"sending-a-message","Sending a Message",[149,249,250,252],{},[153,251,155],{}," accepts the following parameters:",[254,255,256,275],"table",{},[257,258,259],"thead",{},[260,261,262,266,269,272],"tr",{},[263,264,265],"th",{},"Parameter",[263,267,268],{},"Type",[263,270,271],{},"Required",[263,273,274],{},"Description",[276,277,278,294,309],"tbody",{},[260,279,280,285,288,291],{},[281,282,283],"td",{},[153,284,231],{},[281,286,287],{},"string",[281,289,290],{},"Yes (unless attachments are sent)",[281,292,293],{},"The message text",[260,295,296,301,303,306],{},[281,297,298],{},[153,299,300],{},"key",[281,302,287],{},[281,304,305],{},"No",[281,307,308],{},"Pass to continue an existing conversation",[260,310,311,316,321,323],{},[281,312,313],{},[153,314,315],{},"attachments",[281,317,318,319],{},"file",[174,320],{},[281,322,305],{},[281,324,325],{},"Uploaded files",[165,327,329],{"className":167,"code":328,"language":169,"meta":170,"style":170},"curl -X POST https:\u002F\u002Fyour-app.com\u002Fapi\u002Fmessage \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"text\": \"What's on my calendar tomorrow?\"}'\n",[153,330,331,349,370,384],{"__ignoreMap":170},[174,332,333,336,339,342,345],{"class":176,"line":177},[174,334,335],{"class":180},"curl",[174,337,338],{"class":184}," -X",[174,340,341],{"class":184}," POST",[174,343,344],{"class":184}," https:\u002F\u002Fyour-app.com\u002Fapi\u002Fmessage",[174,346,348],{"class":347},"sTEyZ"," \\\n",[174,350,352,355,359,362,365,368],{"class":176,"line":351},2,[174,353,354],{"class":184},"  -H",[174,356,358],{"class":357},"sMK4o"," \"",[174,360,361],{"class":184},"Authorization: Bearer ",[174,363,364],{"class":347},"$TOKEN",[174,366,367],{"class":357},"\"",[174,369,348],{"class":347},[174,371,373,375,377,380,382],{"class":176,"line":372},3,[174,374,354],{"class":184},[174,376,358],{"class":357},[174,378,379],{"class":184},"Content-Type: application\u002Fjson",[174,381,367],{"class":357},[174,383,348],{"class":347},[174,385,387,390,393,396,399,402,405,408,411,414,416],{"class":176,"line":386},4,[174,388,389],{"class":184},"  -d",[174,391,392],{"class":357}," '",[174,394,395],{"class":184},"{\"text\": \"What",[174,397,398],{"class":357},"'",[174,400,401],{"class":184},"s",[174,403,404],{"class":184}," on",[174,406,407],{"class":184}," my",[174,409,410],{"class":184}," calendar",[174,412,413],{"class":184}," tomorrow?",[174,415,367],{"class":357},[174,417,418],{"class":184},"}'\n",[149,420,421],{},"The response:",[165,423,427],{"className":424,"code":425,"language":426,"meta":170,"style":170},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"success\": true,\n  \"text\": \"You have a 9am standup and a 2pm dentist appointment.\",\n  \"key\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"attachments\": []\n}\n","json",[153,428,429,434,451,471,490,504],{"__ignoreMap":170},[174,430,431],{"class":176,"line":177},[174,432,433],{"class":357},"{\n",[174,435,436,439,443,445,448],{"class":176,"line":351},[174,437,438],{"class":357},"  \"",[174,440,442],{"class":441},"spNyl","success",[174,444,367],{"class":357},[174,446,447],{"class":357},":",[174,449,450],{"class":357}," true,\n",[174,452,453,455,457,459,461,463,466,468],{"class":176,"line":372},[174,454,438],{"class":357},[174,456,231],{"class":441},[174,458,367],{"class":357},[174,460,447],{"class":357},[174,462,358],{"class":357},[174,464,465],{"class":184},"You have a 9am standup and a 2pm dentist appointment.",[174,467,367],{"class":357},[174,469,470],{"class":357},",\n",[174,472,473,475,477,479,481,483,486,488],{"class":176,"line":386},[174,474,438],{"class":357},[174,476,300],{"class":441},[174,478,367],{"class":357},[174,480,447],{"class":357},[174,482,358],{"class":357},[174,484,485],{"class":184},"550e8400-e29b-41d4-a716-446655440000",[174,487,367],{"class":357},[174,489,470],{"class":357},[174,491,493,495,497,499,501],{"class":176,"line":492},5,[174,494,438],{"class":357},[174,496,315],{"class":441},[174,498,367],{"class":357},[174,500,447],{"class":357},[174,502,503],{"class":357}," []\n",[174,505,507],{"class":176,"line":506},6,[174,508,509],{"class":357},"}\n",[145,511,513],{"id":512},"continuing-a-conversation","Continuing a Conversation",[149,515,516,517,519],{},"Pass the ",[153,518,300],{}," from a previous response in your next request to continue the same conversation:",[165,521,523],{"className":167,"code":522,"language":169,"meta":170,"style":170},"curl -X POST https:\u002F\u002Fyour-app.com\u002Fapi\u002Fmessage \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"text\": \"Reschedule the dentist to next week.\",\n    \"key\": \"550e8400-e29b-41d4-a716-446655440000\"\n  }'\n",[153,524,525,537,551,563,571,576,581],{"__ignoreMap":170},[174,526,527,529,531,533,535],{"class":176,"line":177},[174,528,335],{"class":180},[174,530,338],{"class":184},[174,532,341],{"class":184},[174,534,344],{"class":184},[174,536,348],{"class":347},[174,538,539,541,543,545,547,549],{"class":176,"line":351},[174,540,354],{"class":184},[174,542,358],{"class":357},[174,544,361],{"class":184},[174,546,364],{"class":347},[174,548,367],{"class":357},[174,550,348],{"class":347},[174,552,553,555,557,559,561],{"class":176,"line":372},[174,554,354],{"class":184},[174,556,358],{"class":357},[174,558,379],{"class":184},[174,560,367],{"class":357},[174,562,348],{"class":347},[174,564,565,567,569],{"class":176,"line":386},[174,566,389],{"class":184},[174,568,392],{"class":357},[174,570,433],{"class":184},[174,572,573],{"class":176,"line":492},[174,574,575],{"class":184},"    \"text\": \"Reschedule the dentist to next week.\",\n",[174,577,578],{"class":176,"line":506},[174,579,580],{"class":184},"    \"key\": \"550e8400-e29b-41d4-a716-446655440000\"\n",[174,582,584,587],{"class":176,"line":583},7,[174,585,586],{"class":184},"  }",[174,588,589],{"class":357},"'\n",[149,591,592,593,595],{},"Omit the ",[153,594,300],{}," to start a new conversation. Each token can hold any number of independent conversations.",[145,597,60],{"id":315},[149,599,600,601,603],{},"Files uploaded as multipart form data are saved to the attachments disk and made available to the agent the same way Telegram and Slack uploads are. Outbound attachments produced by tools come back in the response under the ",[153,602,315],{}," key, each entry pointing at a file on the attachments disk.",[149,605,606],{},"The reply does not delete outbound files — your client is responsible for fetching them and any cleanup.",[608,609,610],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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);}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}",{"title":170,"searchDepth":351,"depth":351,"links":612},[613,614,615,616,617,618],{"id":147,"depth":351,"text":5},{"id":159,"depth":351,"text":160},{"id":221,"depth":351,"text":222},{"id":246,"depth":351,"text":247},{"id":512,"depth":351,"text":513},{"id":315,"depth":351,"text":60},"Talk to Laraclaw over HTTP using a hashed Bearer token.","md",null,{},true,{"title":51,"description":619},"XrxUQNI4bNDpsdB5GIe5fMRxVEQYIwHkkucCfAoHsnA",[627,629],{"title":47,"path":48,"stem":49,"description":628,"children":-1},"Let Laraclaw read incoming email via IMAP and reply via SMTP.",{"title":55,"path":56,"stem":57,"description":630,"children":-1},"Chat with the agent from your shell.",1786661906119]