Workflow JSON
{"nodes":[{"id":"1400205f-0ee6-43c1-998b-8bccd3045929","type":"script","label":"Search AI Patterns","_libRef":{"integrity":"v3:1d0764ad1db0a4212e3dfb788dbcb3b1","buildHash":"251377b274ad051ad51d0f588e2a9159073247bcebee21aa6da7fcac9c15602d","libType":"public","libNodeRefId":"@buildship/keyless-perplexity-chat","isDirty":false,"src":"https://storage.googleapis.com/buildship-app-us-central1/publicLib/nodesV2/@buildship/keyless-perplexity-chat/5.0.9/build.cjs","version":"5.0.9"},"_groupInfo":{"longDescription":"Integrate Perplexity AI's advanced language model with BuildShip to enhance your AI-driven workflows. Utilize predefined nodes to perform rapid and efficient natural language processing tasks, enabling capabilities such as text generation, summarization, and contextual analysis effortlessly within your applications.","iconUrl":"https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/buildship-app-logos%2Fperplexity.png?alt=media&token=c2b4b546-a17f-4866-8635-73377b79bca4","name":"Perplexity AI","id":"perplexity","description":"Nodes to leverage Perplexity AI's blazingly fast LLM inference.","acceptsKey":true,"category":"AI Models","keyDescription":"Perplexity AI API Key. Generate an API key through the [Perplexity Account Settings Page](https://www.perplexity.ai/settings).","uid":"perplexity"},"buildshipKey":true},{"id":"d3cbabc0-c43d-4970-bab9-dac0b0666707","buildshipKey":true,"type":"script","_libRef":{"integrity":"v3:8828d1191bb774f5b58c3aa931f8df88","buildHash":"9ec77913ba82aec09724b2e021103a489c34508503668b962c2423e15931fb5a","version":"5.0.18","src":"https://storage.googleapis.com/buildship-app-us-central1/publicLib/nodesV2/@buildship/keyless-claude-text-generator/5.0.18/build.cjs","libType":"public","isDirty":false,"libNodeRefId":"@buildship/keyless-claude-text-generator"},"_groupInfo":{"longDescription":"Nodes for interacting with Anthropic's Claude AI Models enable easy integration with AI functionalities such as text generation, natural language understanding, and conversational agents. Leverage the advanced capabilities of Claude to build intelligent applications, automate tasks, and enhance user interactions with minimal configuration effort.","keyDescription":"Your Anthropic [Claude API](https://console.anthropic.com/settings/keys) key for authentication","uid":"anthropic","id":"anthropic","name":"Anthropic","description":"Nodes for interacting with and using Anthropic's Claude AI Models.","acceptsKey":true,"iconUrl":"https://firebasestorage.googleapis.com/v0/b/website-a1s39m.appspot.com/o/buildship-app-logos%2Fanthropic.png?alt=media&token=ec0eb8dc-f0d4-4f97-a144-023f1aa8118e","category":"AI Models"},"label":"Humanize Content"},{"id":"b4f85523-9f3d-4fa6-b5f5-595cbd74a539","label":"Flow Output","type":"output"}],"triggers":[{"_libRef":{"version":"3.0.0","isDirty":false,"integrity":"v3:afcc492c2a5f936362a91c589f3a0532","src":"https://storage.googleapis.com/buildship-library-us-central1/triggers/@buildship/tool-trigger/3.0.0/__verify.cjs","libNodeRefId":"@buildship/tool-trigger","libType":"public"},"setupPreview":"https://raw.githubusercontent.com/rowyio/tools-instructions/refs/heads/main/buildship-app-js/agent-builder.js","script":"import parser from \"co-body\";\n\nconst onExecution = async ({ apiKey, respondEarly }, { nodeReq, request, req, logging }) => {\n const apiKeyHeader = req.header.buildship_api_key;\n const validApiKeys = [apiKey];\n\n // If we have request.params.toolkitId, it means the /executeTool/:workflowId/:triggerId route was executed\n if (request.params?.workflowId) {\n const toolsInToolkit = JSON.parse(process.env.TOOLS_IN_TOOLKIT ?? \"{}\");\n\n const toolkitIds = Object.entries(toolsInToolkit)\n .filter(([toolkitId, tools]) => tools.includes(request.params.workflowId))\n .map(([toolkitId, tools]) => toolkitId);\n \n if (toolkitIds.length === 0) {\n req.throw(400, \"Tool is not part of any toolkit\");\n return;\n }\n\n for (const toolkitId of toolkitIds) {\n const toolkitKeys = JSON.parse(process.env.TOOLKIT_KEYS ?? \"{}\");\n const keysForToolkit = toolkitKeys[toolkitId] ?? [];\n validApiKeys.push(...keysForToolkit);\n }\n }\n\n if (!validApiKeys.includes(apiKeyHeader)) {\n req.throw(401, \"Invalid API key\");\n return;\n }\n\n if (respondEarly === \"yes\") {\n req.status = 200;\n req.body = \"Tool is executing in the background\";\n }\n\n const limit = process.env?.PROJECT_PLAN === \"FREE\" ? \"1MB\" : \"32MB\";\n const body = await parser(nodeReq, { limit });\n const ret = {\n query: request.query,\n headers: request.headers,\n body: body !== null && body !== void 0 ? body : {},\n params: request.params,\n path: request.path,\n };\n return ret;\n};\n\nexport default { onExecution };\n","lifeCycleFunctions":["onExecution"],"config":{"required":["method","path","toolDescription","toolName","apiKey"],"type":"object","sections":{"section_1ac7b8ff_593a_42a6_9f44_7acd46d319c1":{"title":"Advanced Options","type":"section","buildship":{"index":3}}},"properties":{"apiKey":{"type":"string","buildship":{"sensitive":true,"index":2,"defaultExpressionType":"text"},"properties":{},"default":"","title":"API Key"},"toolDescription":{"default":"","properties":{},"type":"string","title":"Tool Description","buildship":{"automaticAutofill":true,"index":1,"defaultExpressionType":"text","sensitive":false}},"respondEarly":{"default":"no","properties":{},"title":"Respond Early (Execute tool in background and don't wait for result)","enum":["yes-","no"],"description":"","buildship":{"defaultExpressionType":"text","options":[{"value":"yes","label":"Yes (Agent will not get response data)"},{"value":"no","label":"No"}],"index":3.2,"sensitive":false},"type":"string"},"toolName":{"properties":{},"type":"string","title":"Tool Name","default":"","buildship":{"sensitive":false,"index":0,"defaultExpressionType":"text","automaticAutofill":true}}},"structure":[{"depth":0,"index":0,"id":"toolName","parentId":null},{"parentId":null,"index":1,"depth":0,"id":"toolDescription"},{"parentId":null,"id":"apiKey","index":2,"depth":0},{"parentId":null,"id":"section_1ac7b8ff_593a_42a6_9f44_7acd46d319c1","children":[{"depth":1,"index":0,"id":"respondEarly","parentId":"section_1ac7b8ff_593a_42a6_9f44_7acd46d319c1"}],"depth":0,"index":3}]},"meta":{"payloadLimit":false,"id":"tool-trigger","hideConnectButton":true,"fileUploadLimit":false,"description":"The Tool Trigger creates an API endpoint that your Agent can use to perform specific tasks. When the Agent detects a request that matches the tool’s function, it automatically triggers the API, sends the necessary inputs, and processes the response.","name":"Tool Trigger","icon":{"svg":"<path d=\"M8.37853 3.96432L10.707 6.29275C10.8945 6.48028 10.9999 6.73464 10.9999 6.99986V9.99986C10.9999 10.5521 10.5521 10.9999 9.99986 10.9999H6.99986C6.73464 10.9999 6.48028 10.8945 6.29275 10.707L3.96432 8.37853C3.89111 8.89104 3.89749 9.41483 3.98608 9.93115C4.16092 10.9502 4.64741 11.89 5.37853 12.6212C6.10966 13.3523 7.04948 13.8388 8.06856 14.0136C9.08764 14.1885 10.1359 14.0431 11.0689 13.5975C11.4513 13.4149 11.9073 13.4931 12.207 13.7927L18.207 19.7927C18.4172 20.003 18.7025 20.1212 18.9999 20.1212C19.2972 20.1212 19.5825 20.003 19.7927 19.7927C20.003 19.5825 20.1212 19.2972 20.1212 18.9999C20.1212 18.7025 20.003 18.4172 19.7927 18.207L13.7927 12.207C13.4931 11.9073 13.4149 11.4513 13.5975 11.0689C14.0431 10.1359 14.1885 9.08764 14.0136 8.06856C13.8388 7.04948 13.3523 6.10966 12.6212 5.37853C11.89 4.64741 10.9502 4.16092 9.93115 3.98608C9.41483 3.89749 8.89104 3.89111 8.37853 3.96432ZM6.06889 2.59749C7.37513 1.97364 8.84264 1.77009 10.2694 2.01488C11.6961 2.25966 13.0118 2.94074 14.0354 3.96432C15.059 4.9879 15.74 6.30364 15.9848 7.73035C16.1888 8.91918 16.0815 10.1363 15.6791 11.2649L21.207 16.7927C21.7923 17.3781 22.1212 18.172 22.1212 18.9999C22.1212 19.8277 21.7923 20.6216 21.207 21.207C20.6216 21.7923 19.8277 22.1212 18.9999 22.1212C18.172 22.1212 17.3781 21.7923 16.7927 21.207L11.2649 15.6791C10.1363 16.0815 8.91918 16.1888 7.73035 15.9848C6.30364 15.74 4.9879 15.059 3.96432 14.0354C2.94074 13.0118 2.25966 11.6961 2.01488 10.2694C1.77009 8.84264 1.97364 7.37513 2.59749 6.06889C2.73739 5.77595 3.01079 5.56915 3.33075 5.51426C3.65071 5.45936 3.97741 5.5632 4.20696 5.79275L7.41407 8.99986H8.99986V7.41407L5.79275 4.20696C5.5632 3.97741 5.45936 3.65071 5.51426 3.33075C5.56915 3.01079 5.77595 2.73739 6.06889 2.59749Z\" fill=\"white\" fill-opacity=\"0.6\"/>","type":"SVG"}},"label":"Tool Trigger","type":"tool-trigger","preSetupPreview":"<div\n style={{\n margin: \"22px\",\n padding: \"24px 42px\",\n marginTop: \"240px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexDirection: \"column\",\n }}\n>\n <div\n style={{\n display: \"flex\",\n padding: \"8px\",\n backgroundColor: props.theme.palette.text[50],\n borderRadius: \"8px\"\n }}\n >\n <SvgIcon color=\"inherit\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M11.5422 4.9999C11.7198 5.3907 12.2749 5.3907 12.4526 4.9999L12.7531 4.33866C12.8032 4.22861 12.8914 4.1404 13.0014 4.09038L13.6627 3.78982C14.0535 3.61218 14.0535 3.05709 13.6627 2.87945L13.0014 2.57889C12.8914 2.52887 12.8032 2.44066 12.7531 2.33061L12.4526 1.66937C12.2749 1.27857 11.7198 1.27857 11.5422 1.66937L11.2417 2.33061C11.1916 2.44066 11.1034 2.52887 10.9934 2.57889L10.3321 2.87945C9.94134 3.05709 9.94133 3.61218 10.3321 3.78982L10.9934 4.09038C11.1034 4.1404 11.1916 4.22861 11.2417 4.33866L11.5422 4.9999ZM12.4526 11.0027C12.2749 10.6119 11.7198 10.6119 11.5422 11.0027L11.2417 11.6639C11.1916 11.774 11.1034 11.8622 10.9934 11.9122L10.3321 12.2128C9.94134 12.3904 9.94133 12.9455 10.3321 13.1232L10.9934 13.4237C11.1034 13.4737 11.1916 13.5619 11.2417 13.672L11.5422 14.3332C11.7198 14.724 12.2749 14.724 12.4526 14.3332L12.7531 13.672C12.8032 13.5619 12.8914 13.4737 13.0014 13.4237L13.6627 13.1232C14.0535 12.9455 14.0535 12.3904 13.6627 12.2128L13.0014 11.9122C12.8914 11.8622 12.8032 11.774 12.7531 11.6639L12.4526 11.0027ZM7.83476 6.41222C7.7247 6.3622 7.6365 6.274 7.58647 6.16394L6.45258 3.66937C6.27494 3.27857 5.71985 3.27857 5.54221 3.66937L4.40832 6.16394C4.35829 6.274 4.27009 6.3622 4.16004 6.41222L1.66547 7.54612C1.27467 7.72375 1.27467 8.27885 1.66547 8.45648L4.16004 9.59038C4.27009 9.6404 4.35829 9.72861 4.40832 9.83866L5.54221 12.3332C5.71985 12.724 6.27494 12.724 6.45258 12.3332L7.58647 9.83866C7.6365 9.72861 7.7247 9.6404 7.83476 9.59038L10.3293 8.45649C10.7201 8.27885 10.7201 7.72375 10.3293 7.54612L7.83476 6.41222ZM6.8283 8.58369C6.71812 8.63373 6.62982 8.72202 6.57979 8.8322L6.45265 9.11215C6.27508 9.50316 5.71971 9.50316 5.54214 9.11215L5.41501 8.8322C5.36497 8.72202 5.27668 8.63373 5.1665 8.58369L4.88654 8.45656C4.49554 8.27899 4.49554 7.72361 4.88654 7.54605L5.1665 7.41891C5.27668 7.36888 5.36497 7.28058 5.41501 7.1704L5.54214 6.89045C5.71971 6.49944 6.27508 6.49944 6.45265 6.89045L6.57979 7.1704C6.62982 7.28058 6.71812 7.36888 6.8283 7.41891L7.10825 7.54605C7.49926 7.72361 7.49926 8.27899 7.10825 8.45656L6.8283 8.58369Z\" fill=\"currentColor\" fill-opacity=\"0.9\"/>\n </svg>\n </SvgIcon>\n </div>\n <br />\n <Typography\n sx={(theme) => ({\n ...theme.typography.body,\n color: props.theme.palette.text[400],\n textAlign: \"center\",\n })}\n >\n Expose your flow to an agent by connecting the Tool Trigger\n </Typography>\n</div>","defaultValues":{"inputs":"{ _$expression_: 'ctx?.[\"root\"]?.[\"' + props.triggerId + '\"]?.[\"' + (props.method === 'GET' ? 'query' : 'body') + '\"].' + props.inputKey }","apiKey":"Array.from(crypto.getRandomValues(new Uint8Array(32))).map((b) => b.toString(16).padStart(2, '0')).join('')","toolName":"props.wfName"},"description":"The Tool Trigger creates an API endpoint that your Agent can use to perform specific tasks. When the Agent detects a request that matches the tool’s function, it automatically triggers the API, sends the necessary inputs, and processes the response.","response":{"properties":{"cacheMaxAge":{"title":"Cache Time","buildship":{"sensitive":false,"index":2},"type":"number","description":"Set cache duration in seconds","default":0,"properties":{}},"body":{"properties":{},"type":"object","buildship":{"defaultExpressionType":"text","sensitive":false,"index":1},"title":"Response Body","default":{"_$keys_":["output"]},"description":"Body of the response"},"status":{"default":"200","description":"The HTTP status code to return","title":"Status code","type":"string","enum":["200","201","202","204","400","401","403","404","429","500"],"buildship":{"index":0,"options":[{"value":"200","label":"OK (200)"},{"value":"201","label":"Created (201)"},{"value":"202","label":"Accepted (202)"},{"value":"301","label":"Redirect (301)"},{"label":"No Content (204)","value":"204"},{"label":"Bad Request (400)","value":"400"},{"label":"Unauthorized (401)","value":"401"},{"value":"403","label":"Forbidden (403)"},{"value":"404","label":"Not Found (404)"},{"value":"429","label":"Too Many Requests (429)"},{"label":"Internal Server Error (500)","value":"500"}]}}},"sections":{},"title":"Response","type":"object","required":["body"],"structure":[{"id":"body","index":1,"parentId":null,"depth":0},{"id":"status","index":0,"parentId":null,"depth":0},{"parentId":null,"id":"cacheMaxAge","index":2,"depth":0}]},"id":"f183c6ea-c24f-4882-83cb-ee2f95aa28b6","data":{"title":"Request","buildship":{},"description":"Named URL parameters","required":["body"],"type":"object","properties":{"query":{"title":"Query","buildship":{"index":2},"type":"object","description":"Query parameters of the request"},"body":{"buildship":{"sensitive":true,"index":0},"title":"Body","properties":{},"default":{},"type":"object"},"params":{"description":"Named URL parameters","title":"Params","buildship":{"index":3},"type":"object","properties":{}},"headers":{"description":"Headers of the request","type":"object","properties":{"origin":{"title":"origin","buildship":{"index":0,"sensitive":true},"default":"","type":"string","properties":{}},"authorization":{"title":"authorization","type":"string","buildship":{"index":2}},"x-cloud-trace-context":{"properties":{},"type":"string","buildship":{"sensitive":true,"index":1},"title":"x-cloud-trace-context","default":""}},"default":{},"title":"Headers","buildship":{"index":0,"sensitive":true}},"requestPath":{"description":"","type":"string","title":"Request Path","buildship":{"index":4}}}},"usage":"","usagePreview":"","dependencies":{"co-body":"6.2.0"}}],"nodeValues":{"test-d3cbabc0-c43d-4970-bab9-dac0b0666707-form":{"oAuthIntegrations":{"_$expression_":"{}","type":"javascript"},"kbIntegrationKey":"anthropic;;credits","temperature":0.5,"maxTokens":1600,"systemPrompt":"Review the user-provided content for any tell-tale signs of AI-generated content, including: {{- Overuse of generic or overly formal phrases like \"It is important to note that,\" \"In conclusion,\" or \"As previously mentioned\"\n- Repetitive sentence structures and vocabulary throughout the content\n- Excessive use of transition words and connecting phrases (e.g., \"Furthermore,\" \"Additionally,\" \"Moreover\")\n- Lack of personal anecdotes, specific experiences, or nuanced opinions\n- Unnatural or overly balanced tone, avoiding strong stances or emotional language\n- Content that feels “over-explained” or unnecessarily verbose\n- Responses that summarize both sides of an issue without clear commitment or insight\n- Overly broad or generic statements lacking concrete details or examples\n- Consistent use of bullet points or numbered lists, even when not contextually necessary\n- Slightly off-topic or tangential information included to fill space\n- Repeated restatement of the prompt or question within the answer\n- Absence of typos, slang, or colloquial language common in human writing\n- Overly cautious or hedging language, such as \"It is possible that,\" \"It may be considered,\" or \"One could argue that\"}}. Edit the centent to ensure it reads as human-generated content.\n\nReturn the full revised content, ready for publishing.\n\nAn example of an obviously written AI sentence is:\n\"The future of AI assistants isn't just about conversation—it's about action.\"\nBecause:\n* uses the structure \"isn't just - it's about\"\n* uses the long-dash (obviously AI)","modelId":"claude-3-7-sonnet-20250219","userPrompt":"# Supercharge Your ElevenLabs Voice Agents with BuildShip Tools Voice agents are transforming how we interact with AI, and ElevenLabs is at the forefront of this revolution. But what if you could make these voice agents even more powerful? That's where BuildShip tools come in, allowing you to extend your voice agents with custom integrations that connect to your everyday workflows. In this guide, we'll explore how to enhance your ElevenLabs voice agents with BuildShip tools, giving them the ability to access external data, trigger actions, and provide more valuable responses. ## What are BuildShip tools and why do they matter? BuildShip tools are custom integrations that extend the capabilities of your AI agents. Instead of being limited to conversation alone, your ElevenLabs voice agent can now: - Interact with your Google Calendar - Trigger deep research through Perplexity AI - Research competitors before sales calls - Pull data from project management tools like Linear or Jira - And much more These integrations transform your voice agent from a simple conversational AI into a powerful assistant that can access real-world data and systems. ## Setting up your first tool for ElevenLabs Let's walk through creating a custom tool that allows your ElevenLabs voice agent to fetch a changelog from Linear (though you could easily adapt this for Jira or other project management tools). ### Step 1: Create your agent in ElevenLabs First, head to [elevenlabs.io](https://elevenlabs.io) and create a voice agent. At the bottom of the configuration page, you'll find the tools section where we'll add our custom integration. ### Step 2: Build your tool with BuildShip BuildShip makes it easy to create custom tools through its AI-powered workflow builder: 1. Start by describing what you want your tool to do in plain English 2. Let Compass (BuildShip's AI builder) generate a workflow for you 3. Review the generated plan and click \"Start Building\" 4. Connect your OAuth credentials for the service you're integrating with (in this case, Linear) 5. Test your workflow to ensure it returns the expected data For our Linear changelog example, we'll create a tool that accepts a date range and returns all the changes (new features, improvements, and bug fixes) that happened during that period. ### Step 3: Connect your tool to ElevenLabs Once your tool is built in BuildShip, you'll need to connect it to your ElevenLabs agent: 1. In BuildShip, go to the Connect tab and select ElevenLabs from the dropdown 2. Copy the tool name and description 3. In ElevenLabs, add a new tool and paste in the details 4. Set the API URL and method (POST) 5. Configure the headers with your BuildShip authentication 6. Add the body parameters (in our case, start_date and end_date) 7. Save your changes > **Note:** Make sure to use camelCase for your parameter names in ElevenLabs to avoid any issues. For a complete step-by-step tutorial, check out [this video guide](https://youtu.be/dH_rPldsUKw). ## Your tool in action Once configured, your ElevenLabs voice agent can now respond to queries like \"What happened in Linear last week?\" The agent will: 1. Recognize that it needs to use the Linear changelog tool 2. Ask for any missing information (like specific dates) 3. Call the BuildShip API with the parameters 4. Return the formatted changelog information For example: User: \"What happened in Linear last week?\" Agent: \"I can help with that. I will need a start date and end date to generate the changelog. What dates are you looking for?\" User: \"May 5th to May 9th, 2025.\" Agent: \"Here's the changelog from May 5th to May 9th, 2025: **New Features:** - Sales agent tools - Product agent tools - Marketing agent tools - OpenAI and agent templates - Livestream and community improvements **Improvements:** - User onboarding enhancements - Node and workflow improvements - UX refinements **Bug Fixes:** - Fixed issue where unshipped tools could be added - Added clear warnings to prevent setup confusion\" ## Advanced configuration options When setting up your tools, you have several configuration options to consider: ### Wait for output By default, your agent will wait for the tool to return data before responding. This works well for quick API calls, but for longer operations, you can set \"wait for output before responding\" to false. This allows your agent to acknowledge that it's triggered an action without waiting for completion. ### Customizing your agent Beyond tools, ElevenLabs offers extensive customization options: - System prompts to guide your agent's behavior - First message configuration - LLM selection - Voice customization - Embedding options for web integration ## Practical applications for BuildShip tools with ElevenLabs The combination of ElevenLabs voice agents and BuildShip tools opens up numerous possibilities: ### Customer service Create agents that can look up order status, process returns, or schedule appointments while maintaining a natural voice conversation. ### Personal productivity Build voice assistants that manage your calendar, summarize emails, or prepare meeting briefs with relevant data pulled from your tools. ### Sales enablement Equip your sales team with voice agents that can research prospects, pull competitive information, or update CRM records during calls. ### Development workflows Create voice interfaces for checking build status, reviewing recent commits, or getting project updates from tools like Linear or Jira. ## Getting started with your own integration Ready to supercharge your ElevenLabs voice agents? Here's how to get started: 1. Map out your existing workflows and identify where voice-activated tools could save time 2. Determine which data sources or APIs would be most valuable to integrate 3. Use BuildShip to create your custom tools (either from the community library or by generating your own) 4. Connect them to your ElevenLabs voice agents 5. Test thoroughly and refine based on real-world usage The most powerful tools often come from identifying repetitive tasks in your daily work that could benefit from voice automation. ## Conclusion By combining ElevenLabs' advanced voice technology with BuildShip's flexible integration tools, you can create voice agents that go far beyond simple conversation. These enhanced agents can access your data, trigger workflows, and provide valuable insights through natural voice interaction. The future of AI assistants isn't just about conversation—it's about action. With BuildShip tools and ElevenLabs, you can build voice agents that truly augment your capabilities and help you make better decisions through enhanced information access. What will you build with your newly empowered voice agents?"},"test-workflow-form":{"transcript":"# Supercharge Your ElevenLabs Voice Agents with BuildShip Tools Voice agents are transforming how we interact with AI, and ElevenLabs is at the forefront of this revolution. But what if you could make these voice agents even more powerful? That's where BuildShip tools come in, allowing you to extend your voice agents with custom integrations that connect to your everyday workflows. In this guide, we'll explore how to enhance your ElevenLabs voice agents with BuildShip tools, giving them the ability to access external data, trigger actions, and provide more valuable responses. ## What are BuildShip tools and why do they matter? BuildShip tools are custom integrations that extend the capabilities of your AI agents. Instead of being limited to conversation alone, your ElevenLabs voice agent can now: - Interact with your Google Calendar - Trigger deep research through Perplexity AI - Research competitors before sales calls - Pull data from project management tools like Linear or Jira - And much more These integrations transform your voice agent from a simple conversational AI into a powerful assistant that can access real-world data and systems. ## Setting up your first tool for ElevenLabs Let's walk through creating a custom tool that allows your ElevenLabs voice agent to fetch a changelog from Linear (though you could easily adapt this for Jira or other project management tools). ### Step 1: Create your agent in ElevenLabs First, head to [elevenlabs.io](https://elevenlabs.io) and create a voice agent. At the bottom of the configuration page, you'll find the tools section where we'll add our custom integration. ### Step 2: Build your tool with BuildShip BuildShip makes it easy to create custom tools through its AI-powered workflow builder: 1. Start by describing what you want your tool to do in plain English 2. Let Compass (BuildShip's AI builder) generate a workflow for you 3. Review the generated plan and click \"Start Building\" 4. Connect your OAuth credentials for the service you're integrating with (in this case, Linear) 5. Test your workflow to ensure it returns the expected data For our Linear changelog example, we'll create a tool that accepts a date range and returns all the changes (new features, improvements, and bug fixes) that happened during that period. ### Step 3: Connect your tool to ElevenLabs Once your tool is built in BuildShip, you'll need to connect it to your ElevenLabs agent: 1. In BuildShip, go to the Connect tab and select ElevenLabs from the dropdown 2. Copy the tool name and description 3. In ElevenLabs, add a new tool and paste in the details 4. Set the API URL and method (POST) 5. Configure the headers with your BuildShip authentication 6. Add the body parameters (in our case, start_date and end_date) 7. Save your changes > **Note:** Make sure to use camelCase for your parameter names in ElevenLabs to avoid any issues. For a complete step-by-step tutorial, check out [this video guide](https://youtu.be/dH_rPldsUKw). ## Your tool in action Once configured, your ElevenLabs voice agent can now respond to queries like \"What happened in Linear last week?\" The agent will: 1. Recognize that it needs to use the Linear changelog tool 2. Ask for any missing information (like specific dates) 3. Call the BuildShip API with the parameters 4. Return the formatted changelog information For example: User: \"What happened in Linear last week?\" Agent: \"I can help with that. I will need a start date and end date to generate the changelog. What dates are you looking for?\" User: \"May 5th to May 9th, 2025.\" Agent: \"Here's the changelog from May 5th to May 9th, 2025: **New Features:** - Sales agent tools - Product agent tools - Marketing agent tools - OpenAI and agent templates - Livestream and community improvements **Improvements:** - User onboarding enhancements - Node and workflow improvements - UX refinements **Bug Fixes:** - Fixed issue where unshipped tools could be added - Added clear warnings to prevent setup confusion\" ## Advanced configuration options When setting up your tools, you have several configuration options to consider: ### Wait for output By default, your agent will wait for the tool to return data before responding. This works well for quick API calls, but for longer operations, you can set \"wait for output before responding\" to false. This allows your agent to acknowledge that it's triggered an action without waiting for completion. ### Customizing your agent Beyond tools, ElevenLabs offers extensive customization options: - System prompts to guide your agent's behavior - First message configuration - LLM selection - Voice customization - Embedding options for web integration ## Practical applications for BuildShip tools with ElevenLabs The combination of ElevenLabs voice agents and BuildShip tools opens up numerous possibilities: ### Customer service Create agents that can look up order status, process returns, or schedule appointments while maintaining a natural voice conversation. ### Personal productivity Build voice assistants that manage your calendar, summarize emails, or prepare meeting briefs with relevant data pulled from your tools. ### Sales enablement Equip your sales team with voice agents that can research prospects, pull competitive information, or update CRM records during calls. ### Development workflows Create voice interfaces for checking build status, reviewing recent commits, or getting project updates from tools like Linear or Jira. ## Getting started with your own integration Ready to supercharge your ElevenLabs voice agents? Here's how to get started: 1. Map out your existing workflows and identify where voice-activated tools could save time 2. Determine which data sources or APIs would be most valuable to integrate 3. Use BuildShip to create your custom tools (either from the community library or by generating your own) 4. Connect them to your ElevenLabs voice agents 5. Test thoroughly and refine based on real-world usage The most powerful tools often come from identifying repetitive tasks in your daily work that could benefit from voice automation. ## Conclusion By combining ElevenLabs' advanced voice technology with BuildShip's flexible integration tools, you can create voice agents that go far beyond simple conversation. These enhanced agents can access your data, trigger workflows, and provide valuable insights through natural voice interaction. The future of AI assistants isn't just about conversation—it's about action. With BuildShip tools and ElevenLabs, you can build voice agents that truly augment your capabilities and help you make better decisions through enhanced information access. What will you build with your newly empowered voice agents?"},"test-1400205f-0ee6-43c1-998b-8bccd3045929-form":{"oAuthIntegrations":{"type":"javascript","_$expression_":"{}"},"temperature":0.5,"output_format":"text","userRequest":"What are the most commonly recognized phrases, stylistic patterns, or “tells” that indicate a piece of content was generated by AI, based on current discussions (e.g. on Reddit and similar platforms)?\n\nReturn only a bulleted list of the top human-identifiable signals, including specific phrases, writing tics, or stylistic habits that readers associate with AI-generated content as of today.\n\nAvoid explanation, just list the most frequently cited markers.\n","systemPrompt":"","model":"sonar-pro","maxTokens":1600,"sessionKey":"","conversationLimit":2,"kbIntegrationKey":"perplexity;;credits"},"b4f85523-9f3d-4fa6-b5f5-595cbd74a539":{"_$bsCacheMaxAge_":0,"_$lastNodeOutput_":{"_$keys_":["d3cbabc0-c43d-4970-bab9-dac0b0666707"]},"_$bsStatusCode_":"200"},"d3cbabc0-c43d-4970-bab9-dac0b0666707":{"systemPrompt":{"_$expression_":"Review the user-provided content for any tell-tale signs of AI-generated content, including: {{ctx?.[\"root\"]?.[\"1400205f-0ee6-43c1-998b-8bccd3045929\"].response}}. Edit the centent to ensure it reads as human-generated content.\n\nReturn the full revised content, ready for publishing.\n\nAn example of an obviously written AI sentence is:\n\"The future of AI assistants isn't just about conversation—it's about action.\"\nBecause:\n* uses the structure \"isn't just - it's about\"\n* uses the long-dash (obviously AI)","type":"text","hasErrors":false},"modelId":"claude-3-7-sonnet-20250219","userPrompt":{"_$keys_":["inputs","transcript"]},"temperature":0.5,"oAuthIntegrations":{},"maxTokens":1600,"kbIntegrationKey":"anthropic;;credits"},"f183c6ea-c24f-4882-83cb-ee2f95aa28b6":{"outputs.body":{"_$keys_":["output"]},"config.toolName":"aiSlopCleaner","outputs.status":{"_$keys_":["state","_$bsStatusCode_"]},"config.toolDescription":"AI Slop Cleaner is a tool designed to process and refine AI-generated content, ensuring clarity and coherence. It takes in transcripts or text inputs and utilizes advanced AI models to clean up, humanize, and enhance the content, making it more understandable and engaging for users. This tool is ideal for improving the quality of AI outputs in various applications.","inputs.transcript":{"_$expression_":"ctx?.[\"root\"]?.[\"f183c6ea-c24f-4882-83cb-ee2f95aa28b6\"]?.[\"body\"].transcript"},"config.respondEarly":"no","outputs.cacheMaxAge":{"_$keys_":["state","_$bsCacheMaxAge_"]},"config.apiKey":"45740d533e755bf0f3bd755fd8b78c65233a8cb5017b500203b0a109e5a5d673"},"1400205f-0ee6-43c1-998b-8bccd3045929":{"model":"sonar-pro","temperature":0.5,"conversationLimit":2,"userRequest":"What are the most commonly recognized phrases, stylistic patterns, or “tells” that indicate a piece of content was generated by AI, based on current discussions (e.g. on Reddit and similar platforms)?\n\nReturn only a bulleted list of the top human-identifiable signals, including specific phrases, writing tics, or stylistic habits that readers associate with AI-generated content as of today.\n\nAvoid explanation, just list the most frequently cited markers.\n","systemPrompt":"","kbIntegrationKey":"perplexity;;credits","maxTokens":1600,"sessionKey":"","oAuthIntegrations":{},"output_format":"text"}},"runtimeVersion":"v3","outputs":{"type":"object","properties":{"output":{"properties":{},"buildship":{"index":0},"title":"Output"}},"required":[]},"inputs":{"type":"object","properties":{"transcript":{"properties":{},"type":"string","buildship":{"index":0},"title":"Transcript"}},"required":["string"]},"variables":{"_$bsCacheMaxAge_":{"properties":{},"type":"number","title":"Flow Output Cache Time","default":0,"buildship":{"index":0}},"_$bsStatusCode_":{"properties":{},"type":"string","buildship":{"index":0},"title":"Flow Output Status Code"}}}