Smallest MCP Server
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ATOMS_API_KEY | Yes | Your Smallest AI API key |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_agentsA | List AI agents in your organization. Returns agent configuration including voice, LLM model, language settings, and call statistics. Supports pagination, filtering, and sorting. |
| get_agentA | Get full details for a single agent by ID, including voice config, model, prompt, language, call behavior settings, and workflow type. |
| get_agent_promptA | Read the current system prompt / instructions for an agent. Returns the prompt text and any configured tools. |
| create_agentA | Create a new AI agent in your organization. By default the agent is a single_prompt agent with gpt-4.1 model and daniel voice (waves_lightning_v3_1); set workflow_type to multi_agents for a Playbooks agent (an intent router + specialist SOP playbooks — add them via add_playbooks after creation). The STT transcriber defaults to Pulse — change it (e.g. to pulse-legacy) via update_agent_config after creation. Returns the created agent's ID. For single_prompt agents, set the prompt via update_agent_prompt after creation. |
| update_agent_promptA | Update an agent's system prompt / instructions. Pass the full new prompt text. Only works for single_prompt agents. Optionally update the first message too. For versioned agents, changes are saved as a draft — pass |
| update_agent_configA | Update an agent's configuration (name, language, first message, voice settings, model, variables, etc.). Only provided fields are updated. To update the agent's prompt/instructions, use update_agent_prompt instead. For versioned agents, changes are saved as a draft — use publish_draft to make them live, or test the draft first via make_call with the draft's version_id. |
| add_agent_toolA | Add (or update) one or more API-call tools on a single_prompt agent. API-call tools let the agent make an HTTP request to an external API during a call — e.g. look up an order, book an appointment, or post to a CRM. The agent decides when to invoke a tool based on its name and description, filling in any declared parameters. Pass a single tool via the top-level fields, or several at once via |
| remove_agent_toolA | Remove a tool (by name) from a single_prompt agent. Works for any tool type (api_call, transfer_call, etc.). For versioned agents the change is saved as a draft — pass |
| set_pre_call_apiA | Configure (or disable) an agent's pre-call API. This is an HTTP request the platform makes automatically BEFORE the call connects — typically to enrich the agent with data, e.g. look up a customer record by phone number. Values extracted via response_variables become {{variables}} you can reference in the prompt and first message. This is different from add_agent_tool: a pre-call API always runs once before the call and is not chosen by the LLM, whereas an api_call tool is invoked by the agent during the conversation. There is exactly one pre-call API per agent (this replaces it). For versioned agents the change is saved as a draft — pass |
| delete_agentA | Archive (soft-delete) an agent by its ID. Archived agents are inactive. Cannot archive agents with active campaigns. Unarchiving is not supported — to restore an agent, use app.smallest.ai. |
| duplicate_agentA | Duplicate an existing agent, creating a new agent with the same configuration. The new agent is created in the target organization (defaults to your own org). Useful for creating variants of an agent for testing or A/B comparisons. |
| get_playbooksA | Read a multi_agents agent's Playbooks config: the intent router (fallback + mid-call rerouting), shared auth tools, and the SOP list (id, intent, auth level, tool count). Pass playbook_id for one playbook's full detail (prompt, tools, intent description). Reads the active version by default; pass draft_id or version_id to inspect those instead. |
| add_playbooksA | Add one or more playbooks (SOPs) to a multi_agents agent. Each playbook = an intent (name + description the classifier routes on) + a specialist prompt + optional scoped tools and an auth level. Edits land on a draft (auto-created from the active version when draft_id is omitted) — use publish_draft to go live. The first enabled playbook becomes the router fallback automatically if none is set. Names and intent names must be unique on the agent (case-insensitive, archived included). |
| configure_call_actionsA | Enable/disable the agent's end_call action and set/remove a transfer_call number. These are AGENT-LEVEL settings (the console's Tools tab) that apply to the whole agent — for multi-agent (Playbooks) agents the runtime injects them into every playbook, never gated behind auth. Changes land on a draft; publish_draft to go live. Without an enabled end_call the agent cannot hang up on its own. |
| update_playbookA | Edit one playbook (SOP) on a multi_agents agent: change its prompt, intent, auth level, tools, or archive/restore it (enabled=false/true — playbooks are archived, never deleted, so call history stays resolvable). Edits land on a draft (auto-created when draft_id omitted); publish_draft to go live. The router fallback cannot be archived — repoint it first via configure_playbooks. |
| configure_playbooksA | Configure the section-level Playbooks settings of a multi_agents agent: the intent router (fallback playbook, mid-call rerouting), the conversation guide (persona/tone/global rules injected into EVERY playbook — define them once here, not per-SOP), and the shared identity tools that satisfy weak/strong auth. Edits land on a draft (auto-created when draft_id omitted); publish_draft to go live. |
| list_draftsA | List all active (unpublished) drafts for a versioned agent. Shows draft name, revision count, last editor, and last edit time. Useful to see what changes are in progress before deciding to publish or discard. |
| get_draftA | Get detailed information about a specific draft, including its latest revision, edit history (which sections changed per revision), and resolved config. Use list_drafts first to find draft IDs. |
| rename_draftA | Rename a draft to give it a more descriptive name. Useful when working with multiple drafts to keep them organized. |
| get_draft_diffA | Compare a draft against its source version (or a specific published version) to see what changed. Shows unchanged sections and detailed diffs for modified sections. Useful before publishing to review changes. |
| publish_draftA | Publish a draft as a new version and (by default) activate it to make it live. Publishing triggers an async security check on the prompt; this tool waits for it to pass before activating and reports the real outcome — if the check is still pending after ~60s the version is published but NOT live yet (use activate_version once it passes), and if it fails the version cannot be activated until the prompt is fixed. Can also discard a draft instead of publishing. |
| test_draftA | Initiate a test call using a draft's configuration (before publishing). Supports webcall, chat, and telephony modes. Use this to verify draft changes work correctly before making them live. |
| list_versionsA | List all published versions for a versioned agent, sorted by version number (newest first). Shows version number, label, who published it, whether it's active, and whether it's pinned. Use this to review version history or find a version to roll back to. |
| get_versionA | Get full details for a specific published version, including its resolved configuration across all sections (voice, LLM, language, prompt, detection, timeouts, etc.). Use list_versions to find version IDs. |
| update_versionA | Update metadata on a published version — label, description (release notes), or pin status. Pinned versions are highlighted in the version list for quick access. Does NOT change the version's configuration (published versions are immutable). |
| activate_versionA | Activate a specific published version, making it the live configuration for the agent. Use this to roll back to a previous version or switch between versions. The previously active version is automatically deactivated. Use list_versions to find version IDs. |
| diff_versionsA | Compare two published versions side-by-side to see exactly what changed between them. Shows unchanged sections and detailed diffs for modified config sections (voice, prompt, LLM, language, etc.). Use list_versions to find version IDs. |
| compare_version_metricsA | A/B compare call performance metrics between two published versions. Shows total calls, answered calls, average duration, completion rate, total cost, and percentage deltas. Optionally filter by date range. Use this to evaluate which version performs better before deciding which to keep active. |
| test_versionA | Initiate a test call using a specific published version's configuration. Supports webcall, chat, and telephony modes. Use this to test a non-active version before activating it (e.g. verifying a rollback candidate). |
| get_audiencesA | List all audiences in your organization. Shows audience name, member count, linked campaigns, and the phone number column name. Audiences are contact lists used by campaigns for outbound calling. |
| get_audienceA | Get details for a specific audience by ID, including name, description, and phone number column name. |
| delete_audienceA | Delete an audience by ID. Cannot delete an audience that is linked to a campaign — remove or delete the campaign first. |
| get_audience_membersA | List members (contacts) in an audience with pagination. Each member has a data object containing their phone number and any other fields from the original CSV upload. |
| search_audience_membersA | Search for members in an audience. Supports general search across all fields, or field-specific search (e.g. by phone number or name). Returns up to 10 results. |
| add_audience_membersA | Add members (contacts) to an existing audience. Each member must include the phone number column defined when the audience was created (use get_audience to check). Max 10,000 members per request. Duplicate phone numbers are skipped. |
| delete_audience_membersA | Remove specific members from an audience by their member IDs. Use get_audience_members or search_audience_members to find member IDs. If all members are removed, the audience itself may be deleted. |
| get_campaignsB | List outbound calling campaigns for your organization. Shows campaign status, progress, agent used, audience, retry config, and execution details. |
| get_campaignA | Get detailed information about a specific campaign, including status, execution progress, events timeline, and metrics (participants, contacts called, contacts connected). |
| create_campaignA | Create a new outbound calling campaign. Requires an agent and an audience (contact list). The campaign is created in draft status unless a scheduled time is provided, in which case it will be scheduled. Use start_campaign to begin dialing. |
| start_campaignA | Start a campaign to begin dialing contacts. Works on campaigns in draft or paused status. For paused campaigns, this resumes from where it left off. The campaign enters processing state and begins making calls asynchronously. |
| pause_campaignA | Pause a running campaign. Active calls in progress will complete, but no new calls will be initiated. Use start_campaign to resume. |
| delete_campaignA | Delete a campaign. This permanently removes the campaign and its execution data. |
| export_campaign_logsA | Export call logs for a campaign. Returns detailed call data grouped by audience member, including call status, duration, recording URL, transcript, cost, retry attempts, and post-call analytics. |
| list_callsA | Search and list calls across your organization. Use this to browse calls with filters (by status, type, date range, agent, phone number, campaign). Returns a summary list with metadata, duration, cost, and disconnection reasons. For detailed info about a specific call (status, transcript, errors, debugging), use debug_call instead. |
| make_callA | Initiate an outbound phone call using a specific agent. The agent will call the provided phone number and follow its configured prompt. Only telephony outbound calls are supported — for webcall or chat, use app.smallest.ai. |
| chat_with_agentA | Hold a TEXT conversation with a published agent over the realtime chat WebSocket (mode=chat) — no audio, no phone, just text in / text out. Sends each message in |
| debug_callA | Get detailed info about a single call — use this to check call status, debug failures, or get transcripts. Returns call status, failure reasons, errors, transcript, post-call analytics, latency metrics, cost breakdown, variables, voice/model config at time of call, and full event timeline. Works for calls in any state (queued, in-progress, completed, failed). Use a callId (e.g. CALL-1234567890-abc123). |
| get_usage_statsA | Get call usage statistics for your organization — total calls, pickup rate, duration, costs, and unique users reached. Each metric includes current period, previous period, and percent change. Useful for understanding usage patterns and costs. |
| get_credit_balanceA | Get the current credit balance for your organization, including plan information and enterprise status. |
| get_credit_ledgerB | Get the credit transaction history (ledger) for your organization. Shows purchases, usage deductions, bonuses, admin adjustments, coupon credits, and more. Supports filtering by date range, transaction type, and scope. |
| get_usage_breakdownA | Get a breakdown of credit usage by feature and product scope for your organization. Shows how credits are being consumed across different services (voice AI, voice models, platform). |
| get_invoicesA | List all invoices for your organization from Stripe. Shows invoice details including amounts, status, and dates. |
| get_payment_methodsA | List all payment methods (cards) configured for your organization. Shows card brand, last 4 digits, expiry, and which is the default. |
| get_auto_reloadA | Get the current auto-reload configuration for your organization. Auto-reload automatically adds credits when your balance drops below a threshold. |
| get_billing_alertsA | Get the current billing alert configuration for your organization. Billing alerts notify you when credit usage reaches specified thresholds. |
| update_billing_alertsA | Configure billing alert settings. Set up to 3 credit usage thresholds that trigger email notifications. Alerts can be sent to additional email addresses beyond the account owner. |
| get_plansA | List available plans and optionally get the features included in a specific plan. Use this to understand plan pricing, included features, and credit rates. |
| validate_couponA | Check if a coupon code is valid and see how many credits it would give. Does not redeem the coupon — use redeem_coupon to actually apply it. |
| redeem_couponA | Redeem a coupon code to add credits to your organization's balance. Use validate_coupon first to check the code before redeeming. |
| get_phone_numbersA | List phone numbers acquired by your organization. Shows product ID (needed for make_call's from_product_id), number, country, provider, and which agent it's assigned to. |
| get_voicesA | List available voices for agents. Returns voice IDs, names, gender, language, and supported models. Use the voiceId with update_agent_config's synthesizer.voiceConfig to change an agent's voice. A voice whose supportedModels include 'lightning-v3.1-pro' is a Lightning V3.1 Pro voice (use it with the waves_lightning_v3_1 model). Optionally include your organization's cloned voices. |
| get_dashboardA | Get the full analytics dashboard in a single call — includes summary KPIs, call volume timeseries, call outcomes, pickup rates by number, hourly performance, and duration stats. |
| get_call_volumeB | Get call volume over time as a daily timeseries. Shows how many calls were made each day in the date range. |
| get_call_outcomesA | Get call outcome distribution over time — daily breakdown of completed, failed, and no-answer calls, plus totals. |
| get_agent_performanceB | Compare agent performance — shows each agent's total calls, average duration, completion rate, and cost. Use to find top and bottom performers. |
| get_hourly_performanceA | Get performance metrics by hour of day (0-23). Shows call count, average duration, and cost per hour. Useful for identifying peak hours. |
| get_pickup_ratesA | Get pickup rate by phone number — shows total calls, answered calls, and pickup rate for each outbound number. Useful for optimizing caller IDs. |
| get_phone_number_trendsB | Get per-phone-number daily trends — calls, pickup rate, and average duration per day for each number. |
| get_weekly_trendsB | Get weekly aggregated metrics — calls, average duration, and cost per week. Good for spotting week-over-week trends. |
| get_duration_statsB | Get call duration statistics — average, median, min, max, and p95 duration. Shows how long calls typically last. |
| get_attempt_cohortsA | Get attempt cohort analysis — shows volume and success rate by attempt number (1st attempt, 2nd attempt, etc.). Useful for optimizing retry strategies. |
| get_call_counts_by_dayC | Get call count per day as a simple histogram. Shows { day, count } pairs. |
| get_credit_usageA | Get daily credit/cost usage over time — shows credits consumed each day and total for the period. Useful for billing and budget tracking. |
| get_concurrencyA | Get concurrent call counts for a specific date — minute-by-minute concurrency data plus per-agent max concurrency. Shows how many calls were running simultaneously. |
| get_call_start_distributionA | Get call start distribution by hour for a specific date — shows how many calls started in each hour (0-23). Useful for scheduling and capacity planning. |
| get_daily_summaryA | Get summary statistics for a specific date — total calls, completed, failed, no-answer, in-progress, in-queue, average duration, and total cost. |
| text_to_speechA | Convert text to speech audio using Smallest AI's Lightning TTS. Saves the audio file to the specified path. IMPORTANT: Always ask the user where to save the file before calling. Suggest ~/Desktop/.wav as default. Do NOT retry if successful — the file is saved even if inline audio rendering fails. |
| transcribe_audioA | Transcribe an audio file to text using Smallest AI's Pulse STT. Supports 32+ languages. IMPORTANT: Always ask the user what language the audio is in before calling this tool. Pass a file path on the user's machine (e.g. ~/Desktop/recording.wav) or a publicly accessible URL. Note: files uploaded to the chat sandbox are NOT accessible — ask the user for the actual file path on their machine or a URL instead. |
| invite_memberA | Invite one or more users to your organization by email. They'll receive an invitation email to join. Requires admin role on the organization. You can invite as 'member' (default) or 'admin'. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| platform-overview | Overview of the Atoms platform, key concepts, and terminology |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/smallest-inc/mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server