PageSourceSearch

https://dhruba-datta.netlify.app/assets/AIVoiceAgentPage-CIMGuvs6.js

js dhruba-datta.netlify.app collected 2026-10-03 10:39:39 UTC 5,341 bytes, 1 lines download raw bytes

1import{j as e}from"./vendor-motion-C0Ykwh7C.js";import{E as s,F as a,a1 as t,T as o}from"./index-DQYSP24l.js";import{P as h}from"./ProjectPageTemplate-BukZfH_t.js";import{aA as n,ac as c,ai as i,aF as m,aG as d,p as w,az as p}from"./vendor-icons-CZ0fHw8h.js";import"./vendor-react-D8ZVE-1i.js";import"./index-tD3BwZqC.js";import"./index-B32Yb0IV.js";import"./index-C9VRkwIY.js";import"./index-CMnRXDm6.js";import"./Footer-ClRpSHv8.js";import"./ProjectCard-BwLNlIzs.js";import"./projects-Clb5hPl-.js";import"./Seo-D8Plyq5-.js";const A=({isDark:l,toggleTheme:r})=>e.jsx(h,{isDark:l,toggleTheme:r,title:"AI Voice Agent (n8n MCP)",description:"An AI phone agent that answers calls, books appointments against a live calendar and hands the caller to a person when it should. Vapi handles the voice and Twilio the phone line, GPT-4o does the reasoning, and n8n provides the tools. Instead of one webhook per tool, n8n exposes them through a single MCP server, so the agent discovers its tools at the start of the call and can use several of them in one conversation.",coverSrc:"/images/projects/AI Voice Agent (n8n MCP).webp",chips:[{name:"n8n",icon:e.jsx(s,{className:"w-3 sm:w-3.5 h-3 sm:h-3.5"})},{name:"MCP",icon:e.jsx(i,{className:"w-3 sm:w-3.5 h-3 sm:h-3.5"})},{name:"Vapi",icon:e.jsx(n,{className:"w-3 sm:w-3.5 h-3 sm:h-3.5"})},{name:"GPT-4o",icon:e.jsx(a,{className:"w-3 sm:w-3.5 h-3 sm:h-3.5"})},{name:"Twilio",icon:e.jsx(o,{className:"w-3 sm:w-3.5 h-3 sm:h-3.5"})},{name:"Google Calendar",icon:e.jsx(t,{className:"w-3 sm:w-3.5 h-3 sm:h-3.5"})}],features:[{id:"mcp",icon:e.jsx(i,{className:"w-4 sm:w-5 h-4 sm:h-5"}),title:"One MCP Server Instead of Many Webhooks",summary:"n8n acts as the agent's toolbox through a single connection",details:["An MCP server workflow defines the tools; each tool's logic lives in its own sub-workflow","Tools can be updated or added without reconfiguring the voice assistant","The model keeps the conversation context, so one call can use several tools in a row","Details like name and email are only asked for when a tool actually needs them"]},{id:"booking",icon:e.jsx(m,{className:"w-4 sm:w-5 h-4 sm:h-5"}),title:"Appointment Booking",summary:"Checks the calendar live and books the slot, or offers alternatives",details:["Parses the requested date and time and checks Google Calendar for conflicts","If the slot is free, it creates the appointment with the caller's contact details","If it's taken, it searches the next seven days of business hours and offers three open slots"]},{id:"transfer",icon:e.jsx(d,{className:"w-4 sm:w-5 h-4 sm:h-5"}),title:"Live Call Transfer",summary:"Hands the caller to a team member when they ask for a person",details:["Tells the caller they're being connected, then transfers the call","If the transfer fails, it tells the caller someone will follow up instead of dropping them"]},{id:"failure",icon:e.jsx(w,{className:"w-4 sm:w-5 h-4 sm:h-5"}),title:"Failure Handling",summary:"A three-step recovery when the agent can't understand the caller",details:["Asks the caller to repeat, then asks once more in different words","After a third failure, it apologises and transfers the call to a person"]},{id:"roadmap",icon:e.jsx(p,{className:"w-4 sm:w-5 h-4 sm:h-5"}),title:"Planned Tools",summary:"Next tools on the same MCP server",details:["Planned: answering common questions from a knowledge base and flagging unknowns for follow-up","Planned: scoring callers as hot, warm or cold and logging the result for follow-up","Planned: SMS follow-up after the call with the booking confirmation"]}],techSectionTitle:"Stack",techItems:[{icon:e.jsx(n,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"}),label:"Vapi",description:"Voice assistant that runs the call and calls tools mid-conversation."},{icon:e.jsx(s,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"}),label:"n8n MCP Server",description:"Exposes the agent's tools through one MCP endpoint, with sub-workflows for the logic."},{icon:e.jsx(a,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"}),label:"GPT-4o",description:"Reasons over the conversation and decides which tool to call."},{icon:e.jsx(t,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"}),label:"Google Calendar",description:"Availability checks and appointment creation."},{icon:e.jsx(o,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"}),label:"Twilio",description:"Phone number and call routing into the voice agent."},{icon:e.jsx(c,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"}),label:"Call Transfer",description:"Native transfer tool for handing callers to a person."}],useCases:["Service businesses that miss calls after hours or while staff are busy","Booking appointments straight into a calendar without a receptionist","Routing callers who need a person to the right team member"],howToSectionTitle:"How It Works",howToSteps:["A caller rings the business number, routed through Twilio to the Vapi agent.","The agent talks with the caller and decides which tool it needs.","It calls the n8n MCP server to check the calendar and book the slot, or offer alternatives.","If the caller wants a person, or the agent can't understand them, it transfers the call."],contactCTA:{title:"Thinking about a voice agent?",description:"I build voice agents on Vapi and n8n that book, answer and hand off calls reliably.",primaryButtonText:"Get Started",secondaryButtonText:"Explore Workflows"}});export{A as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.