agentsim-mcp
OfficialClick on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@agentsim-mcpProvision a US number and wait for OTP"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
agentsim-mcp
MCP server that exposes AgentSIM challenge tools to AI coding assistants: Claude Code, Cursor, Windsurf, and any other MCP-compatible host. Primary tools: open_challenge, wait_for_verdict. Aliases: provision_number, wait_for_otp.
Setup
Claude Code
claude mcp add agentsim -e AGENTSIM_API_KEY=asm_live_xxx -- uvx agentsim-mcpClaude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"agentsim": {
"command": "uvx",
"args": ["agentsim-mcp"],
"env": {
"AGENTSIM_API_KEY": "asm_live_xxx"
}
}
}
}Cursor / Windsurf
Add agentsim-mcp as a stdio MCP server with AGENTSIM_API_KEY in the environment config.
Remote (no install)
Connect directly to the hosted MCP server without installing anything locally:
{
"mcpServers": {
"agentsim": {
"type": "streamable-http",
"url": "https://mcp.agentsim.dev/mcp",
"headers": {
"x-api-key": "asm_live_..."
}
}
}
}The hosted endpoint uses stateless HTTP and does not issue mcp-session-id headers. The session_id returned by AgentSIM tools identifies a challenge and remains valid across tool calls.
Related MCP server: Grizzly SMS MCP Server
Tools
Control-Plane Nouns (Recommended)
Tool | Description |
| Open an authentication challenge session — accepts channel (sms_otp | email_otp | magic_link | webauthn_required), returns session ID + identifier (phone number or email address) |
| Long-poll for the challenge verdict — returns structured outcome including otp_code, magic_link, webauthn_required, or policy_denied |
| List raw SMS messages received on a session |
| Release a session early (allocation returned to pool) |
| List all active sessions for this account |
Legacy Aliases (Backward Compatibility)
Tool | Maps to | Description |
|
| Provision a temporary programmable US number for SMS OTP — kept for backward compatibility |
|
| Long-poll until an OTP arrives — kept for backward compatibility |
Auth
Set AGENTSIM_API_KEY in your environment. Get your key at console.agentsim.dev.
Supported Countries
US (more coming soon)
Available Tools
5 toolsget_messagesAInspect
List all SMS messages received in this session without consuming the OTP.
Use this to inspect raw messages or check if an SMS arrived before calling wait_for_otp. Does NOT mark the OTP as consumed.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses key behavioral trait: non-destructive (does not consume OTP). However, it lacks details on response format, ordering, or pagination, though output schema likely covers those.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. Front-loaded with core action and key behavioral constraint. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with one parameter and output schema present, description covers purpose, usage guidance, and behavioral transparency sufficiently. No notable gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already provides a description for session_id. The tool description adds no further parameter-level information, so it meets baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'List all SMS messages received in this session' with specific verb and resource. It distinguishes from siblings by explicitly noting it does not consume the OTP, differentiating from wait_for_otp.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use guidance: 'Use this to inspect raw messages or check if an SMS arrived before calling wait_for_otp.' Also states what it does not do ('Does NOT mark the OTP as consumed'), framing alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_numbersAInspect
List active sessions, optionally filtered by agent_id.
Use this to check for leaked sessions or inspect what numbers are currently active in your account.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must explain behavior. It implies a read-only listing operation, but lacks details on permissions, side effects, or pagination. Adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: first sentence states purpose and optional parameter, second gives usage guidance. Extremely concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists (not shown), the description covers purpose, usage, and parameter adequately. The slight name mismatch is a gap, but otherwise complete for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It mentions the parameter 'agent_id' and its role as an optional filter, adding some meaning beyond type/default, but does not explain what an agent_id is.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List active sessions' with optional filtering, but the tool name 'list_numbers' suggests a different resource. This minor inconsistency reduces clarity slightly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use: 'check for leaked sessions or inspect what numbers are currently active.' It does not mention alternatives or when not to use, but context from siblings makes it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
provision_numberAInspect
Lease a temporary programmable phone number for receiving SMS OTP codes.
Returns the phone number (e164 format) and a session_id needed for all subsequent calls. The number is reserved for your session for ttl_seconds.
Next step: use the returned number on your target service to trigger an SMS,
then call wait_for_otp with the returned session_id.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears the full transparency burden. It discloses that the number is temporary, leased for a session, and will be released after ttl_seconds. It mentions the webhook option but does not detail expiration behavior or side effects. Overall, it provides good behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (three sentences) and front-loaded: first sentence states purpose, second sentence details output, third sentence gives action steps. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description does not need to detail return values. It covers key outputs (number, session_id) and next steps. It lacks preconditions or error cases but is complete for a provisioning tool. A minor gap is not mentioning what happens if agent_id is already in use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has descriptions for all parameters (agent_id, country, ttl_seconds, webhook_url). The description adds context about the lease duration and the next steps but does not significantly enhance parameter meaning beyond the schema. Baseline 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: leasing a temporary phone number for receiving SMS OTP codes. It specifies the output format (e164 number and session_id) and distinguishes it from sibling tools by mentioning the next step 'wait_for_otp'. No ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool and what steps follow (trigger SMS, then call wait_for_otp). It also notes the number is reserved for the session duration. While it doesn't explicitly state when not to use it or alternatives, the context from sibling tools is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
release_numberAInspect
Release a provisioned number back to the pool.
Always call this when you are done with the session — even on error — to avoid consuming pool capacity unnecessarily.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the main behavior (releasing a number) and emphasizes calling even on error to avoid capacity issues. However, it does not mention whether the release is irreversible or if there are any side effects, which would be helpful for full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences with no unnecessary words. The critical usage instruction is front-loaded, making it immediately actionable. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter) and the existence of an output schema, the description provides sufficient behavioral context (always call even on error). It is complete enough for an agent to use correctly, though it could optionally mention what the response looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The context indicates 0% schema description coverage, meaning the schema does not provide parameter descriptions (though the schema actually has a description for session_id, but according to context it is 0%). The tool description does not add any meaning to the single parameter (session_id) beyond what is in the schema, failing to compensate for low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Release a provisioned number back to the pool.' It uses a specific verb ('release') and resource ('provisioned number'), distinguishing it from sibling tools like provision_number (which allocates) and list_numbers (which lists).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to 'Always call this when you are done with the session — even on error — to avoid consuming pool capacity unnecessarily.' This provides clear when-to-use guidance and a rationale, effectively differentiating from alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_otpAInspect
Block until an SMS OTP arrives for this session, then return the code.
Polls the AgentSIM API for up to timeout_seconds. Returns the OTP code
and the message it was extracted from.
If the OTP does not arrive in time, raises a ToolError with advice on retrying.
Always call release_number after you have used the OTP.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description fully discloses blocking nature, polling mechanism, return values, and error handling. Mentions auto_reroute behavior on timeout, adding transparency beyond expected defaults.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five sentences, each with a distinct purpose: behavior, polling, return value, error handling, post-use instruction. No redundant or irrelevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a tool that waits for an OTP: covers blocking, timeout, retry, auto-reroute, and post-step. Output schema exists, so return values are documented elsewhere.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% coverage (no param descriptions in description), but schema itself includes descriptions for all parameters. The description adds context by linking timeout_seconds to polling time and auto_reroute to retry logic, providing value beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool blocks until an OTP arrives, polls the API, and returns the code and message. The verb 'wait' and resource 'OTP' are specific, and it distinguishes itself from siblings like release_number by mentioning post-use actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises to call release_number after OTP use, and describes behavior on timeout (raises ToolError with retry advice). Includes auto_reroute option, providing clear when-to-use and post-condition steps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
5 tool updates
v0.19.0- First observed
get_messages - First observed
list_numbers - First observed
provision_number - First observed
release_number - First observed
wait_for_otp
TDQS
Each tool has a distinct, non-overlapping purpose: provisioning, releasing, waiting for OTP, listing messages, and listing sessions. No ambiguity.
All tool names follow a consistent verb_noun pattern with underscores, e.g., provision_number, release_number, wait_for_otp.
Five tools is exactly right for the domain of temporary phone number management, covering all necessary operations without bloat.
The tool surface covers the full lifecycle: provision, release, wait for OTP, list messages, and list sessions. No obvious gaps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Give AI agents a phone number. Voice calls, SMS, and phone number management for MCP clients.
Give AI agents real phone numbers, messages, and voice calls via MCP.
Phone, SMS & email for AI agents — one remote MCP endpoint, OAuth login, zero install.
The Telnyx MCP server is an official implementation of the Model Context Protocol that enables AI clients (like Claude Desktop, Cursor, and OpenAI Agents) to interact with Telnyx's telephony, messaging, and AI assistant APIs. It provides comprehensive capabilities including making and managing phone calls, sending SMS/MMS messages, purchasing and configuring phone numbers, creating AI assistants with custom instructions, managing cloud storage buckets, scraping and embedding website content, and handling integration secrets. The server exists as both a local implementation and a remotely hosted version, allowing developers to integrate real-world communication infrastructure directly into AI applications.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server for provisioning dedicated real-SIM US phone numbers, receiving inbound SMS, and extracting OTP codes. Built for AI agents automating phone verification workflows.471MIT
- AlicenseAqualityDmaintenanceMCP server for integrating with Grizzly SMS platform to rent virtual numbers, receive SMS verification codes, and manage activations directly from AI assistants like Cursor, Claude Desktop, and OpenClaw.815MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that gives AI agents disposable email addresses and real phone numbers with automatic OTP extraction and self-destructing identities.MIT
- FlicenseNot gradedqualityBmaintenanceAn MCP server enabling AI assistants to make voice calls, send SMS/MMS, and manage group conversations using Twilio and OpenAI.5-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/agentsimdev/agentsim-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server