Let the AI in an LLM node call actions on your connected apps — a mini agent inside your workflow
The LLM node can do more than read and write text. Bind one or more connected apps — Gmail, Jira, Slack, and 2,700+ more — to the node, and the AI can use those apps while the step runs: look up an email thread, create a Jira ticket, post a Slack update, then write its answer.Think of it as a mini agent inside your workflow. You decide which apps and which actions it may touch; the model decides when to call them and with what inputs.
The Integrations section in the LLM config panel, right after Built-in Skills. The summary row shows what's bound; Configure opens the panel.
Every action you enable becomes a tool the model may decide to call — the same way actors in a Chat & Voice Agent use capabilities. During a single LLM step the model can call several tools, in any order, as many times as the task needs, before producing its final response.Each action call runs on the connection you bound — the model acts as that account.
"Read the thread, decide, then reply and file a ticket if needed”
If you know exactly which action to run and what to pass it, use Integration Action — it’s predictable and easier to debug. Reach for LLM integrations when the step needs judgment: choosing between actions, chaining several, or extracting the inputs from messy text.
Repeating the same calls over many records — one message per row, one contact per signup? Bind the apps to an Execute Code node instead. Your code runs the calls back to back, with no model turn — and no model cost — per call.
In the LLM node’s config panel, expand Integrations (right after Built-in Skills). The badge shows how many apps are already connected. Click Configure on the summary row to open the integrations panel.
2
Add an app
Click Add Integration and browse or search the catalog. Pick the app the step needs. Added apps appear as cards showing the app, its provider, how many actions are enabled, and the connection’s health.
The integrations panel. Each card shows the enabled action count, connection health, and whether the model has guidance on when to use the app.
3
Choose a connection
Pick one of your existing connections or click Connect to authorize a new account. Connections are shared workspace-wide — see Integrations for how to manage them.
4
Pick which actions to enable
Tick only the actions this step actually needs. Use All / None to bulk-toggle. You need at least one enabled action to save.
5
Add "When to use?" notes
For each enabled action, click When to use? and write a short note telling the model when it should run that action. The model reads these notes every time it decides what to do next — they are the single biggest lever for reliable behaviour.
Configuring Gmail: pick the connection, tick the actions, and add a "When to use?" note to guide the model.
6
Save
Click Save and then save the node. Enabled actions are now available to the model on every run of this step.
Enable only what the step needs. The model decides on its own when to call an enabled action, and every call runs for real on the connected account. If you enable “all of Gmail”, a prompt that mentions deleting can end with deleted emails. Narrow scope is the safety mechanism.
When no action covers what the step needs, set Custom API calls in the app’s panel to Read only or Read and write. The model can then call any part of the app’s API with the same connection. It is Off by default; see Custom actions for what each setting allows.
At run time, an integration whose connection is missing or disabled is skipped — the node still runs, and the skipped apps are reported in the node’s skippedIntegrations output.
An enabled action is an ability, not a command. The card badges tell you whether the model has guidance:
Usage notes — at least one enabled action has a “When to use?” note. Recommended.
On user request only — no notes yet; the model will only reach for the app when the prompt explicitly asks for it. Mention the app in your prompt or add notes.
You can combine both: describe the overall task in the node’s prompt, and put per-action rules (“never email anyone except the customer on the ticket”) in the notes.
The LLM node itself is free to run. The final cost depends on how many times the model invokes each enabled built-in skill or integration action — each call is billed individually. A step that decides not to call any tools costs nothing extra.
The node this feature lives on — instructions, models, outputs.
Integration Action
Run a single, fixed app action deterministically.
Integrations
Connect accounts and manage connections workspace-wide.
Actor capabilities
The same concept for Chat & Voice Agent actors.
Execute Code integrations
Call the same apps from Python, in loops and batches.
⌘I
{"docsConfig":{"theme":"almond","$schema":"https://mintlify.com/docs.json","name":"CogniAgent","colors":{"primary":"#3B82F6","light":"#60A5FA","dark":"#2563EB"},"logo":{"light":"https://mintcdn.com/glorium/83AIEkulJmAPEINE/cognilogo.png?fit=max\u0026auto=format\u0026n=83AIEkulJmAPEINE\u0026q=85\u0026s=2690dbbf93ec4db5af76ee7989c50869","dark":"https://mintcdn.com/glorium/83AIEkulJmAPEINE/cognilogo.png?fit=max\u0026auto=format\u0026n=83AIEkulJmAPEINE\u0026q=85\u0026s=2690dbbf93ec4db5af76ee7989c50869","href":"/"},"favicon":"https://mintcdn.com/glorium/vnEO0b28ni3gNN2L/favicon.svg?fit=max\u0026auto=format\u0026n=vnEO0b28ni3gNN2L\u0026q=85\u0026s=dfb759b88314aa4adbaad562a76947ec","navbar":{"links":[{"href":"https://cogniagent.ai","label":"Home"}],"primary":{"type":"button","label":"Get Started","href":"https://cogniagent.ai"}},"search":{"prompt":"Search documentation..."},"seo":{"metatags":{"og:site_name":"CogniAgent Documentation","og:type":"website","og:image":"/cognilogo.png","twitter:card":"summary_large_image","twitter:image":"/cognilogo.png","robots":"index, follow"},"indexing":"navigable"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"glorium","hasAudioNarration":false,"actualSubdomain":"glorium","customDomains":["docs.cogniagent.ai"],"gitSource":{"type":"github","owner":"vstepanovglorium","repo":"cognidocs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ad690650b82a51e43e05030","collectionId":"a5cb305b-0d7b-49ab-a38a-29a995f1bb24","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ad690650b82a51e43e05030"},"entitlements":{},"buildId":"6ad690650b82a51e43e05030","clientVersion":"0.0.3964","searchFilterCounts":[{"language":"default","tag":"Cowork","count":58},{"language":"default","tag":"Workflow Nodes","count":33},{"language":"default","tag":"Chat \u0026 Voice Agents","count":26},{"language":"default","tag":"What a coworker can do","count":15},{"language":"default","tag":"Actions","count":15},{"language":"default","tag":"Workflows","count":14},{"language":"default","tag":"Advanced","count":14},{"language":"default","tag":"Basic","count":13},{"language":"default","tag":"Files","count":12},{"language":"default","tag":"Documentation","count":11}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"nodes/actions/llm-integrations","slug":"/nodes/actions/llm-integrations","pageMetadata":{"title":"LLM Integrations","description":"Let the AI in an LLM node call actions on your connected apps — a mini agent inside your workflow","href":"/nodes/actions/llm-integrations"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Let the AI in an LLM node call actions on your connected apps — a mini agent inside your workflow\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Card,CardGroup,Frame,Heading,Mermaid,OptimizedImage,Step,Steps,Table,Tip,Warning}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Mermaid)_missingMdxReference(`Mermaid`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`The `,_jsx(_components.a,{href:`/nodes/actions/llm`,children:`LLM`}),` node can do more than read and write text. Bind one or more connected apps — Gmail, Jira, Slack, and 2,700+ more — to the node, and the AI can `,_jsx(_components.em,{children:`use`}),` those apps while the step runs: look up an email thread, create a Jira ticket, post a Slack update, then write its answer.`]}),`\n`,_jsx(_components.p,{children:`Think of it as a mini agent inside your workflow. You decide which apps and which actions it may touch; the model decides when to call them and with what inputs.`}),`\n`,_jsx(Frame,{caption:`The Integrations section in the LLM config panel, right after Built-in Skills. The summary row shows what's bound; Configure opens the panel.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/glorium/nwB3nYBXvPP1kVq6/images/nodes/node-llm-integrations-section.png?fit=max\u0026auto=format\u0026n=nwB3nYBXvPP1kVq6\u0026q=85\u0026s=5e5105896ea07e89713807f3eb3740d8`,alt:`LLM node config panel with the Integrations section expanded`,\"data-og-width\":`1440`,width:`1440`,\"data-og-height\":`538`,height:`538`,\"data-path\":`images/nodes/node-llm-integrations-section.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/glorium/nwB3nYBXvPP1kVq6/images/nodes/node-llm-integrations-section.png?w=280\u0026fit=max\u0026auto=format\u0026n=nwB3nYBXvPP1kVq6\u0026q=85\u0026s=46e1dbf1038f85d4c7052e2442de6e09 280w, https://mintcdn.com/glorium/nwB3nYBXvPP1kVq6/images/nodes/node-llm-integrations-section.png?w=560\u0026fit=max\u0026auto=format\u0026n=nwB3nYBXvPP1kVq6\u0026q=85\u0026s=ad435b6f04f5bb82c91700afd51b38e7 560w, https://mintcdn.com/glorium/nwB3nYBXvPP1kVq6/images/nodes/node-llm-integrations-section.png?w=840\u0026fit=max\u0026auto=format\u0026n=nwB3nYBXvPP1kVq6\u0026q=85\u0026s=aab8c5ebc7cb2fe070549497448f66bc 840w, https://mintcdn.com/glorium/nwB3nYBXvPP1kVq6/images/nodes/node-llm-integrations-section.png?w=1100\u0026fit=max\u0026auto=format\u0026n=nwB3nYBXvPP1kVq6\u0026q=85\u0026s=da26af9517e2bbc502e99b82ae7acd6b 1100w, https://mintcdn.com/glorium/nwB3nYBXvPP1kVq6/images/nodes/node-llm-integrations-section.png?w=1650\u0026fit=max\u0026auto=format\u0026n=nwB3nYBXvPP1kVq6\u0026q=85\u0026s=1fff7d25715ca69eeb3c0b79f5e1168c 1650w, https://mintcdn.com/glorium/nwB3nYBXvPP1kVq6/images/nodes/node-llm-integrations-section.png?w=2500\u0026fit=max\u0026auto=format\u0026n=nwB3nYBXvPP1kVq6\u0026q=85\u0026s=0b18e107cd298fde6a0ae1a0872bc97c 2500w`})}),`\n`,_jsx(Heading,{level:`2`,id:`how-it-works`,children:`How it works`}),`\n`,_jsxs(_components.p,{children:[`Every action you enable becomes a `,_jsx(_components.strong,{children:`tool`}),` the model may decide to call — the same way `,_jsx(_components.a,{href:`/conversation-flows/build/capabilities`,children:`actors in a Chat \u0026 Voice Agent use capabilities`}),`. During a single LLM step the model can call several tools, in any order, as many times as the task needs, before producing its final response.`]}),`\n`,_jsx(Mermaid,{chart:`flowchart LR\n A[Prompt] --> B{Model reasons}\n B -->|calls tool| C[Find Email]\n C --> B\n B -->|calls tool| D[Send Email]\n D --> B\n B --> E[Final response]`}),`\n`,_jsxs(_components.p,{children:[`Each action call runs on the `,_jsx(_components.strong,{children:`connection you bound`}),` — the model acts as that account.`]}),`\n`,_jsx(Heading,{level:`2`,id:`llm-integrations-vs-integration-action`,children:`LLM Integrations vs Integration Action`}),`\n`,_jsx(_components.p,{children:`Both can send an email. The difference is who decides.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{}),_jsx(_components.th,{children:_jsx(_components.a,{href:`/nodes/actions/integration-action`,children:`Integration Action`})}),_jsx(_components.th,{children:`LLM with integrations`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`What runs`})}),_jsx(_components.td,{children:`One action you picked, once`}),_jsx(_components.td,{children:`Any enabled action, model-decided`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Inputs`})}),_jsx(_components.td,{children:`You map every parameter`}),_jsx(_components.td,{children:`The model fills them from context`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Behaviour`})}),_jsx(_components.td,{children:`Deterministic, same every run`}),_jsx(_components.td,{children:`Judgment-based, adapts to the data`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Best for`})}),_jsx(_components.td,{children:`”Always send this email\"`}),_jsx(_components.td,{children:`\"Read the thread, decide, then reply and file a ticket if needed”`})]})]})]}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`If you know exactly which action to run and what to pass it, use Integration Action — it’s predictable and easier to debug. Reach for LLM integrations when the step needs judgment: choosing between actions, chaining several, or extracting the inputs from messy text.`})}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Repeating the same calls over many records — one message per row, one contact per signup? Bind the apps to an `,_jsx(_components.a,{href:`/nodes/actions/execute-code-integrations`,children:`Execute Code`}),` node instead. Your code runs the calls back to back, with no model turn — and no model cost — per call.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`set-up-integrations`,children:`Set up integrations`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open the Integrations section`,children:_jsxs(_components.p,{children:[`In the LLM node’s config panel, expand `,_jsx(_components.strong,{children:`Integrations`}),` (right after `,_jsx(_components.strong,{children:`Built-in Skills`}),`). The badge shows how many apps are already connected. Click `,_jsx(_components.strong,{children:`Configure`}),` on the summary row to open the integrations panel.`]})}),_jsxs(Step,{title:`Add an app`,children:[_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Add Integration`}),` and browse or search the catalog. Pick the app the step needs. Added apps appear as cards showing the app, its provider, how many actions are enabled, and the connection’s health.`]}),_jsx(Frame,{caption:`The integrations panel. Each card shows the enabled action count, connection health, and whether the model has guidance on when to use the app.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/glorium/nwB3nYBXvPP1kVq6/images/nodes/node-llm-integrations-panel.png?fit=max\u0026auto=format\u0026n=nwB3nYBXvPP1kVq6\u0026q=85\u0026s=7ed642139114d659cd2b04ab65484e35`,alt:`Integrations panel with Gmail and Jira bound to the node`,\"data-og-width\":`1312`,width:`1312`,\"data-og-height\":`810`,height:`810`,\"data-path\":`images/nodes/node-llm-integrations-panel.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/glorium/nwB3nYBXvPP1kVq6/images/nodes/node-llm-integrations-panel.png?w=280\u0026fit=max\u0026auto=format\u0026n=nwB3nYBXvPP1kVq6\u0026q=85\u0026s=50dba24ba94e5c22576c0d86cb1491b5 280w, https://mintcdn.com/glorium/nwB3nYBXvPP1kVq6/images/nodes/node-llm-integrations-panel.png?w=560\u0026fit=max\u0026auto=format\u0026n=nwB3nYBXvPP1kVq6\u0026q=85\u0026s=f21cd907e174b6cac81cd1a5debdf3a0 560w, https://mintcdn.com/glorium/nwB3nYBXvPP1kVq6/images/nodes/node-llm-integrations-panel.png?w=840\u0026fit=max\u0026auto=format\u0026n=nwB3nYBXvPP1kVq6\u0026q=85\u0026s=a8ff3af445c94101a1c51fa0810eac2e 840w, https://mintcdn.com/glorium/nwB3nYBXvPP1kVq6/images/nodes/node-llm-integrations-panel.png?w=1100\u0026fit=max\u0026auto=format\u0026n=nwB3nYBXvPP1kVq6\u0026q=85\u0026s=b1881cb39a6cd331eb1a6ad7caa76ea1 1100w, https://mintcdn.com/glorium/nwB3nYBXvPP1kVq6/images/nodes/node-llm-integrations-panel.png?w=1650\u0026fit=max\u0026auto=format\u0026n=nwB3nYBXvPP1kVq6\u0026q=85\u0026s=f57d47ff39fd0658703726ebfc5e9484 1650w, https://mintcdn.com/glorium/nwB3nYBXvPP1kVq6/images/nodes/node-llm-integrations-panel.png?w=2500\u0026fit=max\u0026auto=format\u0026n=nwB3nYBXvPP1kVq6\u0026q=85\u0026s=bd35ba8225096268771507652edfd99f 2500w`})})]}),_jsx(Step,{title:`Choose a connection`,children:_jsxs(_components.p,{children:[`Pick one of your existing connections or click `,_jsx(_components.strong,{children:`Connect`}),` to authorize a new account. Connections are shared workspace-wide — see `,_jsx(_components.a,{href:`/features/integrations`,children:`Integrations`}),` for how to manage them.`]})}),_jsx(Step,{title:`Pick which actions to enable`,children:_jsxs(_components.p,{children:[`Tick only the actions this step actually needs. Use `,_jsx(_components.strong,{children:`All`}),` / `,_jsx(_components.strong,{children:`None`}),` to bulk-toggle. You need at least one enabled action to save.`]})}),_jsxs(Step,{title:`Add \"When to use?\" notes`,children:[_jsxs(_components.p,{children:[`For each enabled action, click `,_jsx(_components.strong,{children:`When to use?`}),` and write a short note telling the model when it should run that action. The model reads these notes every time it decides what to do next — they are the single biggest lever for reliable behaviour.`]}),_jsx(Frame,{caption:`Configuring Gmail: pick the connection, tick the actions, and add a \"When to use?\" note to guide the model.`,children:_jsx(OptimizedImage,{src:`https://mintcdn.com/glorium/nwB3nYBXvPP1kVq6/images/nodes/node-llm-integrations-configure.png?fit=max\u0026auto=format\u0026n=nwB3nYBXvPP1kVq6\u0026q=85\u0026s=c2b7fed98199d0b08d92eac9353a495b`,alt:`Gmail action selection with a When to use note expanded`,\"data-og-width\":`1312`,width:`1312`,\"data-og-height\":`1388`,height:`1388`,\"data-path\":`images/nodes/node-llm-integrations-configure.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/glorium/nwB3nYBXvPP1kVq6/images/nodes/node-llm-integrations-configure.png?w=280\u0026fit=max\u0026auto=format\u0026n=nwB3nYBXvPP1kVq6\u0026q=85\u0026s=c05d0194ae521e6a8700ef4e9671827d 280w, https://mintcdn.com/glorium/nwB3nYBXvPP1kVq6/images/nodes/node-llm-integrations-configure.png?w=560\u0026fit=max\u0026auto=format\u0026n=nwB3nYBXvPP1kVq6\u0026q=85\u0026s=b8961fb8ecee337550514cb7ade73db2 560w, https://mintcdn.com/glorium/nwB3nYBXvPP1kVq6/images/nodes/node-llm-integrations-configure.png?w=840\u0026fit=max\u0026auto=format\u0026n=nwB3nYBXvPP1kVq6\u0026q=85\u0026s=e6be89fb14fd116d0a38883a42ce0a88 840w, https://mintcdn.com/glorium/nwB3nYBXvPP1kVq6/images/nodes/node-llm-integrations-configure.png?w=1100\u0026fit=max\u0026auto=format\u0026n=nwB3nYBXvPP1kVq6\u0026q=85\u0026s=55b8eeea2f2867b60f7e6acc04ca091a 1100w, https://mintcdn.com/glorium/nwB3nYBXvPP1kVq6/images/nodes/node-llm-integrations-configure.png?w=1650\u0026fit=max\u0026auto=format\u0026n=nwB3nYBXvPP1kVq6\u0026q=85\u0026s=321c971e18ab7e63236eaeb4889c435d 1650w, https://mintcdn.com/glorium/nwB3nYBXvPP1kVq6/images/nodes/node-llm-integrations-configure.png?w=2500\u0026fit=max\u0026auto=format\u0026n=nwB3nYBXvPP1kVq6\u0026q=85\u0026s=503971ebb2ad96066f828850719193e8 2500w`})})]}),_jsx(Step,{title:`Save`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Save`}),` and then save the node. Enabled actions are now available to the model on every run of this step.`]})})]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Enable only what the step needs.`}),` The model decides on its own when to call an enabled action, and every call runs for real on the connected account. If you enable “all of Gmail”, a prompt that mentions deleting can end with deleted emails. Narrow scope is the safety mechanism.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`custom-api-calls`,children:`Custom API calls`}),`\n`,_jsxs(_components.p,{children:[`When no action covers what the step needs, set `,_jsx(_components.strong,{children:`Custom API calls`}),` in the app’s panel to `,_jsx(_components.strong,{children:`Read only`}),` or `,_jsx(_components.strong,{children:`Read and write`}),`. The model can then call any part of the app’s API with the same connection. It is `,_jsx(_components.strong,{children:`Off`}),` by default; see `,_jsx(_components.a,{href:`/nodes/actions/custom-actions#use-it-from-ai-steps-and-agents`,children:`Custom actions`}),` for what each setting allows.`]}),`\n`,_jsx(Heading,{level:`2`,id:`connection-health`,children:`Connection health`}),`\n`,_jsx(_components.p,{children:`Each integration card shows the state of its connection so a broken binding never fails silently:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Badge`}),_jsx(_components.th,{children:`Meaning`}),_jsx(_components.th,{children:`Fix`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Connected`})}),_jsx(_components.td,{children:`The bound connection exists and is active`}),_jsx(_components.td,{children:`Nothing to do`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`No connection`})}),_jsx(_components.td,{children:`An app was added without picking a connection`}),_jsx(_components.td,{children:`Open the app and choose or create a connection`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Connection removed`})}),_jsxs(_components.td,{children:[`The connection was deleted in `,_jsx(_components.a,{href:`/features/integrations`,children:`Integrations`})]}),_jsx(_components.td,{children:`Open the app and bind a different connection`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Connection disabled`})}),_jsx(_components.td,{children:`The connection exists but is turned off`}),_jsx(_components.td,{children:`Re-enable it on the Integrations page`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`At run time, an integration whose connection is missing or disabled is skipped — the node still runs, and the skipped apps are reported in the node’s `,_jsx(_components.code,{children:`skippedIntegrations`}),` output.`]}),`\n`,_jsx(Heading,{level:`2`,id:`guiding-the-model`,children:`Guiding the model`}),`\n`,_jsx(_components.p,{children:`An enabled action is an ability, not a command. The card badges tell you whether the model has guidance:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Usage notes`}),` — at least one enabled action has a “When to use?” note. Recommended.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`On user request only`}),` — no notes yet; the model will only reach for the app when the prompt explicitly asks for it. Mention the app in your prompt or add notes.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`You can combine both: describe the overall task in the node’s prompt, and put per-action rules (“never email anyone except the customer on the ticket”) in the notes.`}),`\n`,_jsx(Heading,{level:`2`,id:`cost`,children:`Cost`}),`\n`,_jsx(_components.p,{children:`The LLM node itself is free to run. The final cost depends on how many times the model invokes each enabled built-in skill or integration action — each call is billed individually. A step that decides not to call any tools costs nothing extra.`}),`\n`,_jsx(Heading,{level:`2`,id:`related`,children:`Related`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`LLM`,icon:`brain`,href:`/nodes/actions/llm`,children:_jsx(_components.p,{children:`The node this feature lives on — instructions, models, outputs.`})}),_jsx(Card,{title:`Integration Action`,icon:`plug`,href:`/nodes/actions/integration-action`,children:_jsx(_components.p,{children:`Run a single, fixed app action deterministically.`})}),_jsx(Card,{title:`Integrations`,icon:`link`,href:`/features/integrations`,children:_jsx(_components.p,{children:`Connect accounts and manage connections workspace-wide.`})}),_jsx(Card,{title:`Actor capabilities`,icon:`wand-magic-sparkles`,href:`/conversation-flows/build/capabilities`,children:_jsx(_components.p,{children:`The same concept for Chat \u0026 Voice Agent actors.`})}),_jsx(Card,{title:`Execute Code integrations`,icon:`code`,href:`/nodes/actions/execute-code-integrations`,children:_jsx(_components.p,{children:`Call the same apps from Python, in loops and batches.`})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"LLM Integrations","description":"Let the AI in an LLM node call actions on your connected apps — a mini agent inside your workflow","href":"/nodes/actions/llm-integrations"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"How it works","slug":"how-it-works","depth":2,"children":[]},{"title":"LLM Integrations vs Integration Action","slug":"llm-integrations-vs-integration-action","depth":2,"children":[]},{"title":"Set up integrations","slug":"set-up-integrations","depth":2,"children":[]},{"title":"Custom API calls","slug":"custom-api-calls","depth":2,"children":[]},{"title":"Connection health","slug":"connection-health","depth":2,"children":[]},{"title":"Guiding the model","slug":"guiding-the-model","depth":2,"children":[]},{"title":"Cost","slug":"cost","depth":2,"children":[]},{"title":"Related","slug":"related","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"glorium","siteName":"CogniAgent","title":"LLM Integrations - CogniAgent","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-19T21:50:11.610Z","originalFileLocation":"nodes/actions/llm-integrations.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Let the AI in an LLM node call actions on your connected apps — a mini agent inside your workflow\">\u003cmeta data-mint-head name=\"application-name\" content=\"CogniAgent\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003cmeta data-mint-head name=\"robots\" content=\"index, follow\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/glorium/FOsGdhnnm_z1t3sG/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/glorium/FOsGdhnnm_z1t3sG/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/glorium/FOsGdhnnm_z1t3sG/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/glorium/FOsGdhnnm_z1t3sG/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/glorium/FOsGdhnnm_z1t3sG/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/glorium/FOsGdhnnm_z1t3sG/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/glorium/FOsGdhnnm_z1t3sG/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/glorium/FOsGdhnnm_z1t3sG/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/glorium/FOsGdhnnm_z1t3sG/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"LLM Integrations - CogniAgent\">\u003cmeta data-mint-head property=\"og:description\" content=\"Let the AI in an LLM node call actions on your connected apps — a mini agent inside your workflow\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"CogniAgent Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.cogniagent.ai/nodes/actions/llm-integrations\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://glorium.mintlify.app/cognilogo.png\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"LLM Integrations - CogniAgent\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Let the AI in an LLM node call actions on your connected apps — a mini agent inside your workflow\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://glorium.mintlify.app/cognilogo.png\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/glorium/FOsGdhnnm_z1t3sG/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"CogniAgent\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#3B82F6\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.cogniagent.ai/nodes/actions/llm-integrations\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/nodes/actions/llm-integrations.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.cogniagent.ai/#organization\",\"name\":\"CogniAgent\",\"url\":\"https://docs.cogniagent.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/glorium/83AIEkulJmAPEINE/cognilogo.png?fit=max\u0026auto=format\u0026n=83AIEkulJmAPEINE\u0026q=85\u0026s=2690dbbf93ec4db5af76ee7989c50869\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.cogniagent.ai#website\",\"name\":\"CogniAgent\",\"url\":\"https://docs.cogniagent.ai\",\"publisher\":{\"@id\":\"https://docs.cogniagent.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.cogniagent.ai/nodes/actions/llm-integrations#webpage\",\"url\":\"https://docs.cogniagent.ai/nodes/actions/llm-integrations\",\"name\":\"LLM Integrations\",\"description\":\"Let the AI in an LLM node call actions on your connected apps — a mini agent inside your workflow\",\"dateModified\":\"2026-10-19T21:50:11.610Z\",\"isPartOf\":{\"@id\":\"https://docs.cogniagent.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.cogniagent.ai/nodes/actions/llm-integrations#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.cogniagent.ai/nodes/actions/llm-integrations#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Actions\",\"item\":\"https://docs.cogniagent.ai/nodes/actions/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Basic\",\"item\":\"https://docs.cogniagent.ai/nodes/actions/integration-action\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"LLM Integrations\",\"item\":\"https://docs.cogniagent.ai/nodes/actions/llm-integrations\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.cogniagent.ai/nodes/actions/llm-integrations#article\",\"headline\":\"LLM Integrations\",\"name\":\"LLM Integrations\",\"description\":\"Let the AI in an LLM node call actions on your connected apps — a mini agent inside your workflow\",\"url\":\"https://docs.cogniagent.ai/nodes/actions/llm-integrations\",\"mainEntityOfPage\":{\"@id\":\"https://docs.cogniagent.ai/nodes/actions/llm-integrations#webpage\"},\"image\":\"https://docs.cogniagent.ai/cognilogo.png\",\"dateModified\":\"2026-10-19T21:50:11.610Z\",\"publisher\":{\"@id\":\"https://docs.cogniagent.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.cogniagent.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"CogniAgent\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"CogniAgent","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/introduction"}]},{"tab":"Cowork","pages":[{"title":"Cowork","href":"/cowork/overview"}]},{"tab":"Chat \u0026 Voice Agents","pages":[{"title":"Chat \u0026 Voice Agents","href":"/conversation-flows/overview"}]},{"tab":"Workflows","pages":[{"title":"Workflows","href":"/applications/create-application"}]},{"tab":"Workflow Nodes","groups":[{"group":"Overview","pages":[{"title":"Workflow Nodes Overview","href":"/nodes/overview"}]},{"group":"Triggers","pages":[{"title":"Trigger Nodes","href":"/nodes/triggers/overview"},{"group":"Basic","pages":[{"title":"Start Node","href":"/nodes/triggers/start"},{"title":"App Trigger Node","href":"/nodes/triggers/app-trigger"},{"title":"File Added to Folder Trigger","href":"/nodes/triggers/file-added-to-folder"},{"title":"AI Trigger Node","href":"/nodes/triggers/ai-lookout"},{"title":"Scheduled Trigger Node","href":"/nodes/triggers/scheduled-trigger"}]},{"group":"Advanced","pages":[{"title":"On Variable Update Node","href":"/nodes/triggers/on-variable-update"},{"title":"Webhook Node","href":"/nodes/triggers/webhook"},{"title":"Portal Trigger","href":"/nodes/triggers/portal"}]}]},{"group":"Actions","pages":[{"title":"Action Nodes","href":"/nodes/actions/overview"},{"group":"Basic","pages":[{"title":"Integration Action Node","href":"/nodes/actions/integration-action"},{"title":"Custom actions","href":"/nodes/actions/custom-actions"},{"title":"LLM Node","description":"Call a Large Language Model to write, summarize, analyze, categorize, or answer questions","href":"/nodes/actions/llm"},{"title":"LLM Integrations","href":"/nodes/actions/llm-integrations"},{"title":"Read File Node","description":"Read text from PDFs, Word documents, images, and other files","href":"/nodes/actions/read-file"},{"title":"Workspace Files Node","href":"/nodes/actions/workspace-files"}]},{"group":"Advanced","pages":[{"title":"Execute Workflow Node","href":"/nodes/actions/execute-workflow"},{"title":"Update Variable Node","href":"/nodes/actions/update-variable"},{"title":"Execute Code Node","href":"/nodes/actions/execute-code"},{"title":"Execute Code Integrations","href":"/nodes/actions/execute-code-integrations"},{"title":"Execute Code Scenarios","href":"/nodes/actions/execute-code-scenarios"},{"title":"HTTP Request Node","href":"/nodes/actions/http-request"},{"title":"Resolve Value Node","href":"/nodes/actions/resolve-value"},{"title":"Search Knowledge Node","href":"/nodes/actions/search-knowledge"}]}]},{"group":"Logic","pages":[{"title":"Logic Nodes","href":"/nodes/logic/overview"},{"group":"Basic","pages":[{"title":"If / else","href":"/nodes/logic/condition"},{"title":"Pause Node","href":"/nodes/logic/pause"}]},{"group":"Advanced","pages":[{"title":"Switch","href":"/nodes/logic/multi-condition"},{"title":"Wait and Combine Node","href":"/nodes/logic/wait-and-combine"},{"title":"Loop Node","href":"/nodes/logic/loop"}]}]},{"group":"Communication","pages":[{"title":"Human Step","href":"/nodes/communication/human-step"},{"title":"Chat \u0026 Voice Agent","href":"/nodes/communication/conversation-flow"}]}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/guides/overview"}]}]},"title":"LLM Integrations - CogniAgent","buildId":"dpl_HcHmUS6i3UwswnTHJUEdcTtwfdTQ","deploymentId":"dpl_HcHmUS6i3UwswnTHJUEdcTtwfdTQ","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-D1UCVuPB.js","DynamicMarkdown-Crwq6WG_.js","zoom-image-lightbox-CFBqa0On.js","lightbox-handle-r17bVUz3.js"]}