[{"data":1,"prerenderedAt":685},["ShallowReactive",2],{"\u002Fdocs\u002Freference\u002Fintegration-tools":3,"docs-navigation":611,"docs-surround:\u002Fdocs\u002Freference\u002Fintegration-tools":682},{"id":4,"title":5,"body":6,"description":602,"extension":603,"meta":604,"navigation":605,"path":606,"seo":607,"stem":609,"__hash__":610},"docs\u002Fdocs\u002F4.reference\u002F3.integration-tools.md","Integration Tools",{"type":7,"value":8,"toc":593},"minimark",[9,13,16,21,24,27,43,46,50,53,104,107,111,114,117,120,124,127,130,147,150,154,157,345,348,352,359,539,562,566,569,586,589],[10,11,12],"p",{},"Integration tools are the actions Gondo can use through a connected integration.",[10,14,15],{},"A tool might list files, read a document, update a card, create an issue, send an email, or call a custom API endpoint.",[17,18,20],"h2",{"id":19},"tools-and-toolsets","Tools and toolsets",[10,22,23],{},"Some integrations have a flat list of tools. Others group tools into toolsets.",[10,25,26],{},"For example, a Google Workspace integration may expose toolsets such as:",[28,29,30,34,37,40],"ul",{},[31,32,33],"li",{},"Drive",[31,35,36],{},"Docs",[31,38,39],{},"Sheets",[31,41,42],{},"Slides",[10,44,45],{},"Toolsets make it easier to enable only the parts of a large integration that a workflow needs.",[17,47,49],{"id":48},"scopes","Scopes",[10,51,52],{},"Tools have a scope:",[54,55,56,69],"table",{},[57,58,59],"thead",{},[60,61,62,66],"tr",{},[63,64,65],"th",{},"Scope",[63,67,68],{},"Meaning",[70,71,72,84,94],"tbody",{},[60,73,74,81],{},[75,76,77],"td",{},[78,79,80],"code",{},"read",[75,82,83],{},"Reads data without changing the external system.",[60,85,86,91],{},[75,87,88],{},[78,89,90],{},"write",[75,92,93],{},"Creates, updates, sends, moves, or deletes data.",[60,95,96,101],{},[75,97,98],{},[78,99,100],{},"admin",[75,102,103],{},"Performs higher-risk or administrative actions.",[10,105,106],{},"An integration can have a maximum scope. If the integration is limited to read, write tools are not available to workflows using that integration.",[17,108,110],{"id":109},"disabled-tools","Disabled tools",[10,112,113],{},"Specific tools can be disabled even when their toolset is enabled.",[10,115,116],{},"This is useful when an integration has one or two risky actions that a workflow does not need.",[10,118,119],{},"For example, a workflow may need to read Drive files and create folders, but not permanently delete files.",[17,121,123],{"id":122},"custom-tools","Custom tools",[10,125,126],{},"Custom API tools are tools created specifically for one connected API integration.",[10,128,129],{},"Each custom tool has:",[28,131,132,135,138,141,144],{},[31,133,134],{},"A name.",[31,136,137],{},"A description.",[31,139,140],{},"A scope.",[31,142,143],{},"An input schema.",[31,145,146],{},"Handler code.",[10,148,149],{},"The input schema tells Gondo what arguments the tool accepts. Handler code performs the provider API call through the integration client.",[17,151,153],{"id":152},"input-schema-basics","Input schema basics",[10,155,156],{},"Tool input schemas use JSON Schema. Keep them small and explicit.",[158,159,164],"pre",{"className":160,"code":161,"language":162,"meta":163,"style":163},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"type\": \"object\",\n  \"properties\": {\n    \"cardId\": { \"type\": \"string\" },\n    \"comment\": { \"type\": \"string\" }\n  },\n  \"required\": [\"cardId\", \"comment\"],\n  \"additionalProperties\": false\n}\n","json","",[78,165,166,175,203,218,254,285,291,324,339],{"__ignoreMap":163},[167,168,171],"span",{"class":169,"line":170},"line",1,[167,172,174],{"class":173},"sMK4o","{\n",[167,176,178,181,185,188,191,194,198,200],{"class":169,"line":177},2,[167,179,180],{"class":173},"  \"",[167,182,184],{"class":183},"spNyl","type",[167,186,187],{"class":173},"\"",[167,189,190],{"class":173},":",[167,192,193],{"class":173}," \"",[167,195,197],{"class":196},"sfazB","object",[167,199,187],{"class":173},[167,201,202],{"class":173},",\n",[167,204,206,208,211,213,215],{"class":169,"line":205},3,[167,207,180],{"class":173},[167,209,210],{"class":183},"properties",[167,212,187],{"class":173},[167,214,190],{"class":173},[167,216,217],{"class":173}," {\n",[167,219,221,224,228,230,232,235,237,240,242,244,246,249,251],{"class":169,"line":220},4,[167,222,223],{"class":173},"    \"",[167,225,227],{"class":226},"sBMFI","cardId",[167,229,187],{"class":173},[167,231,190],{"class":173},[167,233,234],{"class":173}," {",[167,236,193],{"class":173},[167,238,184],{"class":239},"sbssI",[167,241,187],{"class":173},[167,243,190],{"class":173},[167,245,193],{"class":173},[167,247,248],{"class":196},"string",[167,250,187],{"class":173},[167,252,253],{"class":173}," },\n",[167,255,257,259,262,264,266,268,270,272,274,276,278,280,282],{"class":169,"line":256},5,[167,258,223],{"class":173},[167,260,261],{"class":226},"comment",[167,263,187],{"class":173},[167,265,190],{"class":173},[167,267,234],{"class":173},[167,269,193],{"class":173},[167,271,184],{"class":239},[167,273,187],{"class":173},[167,275,190],{"class":173},[167,277,193],{"class":173},[167,279,248],{"class":196},[167,281,187],{"class":173},[167,283,284],{"class":173}," }\n",[167,286,288],{"class":169,"line":287},6,[167,289,290],{"class":173},"  },\n",[167,292,294,296,299,301,303,306,308,310,312,315,317,319,321],{"class":169,"line":293},7,[167,295,180],{"class":173},[167,297,298],{"class":183},"required",[167,300,187],{"class":173},[167,302,190],{"class":173},[167,304,305],{"class":173}," [",[167,307,187],{"class":173},[167,309,227],{"class":196},[167,311,187],{"class":173},[167,313,314],{"class":173},",",[167,316,193],{"class":173},[167,318,261],{"class":196},[167,320,187],{"class":173},[167,322,323],{"class":173},"],\n",[167,325,327,329,332,334,336],{"class":169,"line":326},8,[167,328,180],{"class":173},[167,330,331],{"class":183},"additionalProperties",[167,333,187],{"class":173},[167,335,190],{"class":173},[167,337,338],{"class":173}," false\n",[167,340,342],{"class":169,"line":341},9,[167,343,344],{"class":173},"}\n",[10,346,347],{},"Use required fields for anything the handler must read.",[17,349,351],{"id":350},"handler-basics","Handler basics",[10,353,354,355,358],{},"Custom API tool handlers use the connected ",[78,356,357],{},"integration"," client. Credentials are injected by Gondo, so handler code should not read or store secrets.",[158,360,364],{"className":361,"code":362,"language":363,"meta":163,"style":163},"language-js shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","async (input) => {\n  const response = await integration.post(`\u002Fcards\u002F${input.cardId}\u002Factions\u002Fcomments`, {\n    text: input.comment\n  })\n\n  const result = await response.json()\n  console.log('Added comment to card.')\n  return { id: result.id }\n}\n","js",[78,365,366,386,443,458,466,472,492,514,535],{"__ignoreMap":163},[167,367,368,371,374,378,381,384],{"class":169,"line":170},[167,369,370],{"class":183},"async",[167,372,373],{"class":173}," (",[167,375,377],{"class":376},"sHdIc","input",[167,379,380],{"class":173},")",[167,382,383],{"class":183}," =>",[167,385,217],{"class":173},[167,387,388,391,395,398,402,405,408,412,416,419,422,425,427,429,431,434,437,439,441],{"class":169,"line":177},[167,389,390],{"class":183},"  const",[167,392,394],{"class":393},"sTEyZ"," response",[167,396,397],{"class":173}," =",[167,399,401],{"class":400},"s7zQu"," await",[167,403,404],{"class":393}," integration",[167,406,407],{"class":173},".",[167,409,411],{"class":410},"s2Zo4","post",[167,413,415],{"class":414},"swJcz","(",[167,417,418],{"class":173},"`",[167,420,421],{"class":196},"\u002Fcards\u002F",[167,423,424],{"class":173},"${",[167,426,377],{"class":393},[167,428,407],{"class":173},[167,430,227],{"class":393},[167,432,433],{"class":173},"}",[167,435,436],{"class":196},"\u002Factions\u002Fcomments",[167,438,418],{"class":173},[167,440,314],{"class":173},[167,442,217],{"class":173},[167,444,445,448,450,453,455],{"class":169,"line":205},[167,446,447],{"class":414},"    text",[167,449,190],{"class":173},[167,451,452],{"class":393}," input",[167,454,407],{"class":173},[167,456,457],{"class":393},"comment\n",[167,459,460,463],{"class":169,"line":220},[167,461,462],{"class":173},"  }",[167,464,465],{"class":414},")\n",[167,467,468],{"class":169,"line":256},[167,469,471],{"emptyLinePlaceholder":470},true,"\n",[167,473,474,476,479,481,483,485,487,489],{"class":169,"line":287},[167,475,390],{"class":183},[167,477,478],{"class":393}," result",[167,480,397],{"class":173},[167,482,401],{"class":400},[167,484,394],{"class":393},[167,486,407],{"class":173},[167,488,162],{"class":410},[167,490,491],{"class":414},"()\n",[167,493,494,497,499,502,504,507,510,512],{"class":169,"line":293},[167,495,496],{"class":393},"  console",[167,498,407],{"class":173},[167,500,501],{"class":410},"log",[167,503,415],{"class":414},[167,505,506],{"class":173},"'",[167,508,509],{"class":196},"Added comment to card.",[167,511,506],{"class":173},[167,513,465],{"class":414},[167,515,516,519,521,524,526,528,530,533],{"class":169,"line":326},[167,517,518],{"class":400},"  return",[167,520,234],{"class":173},[167,522,523],{"class":414}," id",[167,525,190],{"class":173},[167,527,478],{"class":393},[167,529,407],{"class":173},[167,531,532],{"class":393},"id",[167,534,284],{"class":173},[167,536,537],{"class":169,"line":341},[167,538,344],{"class":173},[10,540,541,542,545,546,545,549,545,552,545,555,558,559,407],{},"Provider API calls should go through ",[78,543,544],{},"integration.fetch",", ",[78,547,548],{},"integration.get",[78,550,551],{},"integration.post",[78,553,554],{},"integration.put",[78,556,557],{},"integration.patch",", or ",[78,560,561],{},"integration.delete",[17,563,565],{"id":564},"good-tool-design","Good tool design",[10,567,568],{},"Good tools are:",[28,570,571,574,577,580,583],{},[31,572,573],{},"Small.",[31,575,576],{},"Easy to describe.",[31,578,579],{},"Focused on one action.",[31,581,582],{},"Honest about read\u002Fwrite behavior.",[31,584,585],{},"Structured enough that an agent does not need to guess IDs or fields.",[10,587,588],{},"For custom integrations, build read or list tools before write tools. This helps workflows discover the correct IDs before changing anything.",[590,591,592],"style",{},"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}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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 .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}",{"title":163,"searchDepth":177,"depth":177,"links":594},[595,596,597,598,599,600,601],{"id":19,"depth":177,"text":20},{"id":48,"depth":177,"text":49},{"id":109,"depth":177,"text":110},{"id":122,"depth":177,"text":123},{"id":152,"depth":177,"text":153},{"id":350,"depth":177,"text":351},{"id":564,"depth":177,"text":565},"How integration tools, toolsets, scopes, disabled tools, and custom tools fit together.","md",{},"[object Object]","\u002Fdocs\u002Freference\u002Fintegration-tools",{"title":608,"description":602},"Gondo Integration Tools","docs\u002F4.reference\u002F3.integration-tools","aTuLX1-lYNbCqE3COQ1Lku61VVH_WFxkYNMKtXOivQg",[612],{"title":36,"path":613,"stem":614,"children":615},"\u002Fdocs","docs",[616,620,625,646,661,677],{"title":617,"path":613,"stem":618,"description":619},"Gondo Docs","docs\u002Findex","Learn the basic ideas behind Gondo, from integrations and workflows to runs, approvals, and workflow YAML.",{"title":621,"path":622,"stem":623,"description":624},"Getting Started","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started","Connect an integration, ask Gondo for help, build a workflow, and watch it run.",{"title":626,"path":627,"stem":628,"children":629,"page":645},"Concepts","\u002Fdocs\u002Fconcepts","docs\u002F2.concepts",[630,635,640],{"title":631,"path":632,"stem":633,"description":634},"Integrations","\u002Fdocs\u002Fconcepts\u002Fintegrations","docs\u002F2.concepts\u002F1.integrations","Integrations are the connected apps, accounts, websites, and systems Gondo can use.",{"title":636,"path":637,"stem":638,"description":639},"Workflows","\u002Fdocs\u002Fconcepts\u002Fworkflows","docs\u002F2.concepts\u002F2.workflows","Workflows are repeatable processes made from triggers, AI tasks, code, human review, and edges.",{"title":641,"path":642,"stem":643,"description":644},"Runs and Activity","\u002Fdocs\u002Fconcepts\u002Fruns-and-activity","docs\u002F2.concepts\u002F3.runs-and-activity","Learn what happens when a workflow runs and how to read statuses, approvals, failures, and reauth pauses.",false,{"title":647,"path":648,"stem":649,"children":650,"page":645},"Guides","\u002Fdocs\u002Fguides","docs\u002F3.guides",[651,656],{"title":652,"path":653,"stem":654,"description":655},"Connect an Integration","\u002Fdocs\u002Fguides\u002Fconnect-an-integration","docs\u002F3.guides\u002F1.connect-an-integration","Add a connected app or system so Gondo can use it in chats and workflows.",{"title":657,"path":658,"stem":659,"description":660},"Build Your First Workflow","\u002Fdocs\u002Fguides\u002Fbuild-your-first-workflow","docs\u002F3.guides\u002F2.build-your-first-workflow","A practical walkthrough for turning a plain-English process into a small Gondo workflow.",{"title":662,"path":663,"stem":664,"children":665,"page":645},"Reference","\u002Fdocs\u002Freference","docs\u002F4.reference",[666,671,676],{"title":667,"path":668,"stem":669,"description":670},"Workflow YAML","\u002Fdocs\u002Freference\u002Fworkflow-yaml","docs\u002F4.reference\u002F1.workflow-yaml","The technical shape of Gondo workflow definitions, including version, run display, variables, nodes, edges, and schema rules.",{"title":672,"path":673,"stem":674,"description":675},"Node Types","\u002Fdocs\u002Freference\u002Fnode-types","docs\u002F4.reference\u002F2.node-types","Reference for trigger, task, code, and human nodes, including configs and runtime context.",{"title":5,"path":606,"stem":609,"description":602},{"title":678,"path":679,"stem":680,"description":681},"Troubleshooting","\u002Fdocs\u002Ftroubleshooting","docs\u002F5.troubleshooting","Fix common problems with integrations, workflow runs, human input, browser sessions, and YAML.",[683,684],{"title":672,"path":673,"stem":674,"children":-1},{"title":678,"path":679,"stem":680,"children":-1},1782191065461]