Skip to main content
The MCP server is best used two ways in the same session: interactively, to explore your account from chat, and as a spec source, to hand your assistant real field names and response shapes when it writes code. This walkthrough builds a small local dashboard — one page showing your agents, wallet balance, and recent call outcomes — that talks to the real Bolna API directly, so it keeps working with no MCP connection required at runtime.
This walkthrough needs an agent that can write and run files — Claude Code, Cursor, Windsurf, or Codex CLI. A chat-only client like Claude Desktop can do everything in the Prompt Cheatsheet, but can’t carry out the codegen steps below.
The shipped dashboard calls api.bolna.ai with your BOLNA_API_KEY directly, from a small local server — it doesn’t depend on the MCP server. MCP is the tool you and your assistant use while building it.

Prerequisites

  • A Bolna account with at least one agent that has placed calls
  • A coding-capable agent (Claude Code, Cursor, Windsurf, or Codex CLI) with the Bolna MCP server connected
  • Node.js 18+
1

Explore your data through MCP

Ask your assistant, connected via MCP:
This chains list_agentslist_agent_executions behind the scenes, so you can see real agent IDs and call volume before writing a line of code.
2

Scaffold the dashboard

Now ask it to build the app — talk to it the way you’d brief a teammate, not a spec doc:
It should land on something like an Express backend proxying api.bolna.ai, with a static frontend that only talks to your own server. Expect a route close to this for the calls list:
If it puts the key in frontend code or skips a field you need, just say so — that’s a normal follow-up, not a failure.
3

Debug a real failure

Pick a failed execution ID from the table and ask, back in the MCP-connected chat:
Then fold the fix into the app:
4

Guard the wallet before a real call

This mirrors the get_user_infostart_outbound_call pattern from the Prompt Cheatsheet, now baked into the dashboard itself.

What to build next

  • Webhook receiver that pushes live call events into the dashboard instead of polling — see Setup Webhooks via the setup-webhook Skill
  • Slack alert on low balance using the same /api/balance route this dashboard already exposes
  • Batch-status view for campaigns — see the create-batch Skill for the create/schedule/monitor side this connector doesn’t cover

Tool List

Every field and endpoint this example calls

Prompt Cheatsheet

More prompts to extend this dashboard