Skip to content

Build agents from Claude Code

What this actually is

Most MCP servers hand an assistant a REST API and hope for the best. This one hands it the job.

Connect Decibyl to Claude Code, Codex, Cursor or Claude Desktop and your assistant can author a complete voice agent — plan it with you, write it, validate it, save it, and review its own work. Not “list my agents.” Build one.

You: Build me an agent that calls people who abandoned their cart,
asks why, and offers a 10% code if the reason was price.
Telugu and English.
Claude: [reads Decibyl's voice-prompting guide, asks you six questions
about persona, escalation and what counts as success]
[writes the workflow in TypeScript, validates it, saves it]
Saved as a draft. Four nodes: greeting → reason capture →
discount offer → close. The reason node extracts `churn_reason`
so you can segment on it later. Publish when you've listened to
a test call.

That loop is the product.

Why the agents come out good

An LLM with API access writes a voice agent the way it writes any other code: plausibly, and wrong in the ways voice is specifically hard. Turns that never hand back to the caller. Prompts that contradict each other three nodes apart. No definition of what a successful call was.

So the server ships the craft alongside the API. get_voice_prompting_guide is a tool, and the server’s own instructions tell the assistant to call it before writing prompts — not as documentation it might find, but as a step in the loop it is told to run.

StageWhat the assistant is made to do
PlanAsk you about persona, node order, exit conditions and the tools it will need. Present a plan. Wait for you to approve it before writing any code.
CreatePull the guidance for each node type it is about to write, emit TypeScript, and save.
ReviewRe-read its own work for instruction collision, missing handoff cues and success-criteria gaps.

Eight topics sit behind that, each one written from a failure mode seen in real agents: global-node guidelines, guardrails against fabrication and abuse, call flow design, one-tool-one-job discipline, explicit success criteria, end-call consolidation, turn-taking, and instruction collision.

The practical effect: the assistant asks before it builds, and what it builds holds a conversation.

What it can do

Agents are stored as JSON and projected to TypeScript against the @decibyl/sdk package for editing, then parsed back on save. Your assistant edits real code — with real type errors, returned as structured feedback it can act on rather than a 400 it has to guess at.

Tools
Author agentscreate_workflow, save_workflow, get_workflow_code
Learn the schemalist_node_types, get_node_type
Get the craft rightget_voice_prompting_guide
Build custom toolscreate_tool — with list_credentials for auth
See the workspacelist_workflows, get_workflow, list_tools, list_documents, list_recordings
Check telephonyget_telephony_verification, list_phone_numbers, search_available_numbers, get_billing_summary
Read the manualsearch_docs, read_doc, list_docs

Everything is scoped to the workspace behind your API key.

What it deliberately cannot do

Buying a phone number and releasing one are not available over MCP, and that is on purpose rather than unfinished.

Buying spends money every month, and an assistant that retries a request it thinks failed can end up renting two numbers where you wanted one. Releasing is irreversible at the carrier — the number goes back to the pool and may be issued to someone else the same day, and it may be the number printed on your storefront.

So the assistant can tell you what is available and what you are paying, and the decision to spend or to give up a number stays with a person, over the REST API or the dashboard.

Connect it

You need a Decibyl API key — generate one at app.decibyl.ai/api-keys. See API Keys.

The endpoint is https://app.decibyl.ai/api/v1/mcp/, also shown in Platform Settings → MCP Server.

Terminal window
claude mcp add --transport http decibyl https://app.decibyl.ai/api/v1/mcp/ \
--header "X-API-Key: YOUR_API_KEY"
claude mcp list # verify
~/.codex/config.toml
[mcp_servers.decibyl]
url = "https://app.decibyl.ai/api/v1/mcp/"
http_headers = { "X-API-Key" = "YOUR_API_KEY" }
{
"mcpServers": {
"decibyl": {
"url": "https://app.decibyl.ai/api/v1/mcp/",
"headers": { "X-API-Key": "YOUR_API_KEY" }
}
}
}

Restart Claude Desktop after saving. Any client supporting Streamable HTTP transport connects with the same URL and header — Cursor included.

To keep the key out of config.toml in Codex, use env_http_headers instead and export it before launching:

[mcp_servers.decibyl]
url = "https://app.decibyl.ai/api/v1/mcp/"
env_http_headers = { "X-API-Key" = "DECIBYL_API_KEY" }
Terminal window
export DECIBYL_API_KEY="YOUR_API_KEY"
codex

Verify with codex mcp list and codex mcp get decibyl.

Things to ask it

Build something

  • “Build me an appointment reminder agent for a dental clinic. Hindi, and it should offer to reschedule if they say no.”
  • “Create a lead qualification agent that asks for budget and timeline, and transfers to a human if the budget is over ₹5 lakh.”
  • “Make a tool that posts to our CRM webhook, then wire it into Support Agent so it logs every resolved ticket.”

Change something

  • “In Lead Qualifier, add a node after the greeting that asks for budget, then routes to the existing qualification node.”
  • “Rename the intro node to greeting and fix every edge that referenced it.”
  • “Review Support Agent for instruction collision and tell me what you’d change before I publish.”

Check on telephony and billing

  • “Why can’t my agent make phone calls?”
  • “What phone numbers do I have, and which agent answers each one?”
  • “What am I paying in monthly number rental, and is anything overdue?”
  • “Are there any local numbers available in Hyderabad?”

Understand something

  • “What node types are there, and what fields does a knowledge_base node take?”
  • “Search the docs for how to configure a TURN server.”
  • “List the recordings from my most recent agent.”

Next

  • Put the agent you just built on your website with the web voice widget — no phone number needed.
  • Or give it a phone number: Telephony.