> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to the Telnyx MCP server

The Telnyx MCP connector routes your AI agent's tool calls to Telnyx's own MCP server through Scalekit. Each user signs in to Telnyx once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 6 tools.

**Authentication:** OAuth 2.1/DCR
**Categories:** Communication, AI
**Tools:** 6: 5 read, 0 write, 1 destructive
**Users sign in with:** OAuth
**OAuth app:** Scalekit's or your own
**Built by:** Vendor MCP
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=TELNYXMCP)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Telnyx MCP connection

   In **AgentKit > Connections**, create a Telnyx MCP connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

   Scalekit credentials are available for Telnyx MCP server, so you don't need to register an OAuth app.

4. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'telnyxmcp'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Telnyx MCP:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'telnyxmcp_list_api_endpoints',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "telnyxmcp"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize Telnyx MCP:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="telnyxmcp_list_api_endpoints",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user signs in once. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'telnyxmcp_get_api_endpoint_schema',
  toolInput: {
    endpoint: '<endpoint>',
  },
  connector: 'telnyxmcp',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="telnyxmcp_get_api_endpoint_schema",
    tool_input={
        "endpoint": "<endpoint>",
    },
    connection_name="telnyxmcp",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `telnyxmcp_get_api_endpoint_schema`

GetApiEndpointSchema · Read-only

Get the JSON schema for a named Telnyx API endpoint. Call this after finding an endpoint with list_api_endpoints; the returned schema tells you which arguments invoke_api_endpoint expects.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `endpoint` (`string`, required): The name of the endpoint to get the schema for, as returned by list_api_endpoints.

Example input: `{"endpoint":"<endpoint>"}`

### `telnyxmcp_list_api_endpoints`

ListApiEndpoints · Read-only

List or search all endpoints in the Telnyx API. Use this to discover available endpoints by name, resource, operation, or tag before fetching an endpoint's schema with get_api_endpoint_schema and invoking it with invoke_api_endpoint.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `search_query` (`string`, optional): Optional search query to filter endpoints. Provide a partial name, resource, operation, or tag (e.g. 'messages', 'phone numbers', 'create call').

Example input: `{}`

### `telnyxmcp_open_number_intelligence`

OpenNumberIntelligence · Read-only

Open the Telnyx Number Intelligence MCP App for phone number lookup, validation, and enrichment workflows.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `action` (`string`, optional): Optional no-op app opener action; omit to open the app. One of: `open`. Default: `open`.

Example input: `{}`

### `telnyxmcp_open_usage_cost_explorer`

OpenUsageCostExplorer · Read-only

Open the Telnyx Usage & Cost Explorer MCP App for usage and cost analysis.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `action` (`string`, optional): Optional no-op app opener action; omit to open the app. One of: `open`. Default: `open`.

Example input: `{}`

### `telnyxmcp_open_voice_monitor`

OpenVoiceMonitor · Read-only

Open the Telnyx Voice Monitor MCP App for observing and troubleshooting voice traffic.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `action` (`string`, optional): Optional no-op app opener action; omit to open the app. One of: `open`. Default: `open`.

Example input: `{}`

### `telnyxmcp_invoke_api_endpoint`

InvokeApiEndpoint · Destructive

Invoke any Telnyx API endpoint by name. This is a generic executor that dispatches to the underlying Telnyx REST API: first find the endpoint with list_api_endpoints, fetch its argument schema with get_api_endpoint_schema, then call this tool with the endpoint name and matching args. Can perform writes (create, update, delete), so use with care.

Read only: no. Destructive: yes. Idempotent (safe to retry): no.

Inputs:

- `args` (`object`, required): Arguments for the endpoint, matching the schema returned by get_api_endpoint_schema. Pass as a JSON object of parameter names to values.
- `endpoint_name` (`string`, required): The name of the Telnyx API endpoint to invoke, as returned by list_api_endpoints.

Example input: `{"args":{},"endpoint_name":"<endpoint_name>"}`

## Related

Other Communication connectors ([all 57](/agentkit/connectors/?category=communication)):

- [Gmail](/agentkit/connectors/gmail/): Scalekit connector, OAuth, 48 tools
- [Google Calendar](/agentkit/connectors/googlecalendar/): Scalekit connector, OAuth, 30 tools
- [Slack](/agentkit/connectors/slack/): Scalekit connector, OAuth, 96 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
