Skip to main content
Glama
jgottlieb84

agentline-mcp

by jgottlieb84

Agentline MCP

Give your AI agent a phone number, email, SMS, and voice calls — as MCP tools.

Install once in Claude Desktop, Cursor, Zed, Windsurf, or any MCP client, and your agent can provision phone numbers, capture 2FA codes, send SMS, place AI voice calls, and send/receive email directly.

Install

# requires uv — https://docs.astral.sh/uv/
uvx agentline-mcp

Or with pip:

pip install agentline-mcp
agentline-mcp

Related MCP server: AgentTrust MCP Server

Configure

Set your API key as an environment variable. Get one at agentline.co.

export AGENTLINE_API_KEY=ag_live_...

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "agentline": {
      "command": "uvx",
      "args": ["agentline-mcp"],
      "env": {
        "AGENTLINE_API_KEY": "ag_live_..."
      }
    }
  }
}

Cursor

~/.cursor/mcp.json:

{
  "mcpServers": {
    "agentline": {
      "command": "uvx",
      "args": ["agentline-mcp"],
      "env": {
        "AGENTLINE_API_KEY": "ag_live_..."
      }
    }
  }
}

Zed

Add to ~/.config/zed/settings.json:

{
  "context_servers": {
    "agentline": {
      "command": {
        "path": "uvx",
        "args": ["agentline-mcp"],
        "env": { "AGENTLINE_API_KEY": "ag_live_..." }
      }
    }
  }
}

Windsurf / Continue / any stdio MCP client

Use the same uvx agentline-mcp command and set AGENTLINE_API_KEY in the server's env. All major MCP clients share the same stdio launch pattern.

Tools exposed

Phone numbers

  • provision_number — get a phone number the agent can use

  • release_number — release when done (avoids monthly charges)

  • list_numbers — list provisioned numbers

SMS

  • send_sms — send an outbound SMS

  • wait_for_sms — long-poll for the next inbound SMS (with optional regex match)

  • capture_codethe killer flow. Provision + wait for 2FA code + release, in one call

Voice

  • make_call — place an outbound AI voice call (non-blocking, returns call_id)

  • get_call — status, transcript, summary for a call

  • hangup_call — end an in-progress call

Email

  • create_email_address — provision an email

  • list_email_addresses — list provisioned addresses

  • release_email_address — release

  • send_email — send an outbound email

  • wait_for_email — long-poll for an inbound email

  • capture_email_code — provision + wait for email-based verification code + release

Example prompts

"Sign me up for Substack using a throwaway phone number. Capture the 2FA code, paste it into the signup form, then release the number."

"Call +15551234567, pose as my assistant scheduling a dentist appointment for next Tuesday morning. Summarize the outcome when the call ends."

"Provision a new email address, start a free trial on example.com with it, and tell me the verification code that arrives."

Environment variables

Var

Required

Default

Notes

AGENTLINE_API_KEY

yes

Starts with ag_live_ or ag_test_

AGENTLINE_BASE_URL

no

https://api.agentline.dev

Override for self-hosted / staging

License

MIT

Available Tools

15 tools
capture_codeA

All-in-one 2FA capture: provision a fresh phone number, wait for an incoming SMS verification code (4-8 digits by default), then release the number. THE killer flow for signups.

Typical use: call this, take phone_number from the result and paste into the signup form, then code will be the extracted 2FA code once it arrives. If no code arrives in timeout seconds, code is null.

Set release_after=False if you plan to keep using the number.

ParametersJSON Schema
NameRequiredDescriptionDefault
area_codeNo
timeoutNo
release_afterNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full disclosure burden. It explains the sequence (provision, wait, release), the code length (4-8 digits), timeout behavior (null if no code), and the release flag. Missing details: immediate release after capture, rate limits, costs, or what happens to the number on timeout.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: three sentences covering purpose, typical use, and a key flag. It's front-loaded and efficient. A minor deduction for informal phrasing ('THE killer flow') which adds color but no substance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description covers return values (phone_number and code) and explains null for timeout. It addresses two of three parameters and the workflow. Missing: error handling, format of phone_number, and any country constraints. Adequate for a multi-step tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description must add value. It explains timeout (default 60) and release_after (default true, with advice). However, area_code is entirely absent from the description, leaving its purpose unclear. Partial coverage reduces score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it's for capturing 2FA codes via SMS, provisioning a phone number, waiting for a code, and releasing the number. It distinguishes from siblings like capture_email_code and wait_for_sms by emphasizing the all-in-one flow. The verb 'capture' and resource 'code' are specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a typical use case: call, get phone_number, paste into signup, then extract code. It advises when to set release_after=False. However, it doesn't explicitly contrast with alternatives or specify when not to use it (e.g., if a persistent number is needed). Area_code is not addressed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

capture_email_codeA

All-in-one email verification capture: provision an email address, wait for an incoming verification code (4-8 digits by default), release the address. Use for services that email verification codes instead of SMS.

Returns email_address (paste into the signup form) and code (the captured verification code). code is null on timeout.

ParametersJSON Schema
NameRequiredDescriptionDefault
local_partNo
timeoutNo
release_afterNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Describes the full process: provision, wait for code (4-8 digits by default), release address. Explains return values and timeout behavior. No annotations, so description carries the burden and does so well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is fairly concise with front-loaded purpose. Could be more concise by integrating the usage guideline, but overall efficient and structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers main flow and return values, but lacks details on what happens if release_after=false or how local_part is used. Also no output schema to supplement, leaving some gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but description does not explicitly map parameters like local_part, timeout, release_after to the process. While parameter names are somewhat self-explanatory, the description adds minimal value beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'All-in-one email verification capture' and differentiates from SMS-based verification by saying 'Use for services that email verification codes instead of SMS.' This distinguishes it from sibling tools like capture_code.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Directly states 'Use for services that email verification codes instead of SMS,' providing explicit guidance on when to use this tool vs alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_email_addressA

Provision a new email address for sending and receiving mail. Use this when signing up for services that require email verification — the agent gets a real inbox.

local_part is the part before the @ (e.g. "my-agent"); leave null to auto-generate. Returns id, email_address (full address to paste into forms), provider, status.

ParametersJSON Schema
NameRequiredDescriptionDefault
local_partNo

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden. It discloses that the agent gets a real inbox and returns specific fields (id, email_address, provider, status). However, it does not mention rate limits, authentication requirements, or any potential side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences plus a parameter explanation and return value list. It is front-loaded with the primary action and usage context, then details. Every sentence earns its place with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (1 parameter, no output schema), the description is complete. It covers the tool's purpose, usage scenario, parameter behavior, and return values. No gaps or missing information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It explains the purpose of local_part, states it can be null to auto-generate, and provides an example ('my-agent'). This adds significant meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool provisions a new email address for sending and receiving mail. It uses a specific verb (Provision) and resource (email address), and distinguishes from siblings like release_email_address, list_email_addresses, and send_email.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Describes when to use the tool: 'when signing up for services that require email verification'. It does not explicitly state when not to use it, but the context is clear and the usage scenario is well-defined.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_callA

Get status, transcript, and summary for a call. Call this after make_call to check whether the call has completed. Terminal statuses are completed, failed, no_answer, busy — anything else means the call is still in progress and you should poll again.

ParametersJSON Schema
NameRequiredDescriptionDefault
call_idYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description discloses read-like behavior and polling need, but could clarify idempotency and auth requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences, each serving a distinct purpose: purpose, usage timing, and status details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple polling tool; lists returned fields and usage context, but no output schema to supplement return format details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Single parameter call_id has 0% schema description coverage and description provides no additional meaning beyond the schema's title.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it retrieves status, transcript, and summary for a call, distinguishing it from siblings like make_call and hangup_call.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to call after make_call to check completion, lists terminal statuses, and implies polling for non-terminal states.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hangup_callA

End an in-progress call immediately. No-op / error if the call already terminated.

ParametersJSON Schema
NameRequiredDescriptionDefault
call_idYes

TDQS

A3.5/5.0
Behavior3/5

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 that the tool is a no-op or returns an error if the call already terminated, but lacks details on permissions, side effects, or response format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no redundant information. Every word contributes to clarity: action, state requirement, and edge-case behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description covers the core purpose and key behavioral nuance (no-op on already terminated). Missing details like error type or return value are minor. Overall adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has one required parameter (call_id) with no description, and schema description coverage is 0%. The description does not add any meaning for this parameter, such as format, source, or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('End an in-progress call') and the resource ('in-progress call'). It distinguishes from siblings like make_call or get_call, and includes the immediate effect and edge case ('No-op / error if already terminated').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives (e.g., get_call, list_numbers). It indicates the tool is for ending an active call but does not compare to sibling tools or provide exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_email_addressesA

List all email addresses currently provisioned on this account.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It states 'list' which implies a read operation, but lacks details on authentication, rate limits, or return format. No side effects are disclosed, leaving the agent underinformed about behavioral implications beyond the rudimentary action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with zero wasted words. It immediately conveys the tool's purpose without unnecessary elaboration, earning a perfect score for conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description is minimally adequate: it tells what the tool does but not the format of the returned data or any constraints. For a simple list operation, it is mostly complete, but could benefit from specifying the type of output (e.g., list of strings).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, and the description adds no parameter-level detail since there are none. Per rubric, 0 parameters yields a baseline of 4, and the description does not miss any parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List all email addresses currently provisioned on this account.' It specifies the verb (list), resource (email addresses), and scope (all, provisioned, on this account), distinguishing it from sibling tools like create_email_address and release_email_address.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. The description does not mention when to use list_numbers or other list tools, nor does it exclude scenarios. The context of siblings suggests it's for read operations, but no when-to-use or when-not-to-use information is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_numbersA

List all phone numbers currently provisioned on this account. Useful when the agent needs to find a number it forgot about, or audit what's active.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description must disclose behavior. It correctly indicates a read operation but does not mention any limitations like pagination or rate limits, which is acceptable for a simple list tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. The core purpose is front-loaded, and the usage guidance follows efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and lack of output schema, the description provides sufficient context for an agent to use it correctly, though it could optionally hint at the output structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no parameters, so the description does not need to add parameter details. The baseline score for 0 parameters is 4, and the description adequately implies that all numbers are returned.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List all phone numbers currently provisioned on this account,' which uses a specific verb and resource. It distinguishes well from sibling tools like provision_number or release_number.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit use cases: 'when the agent needs to find a number it forgot about, or audit what's active.' However, it does not mention when not to use the tool or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

make_callA

Place an outbound AI voice call. An AI agent answers when the recipient picks up and follows prompt as its system instructions; first_message is what it says on connect.

Returns immediately with the id (call_id) — the call runs in the background. Poll get_call(call_id) to see status, transcript, and summary once it completes.

voice is a Deepgram TTS voice (aura-asteria-en, aura-orion-en, …).

ParametersJSON Schema
NameRequiredDescriptionDefault
from_numberYes
to_numberYes
promptYes
first_messageNo
voiceNoaura-asteria-en
llm_modelNoclaude-sonnet-4-20250514
max_duration_secondsNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite no annotations, the description discloses key behavioral traits: immediate return with id, background execution, AI agent follows prompt and first_message. Sufficient for an async voice call tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short paragraphs, each sentence adds value. Front-loaded with purpose. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the main flow and async pattern but lacks details on error handling, max_duration_seconds behavior, and return value structure beyond id. Adequate for typical use but has gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Adds meaning beyond schema for prompt, first_message, and voice (explains purpose and examples). Schema coverage is 0%, so description compensates well but misses llm_model and max_duration_seconds.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'places an outbound AI voice call' with specific details about the AI agent and background execution. It distinguishes itself from siblings like get_call and hangup_call by explaining the async flow.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context for usage: outbound AI call, returns immediately, poll get_call for results. No explicit exclusions or alternatives, but the usage pattern is well implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

provision_numberA

Provision a phone number the agent can use — for receiving SMS (e.g. 2FA), sending SMS, or placing/receiving voice calls.

Use this BEFORE signing up for a service that asks for a phone number, or before making outbound calls. If phone_number is given, provisions that specific number; otherwise auto-searches by area_code.

Returns a dict with id, phone_number (E.164 format — pass this to forms), provider, and status. Save the returned phone_number — you need it to later release_number or wait_for_sms.

ParametersJSON Schema
NameRequiredDescriptionDefault
area_codeNo
country_codeNoUS
phone_numberNo

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries full burden. It clearly states that the tool provisions a number, returns a dict with specific fields (id, phone_number, provider, status), and mentions E.164 format. It also describes conditional behavior based on phone_number parameter. Minor omission: no mention of potential rate limits or authentication requirements, but the action is inherently non-destructive and well-explained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two well-structured paragraphs. First paragraph clearly states purpose and use cases. Second paragraph explains parameters, return value, and provides a crucial note to save the phone_number. Every sentence adds value; no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 3 parameters, no output schema, and no annotations, the description is comprehensive. It explains return fields, E.164 format, and references sibling tools (release_number, wait_for_sms). Missing details about limitations (e.g., provider availability, cost) but still sufficient for typical use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates well. It explains the logic: if phone_number is given, provision that specific number; otherwise auto-search by area_code. It also describes the return value fields. However, it does not explicitly mention the country_code parameter (default 'US'), leaving a slight gap. Overall, adds significant meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a clear verb 'Provision' and specifies the resource 'a phone number'. It explains the tool's capabilities (receiving SMS, sending SMS, voice calls) and distinguishes it from sibling tools like list_numbers (listing) and release_number (releasing). The purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use guidance: 'Use this BEFORE signing up for a service that asks for a phone number, or before making outbound calls.' It also explains the two modes (specific number vs. auto-search) and tells the user to save the returned phone_number for later use with release_number or wait_for_sms. This is excellent contextual advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

release_email_addressA

Release a provisioned email address. Pass the id returned from create_email_address (NOT the full email string).

ParametersJSON Schema
NameRequiredDescriptionDefault
address_idYes

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry full burden. It states 'release' implying mutation but does not disclose behavioral traits like reversibility, side effects, or required permissions, which is insufficient for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the purpose, and contains no extraneous information. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description covers the essential purpose and parameter usage. It lacks behavioral details, but given the complexity, it is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% but the description adds value by clarifying the parameter's origin (id from create_email_address) and distinguishing it from the email string. However, it does not specify format or constraints beyond the schema's type string.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 email address' with a specific verb and resource, distinguishing it from sibling tools like create_email_address or list_email_addresses.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly instructs to pass the id from create_email_address and not the full email string, providing clear guidance on parameter source and preventing misuse. However, it does not specify when not to use or name alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

release_numberA

Release a previously provisioned phone number. Call this when done to avoid ongoing Telnyx monthly charges. Pass the E.164 phone_number returned by provision_number.

ParametersJSON Schema
NameRequiredDescriptionDefault
phone_numberYes

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses cost implication (avoid monthly charges). No annotations, but description adds key behavioral context. Lacks mention of irreversibility, but implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficient sentences: first defines action, second gives when and how. No fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description fully covers purpose, usage, and parameter source.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Adds meaning beyond schema: specifies E.164 format and that the value should come from 'provision_number'. Schema only says 'string'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the action 'Release a previously provisioned phone number' with specific verb and resource. Distinguishes from sibling tools like 'provision_number'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use ('when done to avoid ongoing Telnyx monthly charges') and provides prerequisite ('Pass the E.164 phone_number returned by provision_number').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_emailB

Send an outbound email from a provisioned address. from_email must be one of your provisioned addresses.

ParametersJSON Schema
NameRequiredDescriptionDefault
from_emailYes
to_emailYes
subjectYes
bodyYes
body_htmlNo
reply_toNo

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description is brief and does not disclose behavioral traits beyond the sending action and the provisioned requirement. It lacks information on side effects, success/failure behavior, rate limits, or whether the email is sent immediately. Since no annotations are provided, the description carries full burden but fails to address these.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, using two sentences that directly state the purpose and a key constraint. Every word contributes, with no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 6 parameters, no output schema, and no annotations, the description is insufficiently complete. It does not mention prerequisites beyond provisioned address, does not explain return values, and does not cover optional parameters like body_html and reply_to. The agent would lack important context for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description only adds meaning to the from_email parameter by stating it must be provisioned. The other five parameters (to_email, subject, body, body_html, reply_to) receive no explanation beyond their names and types in the schema. This leaves the agent without guidance on formatting or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it sends an outbound email from a provisioned address, using specific verb and resource. It distinguishes from sibling tools like send_sms and wait_for_email by specifying email and outbound. No ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description only notes that from_email must be provisioned, but does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention any exclusions. Among siblings, there is no other email sender, so usage is implied but not explicitly recommended.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_smsA

Send an outbound SMS from a provisioned number. from_number must be a number you already provisioned; to_number is the recipient in E.164 format (e.g. "+15551234567"). Outbound US SMS, international SMS, and inbound SMS all work — Agentline's 10DLC campaign is approved across all major US carriers.

ParametersJSON Schema
NameRequiredDescriptionDefault
from_numberYes
to_numberYes
bodyYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses key behaviors: `from_number` must be provisioned, `to_number` must be in E.164 format, and details on carrier coverage and 10DLC campaign. This goes beyond the schema but could mention rate limits or length constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no fluff. It front-loads the main action and then provides necessary context. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (3 string params, no output schema), the description covers the essential purpose, number format requirements, and carrier scope. It is nearly complete, but missing potential body length limits.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, and the description adds meaning for `from_number` (provisioned) and `to_number` (E.164 format). However, `body` lacks elaboration (e.g., max length). It partially compensates for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Send an outbound SMS from a provisioned number.' This is specific and distinguishes it from sibling tools like send_email or make_call.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context on when to use the tool (e.g., with provisioned numbers and E.164 format) but does not explicitly state when not to use it or mention alternatives among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wait_for_emailA

Long-poll (blocking up to timeout seconds, max 180) for the next inbound email on a provisioned address. Use right after triggering an email (e.g. a 'check your email' signup step).

match is an optional regex run against the message body. Returns the message dict on match (includes subject, body_text, extracted_code), or {"message": null, "status": "timeout"} on timeout.

ParametersJSON Schema
NameRequiredDescriptionDefault
email_addressYes
timeoutNo
matchNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses blocking behavior (up to 180 seconds), timeout response format, and optional regex matching. This provides complete behavioral transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two paragraph structure with front-loaded purpose and usage, followed by parameter and return details. Every sentence is informative and necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and 3 parameters, the description covers blocking behavior, timeout, regex, and return format. It is self-contained and complete for selecting and invoking the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% schema coverage, the description explains the 'timeout' default and max, the 'match' regex functionality, and implicitly the email_address role. This adds significant meaning beyond the schema structure.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it 'long-polls for the next inbound email on a provisioned address,' using specific verbs and resource. It distinguishes from sibling tools like wait_for_sms and list_email_addresses.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use right after triggering an email (e.g. a 'check your email' signup step),' providing clear context. Does not mention when not to use or alternatives, but siblings are available.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wait_for_smsA

Long-poll (blocking up to timeout seconds, max 180) for the next inbound SMS on a provisioned number. Use this right AFTER submitting a form that triggers an SMS — call this to catch the reply.

match is an optional regex (e.g. \d{6} for a 6-digit code) — only messages matching the pattern satisfy the wait. Any inbound message satisfies it when match is None.

Returns the message dict (with body and auto-extracted extracted_code when present), or {"message": null, "status": "timeout"} if no message arrived in time.

ParametersJSON Schema
NameRequiredDescriptionDefault
phone_numberYes
timeoutNo
matchNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, but description fully discloses blocking behavior (long-poll), timeout max, optional regex, and return structure including timeout case. Does not cover auth or rate limits, but sufficient for a non-mutating operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four well-structured sentences with zero waste. Purpose, usage, parameter explanation, and return value are each in separate logical units.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers inputs, behavior, and output fully. No output schema, but return values are described in detail. Complete for an agent to decide invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage, but description explains phone_number implicitly, timeout with max 180, and match with default and behavior. Adds significant meaning beyond schema, though phone_number could be more explicit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it is a long-poll for the next inbound SMS on a provisioned number, with explicit verb and resource. Distinguishes from siblings like wait_for_email by specifying SMS focus.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to use after submitting a form that triggers an SMS, which provides context. Could mention alternatives or when not to use, but current guidance is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.1/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose. Even related tools like capture_code and wait_for_sms are differentiated by their level of abstraction (all-in-one vs. low-level blocking wait) and descriptions make the boundaries clear.

Naming Consistency5/5

All tool names use snake_case and follow a consistent verb_noun pattern (e.g., capture_code, create_email_address, send_sms). Minor deviations like provision_number instead of create_number are still interpretable and follow the same style.

Tool Count5/5

15 tools is well-scoped for the communication/verification domain. The set covers provisioning, sending, receiving, and releasing for both phone numbers and email, plus call handling, without being bloated.

Completeness4/5

Core CRUD-like operations are present for phone numbers and email (create/list/release, send/wait). The call lifecycle is covered (make, get, hangup). Missing are update operations for resources and call recording retrieval, but these are minor gaps for the primary use case.

Maintenance

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

Latest Blog Posts

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/jgottlieb84/agentline-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server