> **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 Photon MCP server

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

**Authentication:** OAuth 2.1/DCR
**Categories:** AI, Communication
**Tools:** 140: 80 read, 42 write, 18 destructive
**Users sign in with:** OAuth
**OAuth app:** Your own Photon MCP server app
**Built by:** Vendor MCP
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=PHOTONMCP)

## 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 Photon MCP connection

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

4. ### Register an OAuth app

   Photon MCP server connections use your own OAuth app. Register one with Photon MCP server and add the redirect URI you copied.

   Then enter the app's Client ID and Client Secret on the Photon MCP connection.

5. ### 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 = 'photonmcp'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Photon 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: 'photonmcp_getaccount',
     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 = "photonmcp"
   identifier = "user_123"

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

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="photonmcp_getaccount",
       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: 'photonmcp_checkprojectslugavailability',
  toolInput: {
    path: {},
    query: {},
  },
  connector: 'photonmcp',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="photonmcp_checkprojectslugavailability",
    tool_input={
        "path": {},
        "query": {},
    },
    connection_name="photonmcp",
    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.

### `photonmcp_checkprojectslugavailability`

Check project slug availability · Read-only

Check project slug availability

Reports whether createProject would accept `slug` right now. Advisory: only the create itself allocates, so a caller must still handle SLUG_TAKEN. A malformed slug is rejected on shape; a reserved slug, a slug held by an active project, and a slug retired with a deleted project each answer `available: false` with a reason.

API reference: https://photon.codes/docs/beta/api-reference/projects/check-project-slug-availability

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, required): No description.

Example input: `{"path":{},"query":{}}`

### `photonmcp_countfilteredverificationcodes`

Count filtered verification codes · Read-only

Count filtered verification codes

Counts the verification codes Photon kept from this project's dedicated lines, optionally for one `platform`. Without `receivedAfter` and `receivedBefore` the window is the 30 days before the request; a window longer than 366 days is rejected. The response echoes the window it resolved, so the number always says which period it covers. Requires the platforms:read permission bound to the project resource in the path.

API reference: https://photon.codes/docs/beta/api-reference/verification-codes/count-filtered-verification-codes

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, optional): No description.

Example input: `{"path":{}}`

### `photonmcp_countmessages`

Count Messages · Read-only

Count Messages

Counts matching Messages before pagination. Delivery updates do not add Messages; results are eventually consistent.

API reference: https://photon.codes/docs/beta/api-reference/messages/count-messages

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, optional): No description.

Example input: `{"path":{}}`

### `photonmcp_countprojects`

Count projects · Read-only

Count projects

Counts the projects the same filter would list. The count is read from the primary, so it is authoritative rather than replica-lagged.

API reference: https://photon.codes/docs/beta/api-reference/projects/count-projects

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, optional): No description.

Example input: `{"path":{}}`

### `photonmcp_countresourcefilteredverificationcodes`

Count a line's filtered verification codes · Read-only

Count a line's filtered verification codes

Counts the verification codes Photon kept from one dedicated line. Without `receivedAfter` and `receivedBefore` the window is the 30 days before the request; a window longer than 366 days is rejected. The response echoes the window it resolved, so the number always says which period it covers. Answers 404 unless the project holds the resource now. Codes from an earlier tenure stay in the project-wide list. Filter by `platform` — a dedicated line receives both iMessage and WhatsApp. Requires the platforms:read permission bound to the project resource in the path.

API reference: https://photon.codes/docs/beta/api-reference/verification-codes/count-a-lines-filtered-verification-codes

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, optional): No description.

Example input: `{"path":{}}`

### `photonmcp_countspaces`

Count Spaces · Read-only

Count Spaces

Counts distinct Spaces matching the list filters; multiple matching Messages count once. Results are eventually consistent.

API reference: https://photon.codes/docs/beta/api-reference/spaces/count-spaces

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, optional): No description.

Example input: `{"path":{}}`

### `photonmcp_countusers`

Count Users · Read-only

Count Users

Counts distinct Users matching the list filters, including incoming senders or outgoing recipients selected by Message filters. Results are eventually consistent.

API reference: https://photon.codes/docs/beta/api-reference/users/count-users

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, optional): No description.

Example input: `{"path":{}}`

### `photonmcp_getaccount`

Get account · Read-only

Get account

Returns the profile of the authenticated account. The account is selected from the credential rather than a request parameter. A missing or deleted account is reported as an error instead of an empty profile.

API reference: https://photon.codes/docs/beta/api-reference/account/get-account

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

Inputs: none.

Example input: `{}`

### `photonmcp_getagentprofile`

Get agent profile · Read-only

Get agent profile

Returns the agent profile belonging to the identified project. The profile is project-scoped and is distinct from the authenticated account's personal profile. Use the dedicated avatar operations when uploading or removing an agent avatar.

API reference: https://photon.codes/docs/beta/api-reference/agent-profile/get-agent-profile

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_getattachment`

Get attachment · Read-only

Get attachment

Returns an Attachment's metadata. Use the content endpoint to download its bytes.

API reference: https://photon.codes/docs/beta/api-reference/attachments/get-attachment

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_getbillingoperation`

Get billing operation · Read-only

Get billing operation

Returns the authoritative state of a billing operation belonging to the selected project. Use it to recover or poll a plan-change request until the operation reaches success or failure. An accepted request is not evidence that the plan change has completed.

API reference: https://photon.codes/docs/beta/api-reference/project-billing/get-billing-operation

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_getbillingoverview`

Get project billing overview · Read-only

Get project billing overview

Returns the selected project's plan information, entitlements and current billing-period usage. This operation reads project billing state; it does not change plans or the payer's payment method. Organization-level plans are available through the organization billing overview.

API reference: https://photon.codes/docs/beta/api-reference/project-billing/get-project-billing-overview

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_getcurrentorganization`

Read the credential's organization · Read-only

Read the credential's organization

Reads the organization the credential is bound to: the organization an OAuth grant was consented for, or a Service Identity's own organization. Use it to discover which organization an integration acts for, and pass its organizationId to organization-scoped operations.

API reference: https://photon.codes/docs/beta/api-reference/organizations/read-the-credentials-organization

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

Inputs: none.

Example input: `{}`

### `photonmcp_getdefaultvoiceprofile`

Get default Voice profile · Read-only

Get default Voice profile

Gets the profile currently selected as the project default, including its optional inbound delivery state. Requires platforms:read bound to the path project.

API reference: https://photon.codes/docs/beta/api-reference/voice/get-default-voice-profile

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_getdeveloperotelqueryschema`

Get the Developer OTel query schema · Read-only

Get the Developer OTel query schema

Returns the logical tables and columns the advanced query endpoint can read, together with the supported SQL capabilities and request limits. Callers, especially agents, should read this schema instead of guessing column names.

API reference: https://photon.codes/docs/beta/api-reference/developer-otel/get-the-developer-otel-query-schema

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_getdevelopertrace`

Get a Developer trace · Read-only

Get a Developer trace

Returns the complete Project-visible stored OTLP trace without rewriting Span fields or attributes.

API reference: https://photon.codes/docs/beta/api-reference/developer-otel/get-a-developer-trace

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_geteffectiveterms`

Get the project's effective billing terms · Read-only

Get the project's effective billing terms

Returns what the selected project is billed on now, per category it holds: the plan as its subscription has it, with any override applied, each fixed charge at the subscription's price and quantity, and resolved entitlements; where the plan comes from; how invoices are paid; the current period and next billing date; and any downgrade or cancellation waiting for the period end. Supply both organizationId and projectId; the organization must pay for the project. This operation does not change billing.

API reference: https://photon.codes/docs/beta/api-reference/organization-billing/get-the-projects-effective-billing-terms

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_getemaildeliverymetrics`

Get email delivery metrics · Read-only

Get email delivery metrics

Reads cached supplementary email series for the exact Project and rolling day or week. Coverage is eligible single-recipient messages; multi-recipient and simulator traffic is excluded. Observed complaints include reported feedback only. Missing data is distinct from zero. Original timestamps and availability are preserved; freshness describes retrieval, not complete event coverage. These series are not complete recipient totals, billing totals or Photon reputation rates. This read never queries the delivery provider or authorizes sending. Requires platforms:read for the path Project.

API reference: https://photon.codes/docs/beta/api-reference/email/get-email-delivery-metrics

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, optional): No description.

Example input: `{"path":{}}`

### `photonmcp_getemailsendingpolicies`

Get email sending policies · Read-only

Get email sending policies

Reads Organization email recipient allowances shared across all its Projects, with rolling 60-second and 24-hour windows. Also returns Project and Organization review status and Photon policy pauses. Projects have no separate recipient quota. These limits are independent of subscription allowances. A policy pause blocks sending; an unpaused policy does not guarantee that every domain, suppression or account check permits a send. Requires platforms:read for the path Project.

API reference: https://photon.codes/docs/beta/api-reference/email/get-email-sending-policies

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_getmessage`

Get a Message · Read-only

Get a Message

Returns one stored Message by canonical Photon Message ID on any supported contract platform. The globally unique Message ID is resolved within the authorized Project. Unsupported platform Messages are outside this collection and return MESSAGE_NOT_FOUND.

API reference: https://photon.codes/docs/beta/api-reference/messages/get-a-message

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

Inputs:

- `path` (`object`, required): No description.
- `headers` (`object`, optional): No description.

Example input: `{"path":{}}`

### `photonmcp_getmessagemetricsbackfill`

Get metrics backfill status · Read-only

Get metrics backfill status

Returns historical metrics update progress. Completion reflects lastVerifiedAt; queries remain available during updates.

API reference: https://photon.codes/docs/beta/api-reference/messaging-%26-voice-metrics/get-metrics-backfill-status

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_getmessagemetricssqlschema`

Get metrics SQL schema · Read-only

Get metrics SQL schema

Returns the message_events and call_events SQL schema, supported queries, and limits for the selected API version.

API reference: https://photon.codes/docs/beta/api-reference/messaging-%26-voice-metrics/get-metrics-sql-schema

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_getoperation`

Get operation · Read-only

Get operation

Reads one operation using the same operation representation as creation and list. The API includes detail.setupUrl only with platforms:write for this project. This is the polling endpoint every asynchronous request here points its Location at, and it resolves from the moment that request is accepted — an operation is committed before its work is dispatched, so there is no window in which the URL 404s. Poll until `state` is one of `succeeded`, `failed` or `cancelled`, pacing from the Retry-After the accepting response returned. While an email domain waits for DNS, `detail` always contains the manual records and may additionally contain `automaticSetup` with a signed provider URL to open separately. Once the operation has produced a resource, the response carries that resource too, so the poll that finishes is also the one that tells you what you got. `succeeded` means the work is done; billing runs behind it and is not something the caller waits on. Operations are never purged, so a 404 means the id was never this project's. Requires the platforms:read permission bound to the project resource in the path.

API reference: https://photon.codes/docs/beta/api-reference/operations/get-operation

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_getorganizationbillingoverview`

Get organization billing overview · Read-only

Get organization billing overview

Returns the selected organization’s billing subscription and entitlementsVersion. The subscription can be null. Read the returned plan, charges and entitlements to inspect organization billing; this operation does not purchase or change a plan.

API reference: https://photon.codes/docs/beta/api-reference/organization-billing/get-organization-billing-overview

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_getorganizationcredit`

Get organization credit · Read-only

Get organization credit

Returns the credit the selected organization holds: on credit notes, such as the unused time of a plan an upgrade replaced or the unused days of a prorated fixed charge it released, and in its wallet: the credit Photon granted it, such as a new account's first organization's welcome credit, and any prepaid credit it bought. It offsets that organization's invoices of any kind except one-off invoices, credit notes first. Reading it does not apply or change credit.

API reference: https://photon.codes/docs/beta/api-reference/organization-billing/get-organization-credit

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_getorganizationpaymentmethod`

Get organization payment method · Read-only

Get organization payment method

Reports whether the selected organization has a card on file and returns its documented payment-method metadata. Reading this endpoint does not collect a new card or create a checkout session.

API reference: https://photon.codes/docs/beta/api-reference/organization-billing/get-organization-payment-method

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_getorganizationterms`

Get the organization's effective billing terms · Read-only

Get the organization's effective billing terms

Returns what the selected organization is billed on now on its own subscription, such as SSO and 10DLC campaigns: the plan as the subscription has it, with any override applied, each fixed charge at the subscription's price and the quantity the organization holds, and resolved entitlements; where the plan comes from; how invoices are paid; the current period and next billing date; and any downgrade or cancellation waiting for the period end. subscription has a project subscription's terms without its category, and is null when the organization holds none. Project subscriptions are read per project. This operation does not change billing.

API reference: https://photon.codes/docs/beta/api-reference/organization-billing/get-the-organizations-effective-billing-terms

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_getproject`

Get project · Read-only

Get project

Returns the identified project's settings for an authorized caller. The credential must be allowed to access that project; possession of an unrelated project's key does not provide access. Missing and deleted projects are reported through the documented error responses.

API reference: https://photon.codes/docs/beta/api-reference/projects/get-project

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_getprojectclosurestatus`

Get project closure status · Read-only

Get project closure status

Returns closure progress for projectId within organizationId, including deletionOperationId, domain progress and ready. This read operation does not initiate deletion.

API reference: https://photon.codes/docs/beta/api-reference/projects/get-project-closure-status

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, required): No description.

Example input: `{"path":{},"query":{}}`

### `photonmcp_getprojectimessageplatform`

Get project iMessage platform · Read-only

Get project iMessage platform

Reports whether the project is on shared or dedicated iMessage lines, derived from its billing entitlements. Shared mode carries the seat cap. Both say whether a dedicated line requested now would be assigned without waiting. Requires the platforms:read permission bound to the project resource in the path.

API reference: https://photon.codes/docs/beta/api-reference/platforms/get-project-imessage-platform

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_getprojectwhatsappplatform`

Get project WhatsApp platform · Read-only

Get project WhatsApp platform

Reports whether the project is on shared or dedicated WhatsApp lines, derived from its billing entitlements. Shared mode carries the seat cap. Both say whether a dedicated line requested now would be assigned without waiting. Requires the platforms:read permission bound to the project resource in the path.

API reference: https://photon.codes/docs/beta/api-reference/platforms/get-project-whatsapp-platform

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_getresource`

Get resource · Read-only

Get resource

Reads one resource the project holds. A released number stays readable and reads `retired`, because it remains part of this project's history. A dedicated line given back does NOT: returning it to inventory is what makes it claimable by someone else, so it answers 404 and the operation that returned it is the record that this project once held it. Requires the platforms:read permission bound to the project resource in the path.

API reference: https://photon.codes/docs/beta/api-reference/resources/get-resource

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_getsharedlineassignment`

Get shared line assignment · Read-only

Get shared line assignment

Reads one shared line assignment. Requires the platforms:read permission bound to the project resource in the path.

API reference: https://photon.codes/docs/beta/api-reference/shared-line-assignments/get-shared-line-assignment

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_getsmslinecampaignassignment`

Get SMS line campaign assignment · Read-only

Get SMS line campaign assignment

Read the last confirmed campaign and current eligibility. Follow changes through their operations. Eligibility is a control-plane assessment, not a delivery or recipient-consent guarantee.

API reference: https://photon.codes/docs/beta/api-reference/sms-campaigns/get-sms-line-campaign-assignment

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_getspace`

Get a Space · Read-only

Get a Space

Returns one stored Space by canonical Photon Space ID. A Space of a kind its platform does not support returns OPERATION_UNAVAILABLE.

API reference: https://photon.codes/docs/beta/api-reference/spaces/get-a-space

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

Inputs:

- `path` (`object`, required): No description.
- `headers` (`object`, optional): No description.

Example input: `{"path":{}}`

### `photonmcp_gettendlcbrand`

Get a redacted brand · Read-only

Get a redacted brand

Returns the redacted registration record for brandId within the selected organization. Use this representation to inspect registration state; it does not return every sensitive field originally submitted when the brand was registered. Supply organization_id for the organization that owns the registration.

API reference: https://photon.codes/docs/beta/api-reference/10dlc-brands/get-a-redacted-brand

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_gettendlcbrandotp`

Get sole-proprietor OTP status · Read-only

Get sole-proprietor OTP status

Returns the redacted one-time-password verification state for an organization-owned brand. OTP verification applies only to sole-proprietor brands. Reading this endpoint does not request another code or verify a supplied code; use the trigger and verification operations for those actions. Supply organization_id for the organization that owns the registration.

API reference: https://photon.codes/docs/beta/api-reference/10dlc-brand-otp/get-sole-proprietor-otp-status

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_gettendlccampaign`

Get a campaign · Read-only

Get a campaign

Returns the registration record and current state of campaignId within the selected organization. This is the read operation for observing a campaign after registration or correction; a successful read does not itself indicate that registration has been approved. Supply organization_id for the organization that owns the registration.

API reference: https://photon.codes/docs/beta/api-reference/10dlc-campaigns/get-a-campaign

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_gettendlccampaignfees`

Get campaign fees · Read-only

Get campaign fees

Returns what registering a campaign bills the selected organization: the non-refundable registration fee, charged again on every resubmission, and the monthly fee each campaign bills from carrier approval. Amounts are list prices read from billing; tax is not included. Show them before creating or resubmitting a campaign.

API reference: https://photon.codes/docs/beta/api-reference/10dlc-campaigns/get-campaign-fees

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_getuser`

Get an User · Read-only

Get an User

Returns one User after refreshing its Human or Agent classification and project ownership where supported. iMessage email identities retain their producer-observed classification and ownership because no current email ownership lookup is available. WhatsApp, WhatsApp Business and iMessage perform no provider fetch; only SMS Human classifications perform a phone number lookup. Current-project Agents expose resourceId; external-project Agents expose only pairwise managedBy. Conditional response evaluation uses the post-reconciliation representation. Stored reads use each platform definition; projection requires adapter support.

API reference: https://photon.codes/docs/beta/api-reference/users/get-an-user

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

Inputs:

- `path` (`object`, required): No description.
- `headers` (`object`, optional): No description.

Example input: `{"path":{}}`

### `photonmcp_getvoicelineprofileassignment`

Get Voice line profile assignment · Read-only

Get Voice line profile assignment

Gets the explicit additional-profile override for an owned Voice-capable line. A line following the project default returns 200 without profileId. Requires platforms:read bound to the path project.

API reference: https://photon.codes/docs/beta/api-reference/voice/get-voice-line-profile-assignment

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_getvoiceprofile`

Get Voice profile · Read-only

Get Voice profile

Gets one reusable Voice profile, including its optional inbound delivery state. Requires platforms:read bound to the path project.

API reference: https://photon.codes/docs/beta/api-reference/voice/get-voice-profile

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_getwebhookdestination`

Get webhook destination · Read-only

Get webhook destination

Returns the configuration of one webhook destination belonging to the selected project. Missing or deleted destinations are reported as errors. This read does not disclose the signing secret returned when the destination or a secret rotation was created.

API reference: https://photon.codes/docs/beta/api-reference/webhook-destinations/get-webhook-destination

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_getwebhookeventschema`

Get webhook event schema · Read-only

Get webhook event schema

Returns the published reader JSON Schema for eventType in the requested webhook apiVersion. Use it to interpret events for that exact payload version. The response media type is application/schema+json; an authorized conditional request may return 304 without a body. Unsupported event/version combinations are rejected.

API reference: https://photon.codes/docs/beta/api-reference/webhook-event-catalog/get-webhook-event-schema

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, required): No description.

Example input: `{"path":{},"query":{}}`

### `photonmcp_getwhatsappbusinessaccount`

Get WhatsApp Business account · Read-only

Get WhatsApp Business account

Gets the one WhatsApp Business Account this project has connected, with its number of live senders. Senders are resources and are listed by GET /platforms/resources?ability=whatsapp_business. The account is not a resource and carries no access token. Meta's retained numbers are listed separately by GET /platforms/whatsapp-business/account/phone-numbers. `subscribedAt` is absent until our app is attached to the account's webhooks. Requires the platforms:read permission bound to the project resource in the path.

API reference: https://photon.codes/docs/beta/api-reference/whatsapp-business/get-whatsapp-business-account

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_getwhatsappsharedlineassignment`

Get WhatsApp shared line assignment · Read-only

Get WhatsApp shared line assignment

Reads one WhatsApp shared line assignment. Requires the platforms:read permission bound to the project resource in the path.

API reference: https://photon.codes/docs/beta/api-reference/whatsapp-shared-line-assignments/get-whatsapp-shared-line-assignment

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_listaccountservicekeys`

List Account Service Keys · Read-only

List Account Service Keys

Returns metadata for the authenticated account's unrevoked service keys, including expired keys, ordered newest first. Secret values are not returned; a key's credential is disclosed only when that key is created.

API reference: https://photon.codes/docs/beta/api-reference/account-service-keys/list-account-service-keys

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

Inputs: none.

Example input: `{}`

### `photonmcp_listattachments`

List attachments · Read-only

List attachments

Lists the Project's Attachment metadata, with optional time filters.

API reference: https://photon.codes/docs/beta/api-reference/attachments/list-attachments

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, optional): No description.

Example input: `{"path":{}}`

### `photonmcp_listbillingplans`

List billing plans · Read-only

List billing plans

Lists the billing plan catalog, grouped by their public plan-metadata type. Use the returned plan information when choosing the category and planCode for a plan change. The catalog is the same for every project, and reading it does not purchase a plan.

API reference: https://photon.codes/docs/beta/api-reference/project-billing/list-billing-plans

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_listcreditactivity`

List credit activity · Read-only

List credit activity

Returns one page of how the selected organization's credit balance changed, newest first: credit notes issued and credit granted, credit applied to invoices, credit restored when the change an invoice paid for never applied, and credit voided. Each entry names the credit note (none for granted credit), the invoice when there is one, and the charge and subscription the credit note credits, or that the credit was a grant. Pass nextPage as page to read further. This operation does not change billing.

API reference: https://photon.codes/docs/beta/api-reference/organization-billing/list-credit-activity

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, optional): No description.

Example input: `{"path":{}}`

### `photonmcp_listdeveloperotellogs`

List Developer OTel log records · Read-only

List Developer OTel log records

Returns Project-visible Developer LogRecords in Timestamp, TraceId, SpanId descending order. The from/to range uses RFC 3339 timestamps at millisecond precision. Keep the range and filters fixed while incrementing offset; no total or page token is calculated.

API reference: https://photon.codes/docs/beta/api-reference/developer-otel/list-developer-otel-log-records

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, required): No description.

Example input: `{"path":{},"query":{}}`

### `photonmcp_listdevelopertraces`

List Developer traces · Read-only

List Developer traces

Returns root Span summaries in Timestamp and TraceId descending order. The from/to range uses RFC 3339 timestamps at millisecond precision. Keep the range and filters fixed while incrementing offset; no total or page token is calculated.

API reference: https://photon.codes/docs/beta/api-reference/developer-otel/list-developer-traces

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, required): No description.

Example input: `{"path":{},"query":{}}`

### `photonmcp_listemailrecommendations`

List email recommendations · Read-only

List email recommendations

Reads Photon guidance from stored sending policies, sending setup and domain checks. Project and Organization restrictions repeat on each page of domain observations. Follow nextPageToken until hasMore is false; observations describe only the current page. Recommendations are advisory reads, never permission to send or resume. Reputation-rate guidance and supplementary delivery advice are explicitly unavailable until their sources are integrated. An empty list does not indicate healthy reputation or resolved findings. Requires platforms:read for the path Project.

API reference: https://photon.codes/docs/beta/api-reference/email/list-email-recommendations

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, optional): No description.

Example input: `{"path":{}}`

### `photonmcp_listfilteredverificationcodes`

List filtered verification codes · Read-only

List filtered verification codes

Lists the verification codes Photon kept from this project's dedicated lines. Inbound messages that carry a one-time code are filtered before delivery; this is the record that they arrived, so a quiet line can be told apart from a broken one. It records the receiving line, its platform and when the code arrived — never the code itself. Each entry names the dedicated line (`resourceId`) that received it. Newest first, within an optional inclusive `receivedAfter`/`receivedBefore` window. A page may hold fewer than `pageSize` entries and still return a `nextPageToken`; only its absence means the end. Filter by `platform`; to read one line, use its own filtered-otp path. Requires the platforms:read permission bound to the project resource in the path.

API reference: https://photon.codes/docs/beta/api-reference/verification-codes/list-filtered-verification-codes

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, optional): No description.

Example input: `{"path":{}}`

### `photonmcp_listinvoices`

List invoices · Read-only

List invoices

Returns one page of the selected organization's invoices, newest first: every invoice issued to it with a nonzero total or actual charges, including charges fully paid by credit; drafts and empty invoices are excluded. Each names what it charged the organization's own subscription and each project. Pass subject to list only the invoices that charge the organization itself or one of its projects, and nextCursor as cursor to read further. Listing invoices does not make a payment or modify a subscription.

API reference: https://photon.codes/docs/beta/api-reference/organization-billing/list-invoices

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, optional): No description.

Example input: `{"path":{}}`

### `photonmcp_listmessages`

List Messages · Read-only

List Messages

Lists the Project's Messages, with optional resource, conversation, and time filters. Results are eventually consistent.

API reference: https://photon.codes/docs/beta/api-reference/messages/list-messages

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, optional): No description.

Example input: `{"path":{}}`

### `photonmcp_listnumberareacodes`

List number area codes · Read-only

List number area codes

Lists current provider coverage for US local numbers, sorted and deduplicated. Coverage does not guarantee inventory carrying every required feature. New area-specific purchases must use a listed code; accepted purchases keep waiting if coverage later changes. Requires platforms:read for the path project.

API reference: https://photon.codes/docs/beta/api-reference/sms-numbers/list-number-area-codes

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, required): No description.

Example input: `{"path":{},"query":{}}`

### `photonmcp_listnumbercountries`

List number countries · Read-only

List number countries

Lists supported purchase countries independently of current provider inventory. Requires platforms:read for the path project.

API reference: https://photon.codes/docs/beta/api-reference/sms-numbers/list-number-countries

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_listoperations`

List operations · Read-only

List operations

Lists the project's operations using the same operation representation as creation and GET. The API includes detail.setupUrl only with platforms:write for this project. Results are oldest first — every provision and release it has ever asked for, including the ones still running. This is the entire in-flight view: a resource only appears once it is real, so nothing half-built shows up in the resource list and nothing in flight is missing from this one. Filter by `resourceId` to get one resource's whole history, which for a pooled line is every tenure this project has had on it. `state` is comma-separated; `type` accepts one operation type and an absent filter means everything, including failed and cancelled operations. `endedAfter` keeps only operations that finished after that instant, so what failed or was withdrawn recently is one short page. Requires the platforms:read permission bound to the project resource in the path.

API reference: https://photon.codes/docs/beta/api-reference/operations/list-operations

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, optional): No description.

Example input: `{"path":{}}`

### `photonmcp_listorganizationmembers`

List current organization members · Read-only

List current organization members

API reference: https://photon.codes/docs/beta/api-reference/organization-members/list-current-organization-members

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_listpaymentactions`

List payments to confirm · Read-only

List payments to confirm

Returns the selected organization's payments waiting on the customer's authentication (3DS), newest first, with what each pays for: a pending plan change, fixed-charge increase or one-off invoice, or an invoice such as a renewal. A plan change is not invoiced until it is paid, so its payment has no invoice number yet. Pass subject to list only the payments for the organization itself or one of its projects. Pay an invoice to complete its payment; listing makes no payment.

API reference: https://photon.codes/docs/beta/api-reference/organization-billing/list-payments-to-confirm

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, optional): No description.

Example input: `{"path":{}}`

### `photonmcp_listprojectplatforms`

List project platforms · Read-only

List project platforms

Lists the platform types available to this project. Every project currently sees the same fixed public contract, answered in-process rather than forwarded, so the list survives an outage of the private service. The project binding exists so that answer can narrow per project without moving the route. Requires the platforms:read permission bound to the project resource in the path.

API reference: https://photon.codes/docs/beta/api-reference/platforms/list-project-platforms

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_listprojects`

List projects · Read-only

List projects

Returns a cursor-paginated page of the active projects in organizationId. Filter using query and the documented creation-time bounds, and navigate with pageSize and pageToken. Project roles are not returned and role is not a supported filter.

API reference: https://photon.codes/docs/beta/api-reference/projects/list-projects

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, optional): No description.

Example input: `{"path":{}}`

### `photonmcp_listprojectsubscriptions`

List project subscriptions · Read-only

List project subscriptions

Lists the plan each of the selected project's categories holds, with its price and the payer's standing. It suits showing a project's plan wherever projects are listed; the billing overview adds billing periods, fixed charges, entitlements and usage.

API reference: https://photon.codes/docs/beta/api-reference/project-billing/list-project-subscriptions

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_listresourcefilteredverificationcodes`

List a line's filtered verification codes · Read-only

List a line's filtered verification codes

Lists the verification codes Photon kept from one dedicated line. Inbound messages that carry a one-time code are filtered before delivery; this is the record that they arrived, so a quiet line can be told apart from a broken one. It records the receiving line, its platform and when the code arrived — never the code itself. Each entry names the dedicated line (`resourceId`) that received it. Newest first, within an optional inclusive `receivedAfter`/`receivedBefore` window. A page may hold fewer than `pageSize` entries and still return a `nextPageToken`; only its absence means the end. Answers 404 unless the project holds the resource now. Codes from an earlier tenure stay in the project-wide list. Filter by `platform` — a dedicated line receives both iMessage and WhatsApp. Requires the platforms:read permission bound to the project resource in the path.

API reference: https://photon.codes/docs/beta/api-reference/verification-codes/list-a-lines-filtered-verification-codes

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, optional): No description.

Example input: `{"path":{}}`

### `photonmcp_listresources`

List resources · Read-only

List resources

Lists the project's resources, oldest first, including retired ones unless `state` filters them out. Filter by `type`, by enabled `ability` and by comma-separated `state`. Lifecycle states are unallocated, active and retired; active means owned and non-retired, not provider-confirmed readiness. Every VoIP resource includes detail.activationState: activating or active, defaulting to active without owner-matched saved state. state=active includes numbers still activating. Requires the platforms:read permission bound to the project resource in the path.

API reference: https://photon.codes/docs/beta/api-reference/resources/list-resources

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, optional): No description.

Example input: `{"path":{}}`

### `photonmcp_listsharedlineassignments`

List shared line assignments · Read-only

List shared line assignments

Lists the project's shared line assignments, oldest first. Released assignments are excluded unless includeReleased is set. Requires the platforms:read permission bound to the project resource in the path.

API reference: https://photon.codes/docs/beta/api-reference/shared-line-assignments/list-shared-line-assignments

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, optional): No description.

Example input: `{"path":{}}`

### `photonmcp_listspaces`

List Spaces · Read-only

List Spaces

Lists the Project's stored Spaces, with optional participant and Message filters. Results are eventually consistent.

API reference: https://photon.codes/docs/beta/api-reference/spaces/list-spaces

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, optional): No description.

Example input: `{"path":{}}`

### `photonmcp_listtendlcbrands`

List brands · Read-only

List brands

Lists the selected organization's 10DLC brands as a cursor-paginated page. Use status to filter the result and pageSize and pageToken to navigate it. Entries use a brand summary representation (identifier, display name, profile type, entity type when present, status and timestamps) rather than the full redacted brand; use getTenDlcBrand to read a brand's redacted registration details. Supply organization_id for the organization that owns the registration.

API reference: https://photon.codes/docs/beta/api-reference/10dlc-brands/list-brands

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, optional): No description.

Example input: `{"path":{}}`

### `photonmcp_listtendlccampaignreviewhistory`

List campaign review history · Read-only

List campaign review history

Returns observed review-state changes for an organization-owned campaign, ordered newest first. Navigate the result with pageSize and pageToken. The history records changes already observed by Photon; it does not initiate a new review or resubmit the campaign. Supply organization_id for the organization that owns the registration.

API reference: https://photon.codes/docs/beta/api-reference/10dlc-campaigns/list-campaign-review-history

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, optional): No description.

Example input: `{"path":{}}`

### `photonmcp_listtendlccampaigns`

List campaigns · Read-only

List campaigns

Lists 10DLC campaigns visible within the selected organization. Filter by brandId, status or useCases and navigate the cursor-paginated result using cursor and limit. The result describes campaign registration state; listing a campaign does not submit or modify it. Supply organization_id for the organization that owns the registration.

API reference: https://photon.codes/docs/beta/api-reference/10dlc-campaigns/list-campaigns

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, optional): No description.

Example input: `{"path":{}}`

### `photonmcp_listtendlccampaignusecases`

List campaign use cases · Read-only

List campaign use cases

Returns the selectable messaging purposes and the allowed selection count. Campaign registration types are derived automatically from the brand profile and selected purposes.

API reference: https://photon.codes/docs/beta/api-reference/10dlc-campaigns/list-campaign-use-cases

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_listusers`

List Users · Read-only

List Users

Lists stored Users without refreshing their classification; use Get User for current details. Message filters select incoming senders or outgoing recipients, excluding the Message's own endpoint.

API reference: https://photon.codes/docs/beta/api-reference/users/list-users

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, optional): No description.

Example input: `{"path":{}}`

### `photonmcp_listvoiceprofiles`

List Voice profiles · Read-only

List Voice profiles

Lists reusable Voice profiles in this project. Requires platforms:read bound to the path project.

API reference: https://photon.codes/docs/beta/api-reference/voice/list-voice-profiles

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, optional): No description.

Example input: `{"path":{}}`

### `photonmcp_listwebhookapiversions`

List webhook API versions · Read-only

List webhook API versions

Lists the published webhook payload API versions and their lifecycle metadata. The list is the same for every project. Use the selectable indicator when choosing a version for a destination. These payload dates are separate from SDK package versions. An authorized conditional request may return 304 without a response body.

API reference: https://photon.codes/docs/beta/api-reference/webhook-event-catalog/list-webhook-api-versions

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_listwebhookdestinations`

List webhook destinations · Read-only

List webhook destinations

Returns a cursor-paginated page of active webhook destinations configured for the selected project. Use pageSize and pageToken to navigate it. The listing returns destination configuration, never signing secrets.

API reference: https://photon.codes/docs/beta/api-reference/webhook-destinations/list-webhook-destinations

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, optional): No description.

Example input: `{"path":{}}`

### `photonmcp_listwebhookegressaddresses`

List webhook egress addresses · Read-only

List webhook egress addresses

Returns the public network addresses from which this environment sends webhook deliveries. Use this information when configuring the receiving system's network allowlist. The result is environment-specific and does not describe the API service's ingress addresses.

API reference: https://photon.codes/docs/beta/api-reference/webhook-delivery/list-webhook-egress-addresses

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_listwebhookeventtypes`

List webhook event types · Read-only

List webhook event types

Lists the webhook event types available in the requested apiVersion, including their descriptions, audiences and reader-schema URLs. Use this versioned catalog when selecting a destination's enabledEvents. The response may include version-retirement information; an authorized conditional request can return 304 without a body.

API reference: https://photon.codes/docs/beta/api-reference/webhook-event-catalog/list-webhook-event-types

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, required): No description.

Example input: `{"path":{},"query":{}}`

### `photonmcp_listwhatsappaccountphonenumbers`

List WhatsApp account phone numbers · Read-only

List WhatsApp account phone numbers

Lists the connected WABA's phone numbers directly from Meta, including numbers whose Photon sender was disconnected. Ownership is photon for a number in this project's current Photon inventory and meta otherwise. Match a Photon SMS number by its E.164 phoneNumber and reuse its existing displayName when reconnecting. A null name is unavailable, not permission to choose a new name. A failed lookup returns an error rather than an empty list. Requires platforms:read on the path project.

API reference: https://photon.codes/docs/beta/api-reference/whatsapp-business/list-whatsapp-account-phone-numbers

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_listwhatsappsharedlineassignments`

List WhatsApp shared line assignments · Read-only

List WhatsApp shared line assignments

Lists the project's WhatsApp shared line assignments, oldest first. Released assignments are excluded unless includeReleased is set. Requires the platforms:read permission bound to the project resource in the path.

API reference: https://photon.codes/docs/beta/api-reference/whatsapp-shared-line-assignments/list-whatsapp-shared-line-assignments

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, optional): No description.

Example input: `{"path":{}}`

### `photonmcp_assignsmslinecampaign`

Assign or replace SMS line campaign · Write

Assign or replace SMS line campaign

Attach a ready campaign from this project’s organization to its line. Requires platforms:write for the project; human and machine actors retain their authenticated identity. Requires a permanent Idempotency-Key and the current assignment version. Provider provisioning runs asynchronously. If the operation fails, its `error` is the problem of one of these codes: `SMS_CAMPAIGN_PROVIDER_REJECTED`, `SMS_CAMPAIGN_RECONCILIATION_REQUIRED`, `SMS_CAMPAIGN_REVOKED`.

API reference: https://photon.codes/docs/beta/api-reference/sms-campaigns/assign-or-replace-sms-line-campaign

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_assignvoicelineprofile`

Assign Voice line profile · Write

Assign Voice line profile

Assigns or replaces a line's explicit additional-profile override when the resource version matches. The current default cannot be assigned explicitly. The pstn_voice ability remains the admission source of truth. Requires platforms:write bound to the path project.

API reference: https://photon.codes/docs/beta/api-reference/voice/assign-voice-line-profile

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_batchupdatevoicelineprofileassignments`

Batch update Voice line assignments · Write

Batch update Voice line assignments

Atomically sets additional-profile overrides or switches lines back to the project default for up to 100 Voice-capable lines. A null profileId means use the default. Every expected resource version must match or no line changes. Requires platforms:write bound to the path project.

API reference: https://photon.codes/docs/beta/api-reference/voice/batch-update-voice-line-assignments

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_canceloperation`

Cancel operation · Write

Cancel operation

Withdraws a provision that has not been fulfilled yet. This is an operations action rather than a DELETE, because there is nothing to delete: no resource exists until the work commits. Whether it is accepted depends on the resource type — a dedicated iMessage line may sit waiting on inventory for hours and withdrawing costs nothing, while an SMS number is cancellable during inventory waiting and answers 409 once the workflow commits to its first provider order. Campaign assignment and detachment operations cannot be cancelled in any state. Wait for completion before requesting another change; that new change is not a guaranteed rollback. The output-only `cancellable` field is a snapshot; the cancellation transaction always checks the current phase under a row lock. A cancel that loses the race against the work finishing also answers 409: the resource exists and is billed for, so what you want then is to release it. Nothing is charged for a cancelled provision — billing runs after the work, so there is never anything to refund. Requires the platforms:write permission bound to the project resource in the path.

API reference: https://photon.codes/docs/beta/api-reference/operations/cancel-operation

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_commitaccountprofilepicture`

Commit profile picture · Write

Commit profile picture

Commits a profile picture previously uploaded through createAccountProfilePictureUpload. Call this only after the direct multipart upload succeeds, using the uploadId from the same upload session and a stable Idempotency-Key. The service validates the temporary object's ownership, size, content type, image bytes, dimensions, encryption, and age before changing the Account.

API reference: https://photon.codes/docs/beta/api-reference/account/commit-profile-picture

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

Inputs:

- `body` (`object`, required): No description.

Example input: `{"body":{}}`

### `photonmcp_commitagentprofileavatar`

Commit agent avatar · Write

Commit agent avatar

Commits an agent avatar previously uploaded through createAgentProfileAvatarUpload. Call this only after the direct multipart upload succeeds, using the uploadId from the same upload session and a stable Idempotency-Key. The service validates the temporary object's Project ownership, size, content type, image bytes, dimensions, encryption, and age before changing the agent profile.

API reference: https://photon.codes/docs/beta/api-reference/agent-profile/commit-agent-avatar

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_connectemaildomain`

Connect email domain · Write

Connect email domain

Reserves a normalized DNS domain and starts its durable email-provider setup. The accepted provision consumes one email-domain entitlement slot until it fails, is cancelled, or becomes a live resource; the plan's email.max_email_domains value sets the project limit. The customer resource does not exist until provider identity and DNS setup reach READY; poll the returned operation for progress. A domain may have only one unfinished provision or live resource globally. Email domains have no additional per-domain charge. The Idempotency-Key is required and permanent: replaying the same key and canonical domain returns the original operation forever. Requires the platforms:write permission bound to the project resource in the path. If the operation fails, its `error` is the problem of one of these codes: `EMAIL_DOMAIN_PROVIDER_REJECTED`, `EMAIL_DOMAIN_VERIFICATION_FAILED`, `EMAIL_DOMAIN_VERIFICATION_TIMED_OUT`, `EMAIL_TENANT_SETUP_TIMED_OUT`.

API reference: https://photon.codes/docs/beta/api-reference/email-domains/connect-email-domain

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_connecttelegrambot`

Connect Telegram bot · Write

Connect Telegram bot

Starts a free managed Telegram bot connection. Each project may have one unfinished Telegram provision, including user interaction and failure cleanup. A different Idempotency-Key while one is active returns 409 TELEGRAM_PROVISION_IN_PROGRESS with its operationId and operationUrl; resume it, cancel it while cancellation is available, or wait for it to finish. Rejected keys remain reusable. Open detail.setupUrl to create a new bot, whose name and username are chosen in Telegram, or to connect an existing managed bot, then poll Location. The link remains usable while the operation is active and never expires. Replaying the same Idempotency-Key returns the original operation, even after completion or while a newer setup is active. POST, GET and list share the same operation details. The API includes detail.setupUrl only for callers with platforms:write for the project; read-only callers receive the other details unchanged. If the operation fails, its `error` is the problem of one of these codes: `TELEGRAM_CONFIGURATION_FAILED`.

API reference: https://photon.codes/docs/beta/api-reference/telegram/connect-telegram-bot

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_createaccountprofilepictureupload`

Create profile picture upload · Write

Create profile picture upload

Creates a ten-minute, Account-bound presigned S3 POST for a JPEG, PNG, or WebP profile picture up to 5 MiB. Copy every returned formFields entry into a multipart/form-data request to uploadUrl, append the local file as the final form part, and upload it directly without sending Photon credentials. After the upload succeeds, call commitAccountProfilePicture with the returned uploadId. Do not cache or log the upload URL or form fields.

API reference: https://photon.codes/docs/beta/api-reference/account/create-profile-picture-upload

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

Inputs:

- `body` (`object`, required): No description.

Example input: `{"body":{}}`

### `photonmcp_createagentprofileavatarupload`

Create agent avatar upload · Write

Create agent avatar upload

Creates a ten-minute, Project-bound presigned S3 POST for a JPEG, PNG, or WebP agent avatar up to 5 MiB. Copy every returned formFields entry into a multipart/form-data request to uploadUrl, append the local file as the final form part, and upload it directly without sending Photon credentials. After the upload succeeds, call commitAgentProfileAvatar with the returned uploadId. Do not cache or log the upload URL or form fields.

API reference: https://photon.codes/docs/beta/api-reference/agent-profile/create-agent-avatar-upload

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_createdefaultvoiceprofile`

Create default Voice profile · Write

Create default Voice profile

Creates the project default Voice profile when absent. An identical replay returns the existing default without changing its version; a different existing default conflicts. Direction configuration is managed separately. Requires platforms:write bound to the path project.

API reference: https://photon.codes/docs/beta/api-reference/voice/create-default-voice-profile

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_createorgetspace`

Create or get a Space · Write

Create or get a Space

Creates or returns a project Space. Idempotency-Key is required for every platform and binds the project, platform and initial User IDs (unordered except the iMessage creator in first position) for 24 hours after workflow completion. Concurrent matching requests join the same operation; conflicting reuse returns 422 once its outcome is available. A new email key creates a new thread; direct Spaces and SMS groups converge by participants. Every creation and successful replay requires at least one currently project-owned Agent, or for iMessage a shared-line Agent in a direct Space whose peer has an active Assignment of this project on that line. For iMessage, an existing exact match is reused; otherwise the first participant must be a project-owned dedicated phone Agent and creates the native direct chat or group. Multiple matching native groups return SPACE_AMBIGUOUS; incomplete group membership cannot establish an exact match. Replays return 200 and the current stored Space, with Idempotent-Replayed: true. A timeout does not cancel accepted work: retry the same key and input.

API reference: https://photon.codes/docs/beta/api-reference/spaces/create-or-get-a-space

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_createorgetuser`

Create or get a User · Write

Create or get a User

Creates or reconciles a User by normalized handle. WhatsApp and iMessage phone classification uses line allocation and project ownership; New iMessage email handles start as Human without lookup; existing email identities retain their producer-observed classification and ownership. WhatsApp Business uses project ownership. These three platforms perform no provider profile or enrichment fetch. Shared Agents expose type=shared without ownership IDs; dedicated Agents expose resourceId for this project or pairwise managedBy for another project. Dedicated lines without an active owner are unavailable. SMS retains its existing ownership and phone number enrichment behavior. Email retains domain ownership resolution, lowercase ASCII domains and case-preserved local parts. Dependency failures fail before classification writes. The natural identity is the project path ID, platform, and handle. Retrying after a committed creation whose response was lost returns the same User with 200 rather than replaying 201.

API reference: https://photon.codes/docs/beta/api-reference/users/create-or-get-a-user

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_createproject`

Create project · Write

Create project

Creates in the authorized organization. In addition to account credentials, explicitly granted Service Identity API keys and M2M tokens may create projects. Project API keys cannot create projects. Creator and private credential evidence come only from the trusted authorization context. The caller-selected slug is immutable, must be 3 to 63 lowercase ASCII alphanumerics separated by single hyphens, and cannot be reserved or held by any active or deleted project.

API reference: https://photon.codes/docs/beta/api-reference/projects/create-project

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_createsharedlineassignment`

Create shared line assignment · Write

Create shared line assignment

Maps an end user's iMessage handle — an E.164 phone number or an email address — onto one of the project's pooled shared iMessage lines, consuming a seat from the project's entitlement. The assigned number is allocated by the server. When an email address is supplied in `email` the user is sent an invite asynchronously to that address; it is never inferred from the handle, and the response never reports whether the send succeeded. Requires the platforms:write permission bound to the project resource in the path.

API reference: https://photon.codes/docs/beta/api-reference/shared-line-assignments/create-shared-line-assignment

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_createtendlcbrand`

Register a brand · Write

Register a brand

Registers an encrypted US 10DLC brand. Registration is free, but it is refused with 402 before anything is created when the organization has no payment method on file, or has an invoice overdue 7 days or more or a disputed payment. Registration starts immediately and consumes one of the organization's rolling registration slots; deleting the brand later does not return the slot. The response is redacted; EIN and phone are write-only and represented only by their last four characters. Poll the URL in Location while status is submitting or submitted.

API reference: https://photon.codes/docs/beta/api-reference/10dlc-brands/register-a-brand

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_createtendlccampaign`

Register a campaign · Write

Register a campaign

Creates a campaign for an organization-owned brand, charges the non-refundable registration amount, and submits automatically after brand verification and qualification. The selected use cases are immutable after submission. Replay a pending request with the same body and Idempotency-Key.

API reference: https://photon.codes/docs/beta/api-reference/10dlc-campaigns/register-a-campaign

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_createvoiceprofile`

Create Voice profile · Write

Create Voice profile

Creates a direction-neutral additional Voice profile. The project default must already exist. Requires platforms:write bound to the path project.

API reference: https://photon.codes/docs/beta/api-reference/voice/create-voice-profile

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_createwhatsappsharedlineassignment`

Create WhatsApp shared line assignment · Write

Create WhatsApp shared line assignment

Maps an end user's phone number onto one of the project's pooled shared WhatsApp lines, consuming a seat from the project's WhatsApp entitlement. The assigned number is allocated by the server. When an email address is supplied the user is sent an invite asynchronously; the response never reports whether that succeeded. Requires the platforms:write permission bound to the project resource in the path.

API reference: https://photon.codes/docs/beta/api-reference/whatsapp-shared-line-assignments/create-whatsapp-shared-line-assignment

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_createwhatsappvoipsender`

Create WhatsApp VoIP sender · Write

Create WhatsApp VoIP sender

Registers an active, SMS-capable Photon VoIP line on this project's connected WhatsApp Business Account. The account is resolved server-side; callers never select a WABA. The platform creates or reuses the Meta number, requests and consumes the SMS ownership code internally, verifies it, and registers the sender. displayName is optional; when omitted the project agent profile name is snapshotted before acceptance. The VoIP line remains a separate resource and never receives the whatsapp_business ability. If the operation fails, its `error` is the problem of one of these codes: `WHATSAPP_AUTHORIZATION_REVOKED`, `WHATSAPP_DISPLAY_NAME_CONFLICT`, `WHATSAPP_NUMBER_ADD_REFUSED`, `WHATSAPP_NUMBER_LOOKUP_FAILED`, `WHATSAPP_REGISTRATION_REFUSED`, `WHATSAPP_VERIFICATION_REFUSED`, `WHATSAPP_VERIFICATION_REQUEST_REFUSED`, `WHATSAPP_VERIFICATION_TIMED_OUT`.

API reference: https://photon.codes/docs/beta/api-reference/whatsapp-business/create-whatsapp-voip-sender

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_leaveorganization`

Leave an organization; Owners must transfer or close first · Write

Leave an organization; Owners must transfer or close first

API reference: https://photon.codes/docs/beta/api-reference/organization-members/leave-an-organization%3B-owners-must-transfer-or-close-first

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_markmessageread`

Mark a Message as read · Write

Mark a Message as read

Persists a request to mark one incoming Message as read using its receiving account. A 202 means accepted for asynchronous execution, not handled by the provider. Requires Idempotency-Key. The returned action Message tracks its outcome; privacy settings may suppress remote visibility.

API reference: https://photon.codes/docs/beta/api-reference/messages/mark-a-message-as-read

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_previeworganizationchange`

Preview an organization billing change · Write

Preview an organization billing change

Previews a fixed-charge quantity change on the selected organization's own subscription, such as SSO. Prices the change by the billing engine exactly as making it would bill it now: dueNow is that invoice, with taxes and the payer's credits applied. A purchase bills each unit it adds, even after a release this period. A release bills nothing; releasing a prorated charge credits its unused days to the organization's credit. dueLater is what the change leads to that is billed later instead, upcomingInvoices what the subscription it leaves bills in the following periods, and nextCharge the first of them. change says what the change does by its kind: for a fixed-charge change, pass change.quote on with the purchase so it is refused if the price or period no longer hold. This operation does not change billing. promotionCode previews a code as the purchase redeems it, and needs billing:manage; a refused code answers PROMOTION_CODE_REJECTED with the reason a refused purchase gives.

API reference: https://photon.codes/docs/beta/api-reference/organization-billing/preview-an-organization-billing-change

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_previewprojectchange`

Preview a project billing change · Write

Preview a project billing change

Previews a change on the selected project's subscription in the supplied category: a fixed-charge quantity change, or a plan change with the held fixed charges it carries over. Prices the change by the billing engine exactly as making it would bill it now: dueNow is that invoice, with taxes and the payer's credits applied. A purchase bills each unit it adds, even after a release this period. A release bills nothing; releasing a prorated charge credits its unused days to the organization's credit. dueLater is what the change leads to that is billed later instead, upcomingInvoices what the subscription it leaves bills in the following periods, and nextCharge the first of them. change says what the change does by its kind: for a fixed-charge change, pass change.quote on with the purchase so it is refused if the price or period no longer hold. This operation does not change billing. An upgrade bills the replaced plan's usage to date and the new plan from now, less the replaced plan's unused time; a downgrade, or choosing the held plan again, bills nothing now; change says when it applies and which held fixed charges the target does not sell: released first for a change that applies now, released with a downgrade when it applies. additions quotes what is added once an upgrade applies, each billed when it is added, in dueLater and outside dueNow. promotionCode previews a code as the purchase redeems it, and needs billing:manage; a refused code answers PROMOTION_CODE_REJECTED with the reason a refused purchase gives. Supply both organizationId and projectId; the organization must pay for the project.

API reference: https://photon.codes/docs/beta/api-reference/organization-billing/preview-a-project-billing-change

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_provisionimessagededicatedline`

Provision dedicated iMessage line · Write

Provision dedicated iMessage line

Claims one dedicated iMessage line for the project and enables iMessage on it. Always answers 202 with an operation: dedicated lines are allocated from available capacity, and unavailable capacity causes a wait rather than a failure — this can legitimately stay `running` for hours, which is exactly why the response is a handle to poll rather than a number. The project's messaging subscription must grant the dedicated iMessage lines entitlement (`imessage_dedicated_lines.can_purchase`), and that is checked before capacity is reserved. The line's own charge starts when a line is claimed; the subscription that grants the entitlement bills on its own terms, which cancelling a request does not change. Waiting requests are served first come, first served. One that is still waiting is cancelled with a `reason` if the project is deleted (`project_deleted`) or its plan stops selling dedicated lines (`entitlement_lost`); while the payer is restricted for overdue payment it keeps waiting. If you no longer want to wait, POST to the operation's cancel endpoint, which charges nothing for the line. The Idempotency-Key is required and permanent: repeating it returns the same operation forever. A further line always needs a NEW key, including while others are still waiting. Requires the platforms:write permission bound to the project resource in the path. If the operation fails, its `error` is the problem of one of these codes: `CHARGE_REFUSED`, `ENTERPRISE_PLAN_REQUIRED`.

API reference: https://photon.codes/docs/beta/api-reference/dedicated-imessage-lines/provision-dedicated-imessage-line

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_provisionwhatsappdedicatedline`

Provision dedicated WhatsApp line · Write

Provision dedicated WhatsApp line

Provisions one dedicated WhatsApp line with WhatsApp and shared Voice enabled. It attaches to an eligible iMessage line the project already owns when possible so both products keep the same number; otherwise it claims healthy, available WhatsApp-capable dedicated-line inventory. Always answers 202, because waiting when no inventory is available is not a failure. The product opens its own charge period after the abilities are enabled; Voice has no separate charge. Waiting requests are served first come, first served, and are cancelled with a `reason` exactly as for a dedicated iMessage line. Cancel the returned operation to stop waiting. The Idempotency-Key is required and permanent. If the operation fails, its `error` is the problem of one of these codes: `CHARGE_REFUSED`, `ENTERPRISE_PLAN_REQUIRED`.

API reference: https://photon.codes/docs/beta/api-reference/dedicated-whatsapp-lines/provision-dedicated-whatsapp-line

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_purchasesmsnumber`

Purchase SMS number · Write

Purchase SMS number

Buys one US local number from the provider and records it as a resource with SMS enabled. Requires countryCode (US) and accepts an optional three-digit geographic areaCode. The server selects an exact matching number. While inventory is empty the operation keeps searching, and the caller can cancel it until ordering begins; a search still empty one minute after the operation was created fails it with `NUMBER_INVENTORY_UNAVAILABLE`. Always answers 202 with an operation: the work runs behind the response, and the Location points at the operation to poll. New area-specific requests must appear in current provider coverage; discover it with GET /sms/numbers/area-codes?countryCode=US. Coverage and subscription checks run before operation creation. Billing follows delivery. Replays return the original operation without checking current coverage. The Idempotency-Key is required and permanent: repeating it returns the same operation forever, never a second number. A further number always needs a NEW key, including while others are still running. Requires the platforms:write permission bound to the project resource in the path. If the operation fails, its `error` is the problem of one of these codes: `ENTITLEMENT_REQUIRED`, `NUMBER_INVENTORY_UNAVAILABLE`, `NUMBER_ORDER_FAILED`, `NUMBER_ORDER_RECONCILIATION_REQUIRED`, `NUMBER_SEARCH_FAILED`.

API reference: https://photon.codes/docs/beta/api-reference/sms-numbers/purchase-sms-number

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_querydeveloperotel`

Query Developer OTel data · Write

Query Developer OTel data

Executes one parameterized, read-only ClickHouse SELECT statement against the current Project's otel_logs and otel_traces data. Supports non-recursive CTEs, subqueries, and JOINs; UNION and SELECT without FROM remain disabled, as do GLOBAL, ASOF, and PASTE JOIN. Every source is subject to the authorized Project's Row Policies. This advanced endpoint supplements the basic resource endpoints.

API reference: https://photon.codes/docs/beta/api-reference/developer-otel/query-developer-otel-data

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_querymessagemetrics`

Query metrics · Write

Query metrics

Runs read-only SQL over the Project's message_events or call_events table. Get the SQL schema for supported columns, capabilities, and limits.

API reference: https://photon.codes/docs/beta/api-reference/messaging-%26-voice-metrics/query-metrics

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_resubmittendlccampaign`

Resubmit a rejected campaign · Write

Resubmit a rejected campaign

Resubmits saved campaign corrections, with an optional appeal explanation. An explanation is required when content has not changed. Each accepted resubmission incurs the existing non-refundable registration amount. Replay pending requests with the same body and Idempotency-Key.

API reference: https://photon.codes/docs/beta/api-reference/10dlc-campaigns/resubmit-a-rejected-campaign

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_sendmessage`

Send a Message · Write

Send a Message

Sends SMS, email, WhatsApp Personal, WhatsApp Business, iMessage, or Telegram text and image messages. A shared iMessage line sends only in direct Spaces, only to a peer with an active Assignment who has messaged it since that Assignment. SMS and MMS require current Platforms authorization for the sender and every recipient; campaign eligibility is required unless every recipient is in-network.

API reference: https://photon.codes/docs/beta/api-reference/messages/send-a-message

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_setspacetyping`

Set typing in a Space · Write

Set typing in a Space

Saves one transient typing update as an authorized Agent in this Space. Returns the dispatched Message with HTTP 202. Successful provider handoff ends in accepted; rejection or expiry ends in failed. Repeat true to refresh; false stops where supported. Callers control refreshes. Unsupported platforms return OPERATION_UNAVAILABLE.

API reference: https://photon.codes/docs/beta/api-reference/spaces/set-typing-in-a-space

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_triggertendlcbrandotp`

Trigger sole-proprietor OTP · Write

Trigger sole-proprietor OTP

Requests delivery of a verification code for an organization-owned sole-proprietor brand. A 202 response acknowledges the delivery request and does not mean the brand has been verified. Inspect the OTP status and submit the received code through verifyTenDlcBrandOtp. Requests may be rate limited. Supply the required Idempotency-Key header. Supply organization_id for the organization that owns the registration.

API reference: https://photon.codes/docs/beta/api-reference/10dlc-brand-otp/trigger-sole-proprietor-otp

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_updateaccount`

Update account · Write

Update account

Updates the supplied firstName and lastName fields on the authenticated account and returns the updated profile. Only the documented profile fields can be changed through this endpoint; profile-picture uploads and phone-number verification use their dedicated operations. Supply the required Idempotency-Key header.

API reference: https://photon.codes/docs/beta/api-reference/account/update-account

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

Inputs:

- `body` (`object`, required): No description.

Example input: `{"body":{}}`

### `photonmcp_updateagentprofile`

Update agent profile · Write

Update agent profile

Updates the supplied firstName and lastName fields in the project's agent profile and returns the updated profile. Avatar upload, commit and reset are separate operations. The caller must be authorized to change configuration for the selected project. Supply the required Idempotency-Key header.

API reference: https://photon.codes/docs/beta/api-reference/agent-profile/update-agent-profile

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_updatedefaultvoiceprofile`

Update default Voice profile · Write

Update default Voice profile

Patches the default profile's protocol or mediaEncryption when expectedVersion matches. Omitted fields are preserved. Its server-assigned name is immutable, and directional configuration uses the profileId returned by this resource. Requires platforms:write bound to the path project.

API reference: https://photon.codes/docs/beta/api-reference/voice/update-default-voice-profile

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_updateproject`

Update project · Write

Update project

Updates the identified project's name and returns the updated project. The project slug is not a mutable field in this request. Use an authorized account or organization service-identity credential; a project API key is not accepted. Supply the required Idempotency-Key header.

API reference: https://photon.codes/docs/beta/api-reference/projects/update-project

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_updatetendlcbrand`

Correct a brand · Write

Correct a brand

Updates a brand. A PATCH containing only supportEmail commits synchronously. Registry-facing and mixed changes use a durable correction: the complete revised profile becomes active atomically once the registry applies it, and if registration then fails the brand reports action_required with that profile and its failureReasons. On a brand whose registration was not accepted, the same PATCH fixes and resubmits it; resubmitting unchanged details returns REGISTRATION_DETAILS_UNCHANGED. A brand's profile type is immutable.

API reference: https://photon.codes/docs/beta/api-reference/10dlc-brands/correct-a-brand

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_updatetendlccampaign`

Update a campaign · Write

Update a campaign

Updates campaign fields selected by updateMask, guarded by etag. Name changes are local and allowed in every state. Eligible rejected campaigns save content locally until resubmit. Ready campaigns allow asynchronous sample changes. Other states lock campaign content.

API reference: https://photon.codes/docs/beta/api-reference/10dlc-campaigns/update-a-campaign

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_updatevoiceprofile`

Update Voice profile · Write

Update Voice profile

Patches an additional profile's name, protocol, or mediaEncryption when expectedVersion matches. Omitted fields are preserved. Directional configuration is managed through the profile's inbound and outbound endpoints. Requires platforms:write bound to the path project.

API reference: https://photon.codes/docs/beta/api-reference/voice/update-voice-profile

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_updatevoiceprofileoutboundauthentication`

Update Voice outbound authentication · Write

Update Voice outbound authentication

Changes a SIP profile's outbound Digest algorithm when expectedVersion matches. The profileId may identify the default or an additional profile. This policy-only change preserves the password, username, and any previous-password grace deadline. SHA-256 is recommended; MD5 is a weaker legacy option. Returns non-secret outbound metadata and the profile version. Requires platforms:write bound to the path project.

API reference: https://photon.codes/docs/beta/api-reference/voice/update-voice-outbound-authentication

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_updatewebhookdestination`

Update webhook destination · Write

Update webhook destination

Updates the supplied URL, name, description, status or enabledEvents fields on a project's webhook destination and returns its updated configuration. The payload API version is not a mutable field in this request. Event selections are checked against the destination's versioned catalog; signing-secret rotation is a separate operation. Supply the required Idempotency-Key header.

API reference: https://photon.codes/docs/beta/api-reference/webhook-destinations/update-webhook-destination

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

Inputs:

- `body` (`object`, required): No description.
- `path` (`object`, required): No description.

Example input: `{"body":{},"path":{}}`

### `photonmcp_deleteaccount`

Delete account · Destructive

Delete account

Deletes the authenticated account and returns its account tombstone. The operation is rejected while the account still owns organizations; transfer or close those organizations before retrying. This endpoint acts on the caller's account and does not accept another account's identifier.

API reference: https://photon.codes/docs/beta/api-reference/account/delete-account

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

Inputs: none.

Example input: `{}`

### `photonmcp_deleteproject`

Delete project · Destructive

Delete project

Starts deletion of the identified project using a credential authorized for project management. Inspect the documented response and use getProjectClosureStatus with the organization and project identifiers to read closure progress. A project API key is not an accepted credential for this operation.

API reference: https://photon.codes/docs/beta/api-reference/projects/delete-project

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_deletetendlcbrand`

Delete an unverified brand registration · Destructive

Delete an unverified brand registration

Deletes a brand whose registration was never verified: one in status otp_required or action_required that has no campaigns. The deletion is final once this returns; the brand is no longer listed, and every route addressing its ID returns BRAND_NOT_FOUND. A deleted brand still counts toward the organization's rolling registration limit.

API reference: https://photon.codes/docs/beta/api-reference/10dlc-brands/delete-an-unverified-brand-registration

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_deletevoiceprofile`

Delete Voice profile · Destructive

Delete Voice profile

Deletes an additional profile when expectedVersion matches. Assigned profiles require force=true, which atomically removes every stored override so affected lines follow the default. The default can never be deleted. Requires platforms:write bound to the path project.

API reference: https://photon.codes/docs/beta/api-reference/voice/delete-voice-profile

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, required): No description.

Example input: `{"path":{},"query":{}}`

### `photonmcp_deletevoiceprofileinbound`

Delete Voice inbound configuration · Destructive

Delete Voice inbound configuration

Removes a profile's inbound destination when the shared profile version matches. The profileId may identify the default or an additional profile. The profile and its line assignments remain. Requires platforms:write bound to the path project.

API reference: https://photon.codes/docs/beta/api-reference/voice/delete-voice-inbound-configuration

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, required): No description.

Example input: `{"path":{},"query":{}}`

### `photonmcp_deletevoiceprofileoutbound`

Revoke Voice outbound credential · Destructive

Revoke Voice outbound credential

Revokes outbound calling for a profile when the shared profile version matches. The profileId may identify the default or an additional profile. The profile, inbound destination, and line assignments remain. Requires platforms:write bound to the path project.

API reference: https://photon.codes/docs/beta/api-reference/voice/revoke-voice-outbound-credential

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, required): No description.

Example input: `{"path":{},"query":{}}`

### `photonmcp_deletewebhookdestination`

Delete webhook destination · Destructive

Delete webhook destination

Deletes the selected project's destination and returns its stable tombstone. Repeated deletion returns the deletion representation. This operation removes the destination configuration; it is separate from disabling a destination through an update.

API reference: https://photon.codes/docs/beta/api-reference/webhook-destinations/delete-webhook-destination

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_disconnectwhatsappbusinessaccount`

Disconnect WhatsApp Business account · Destructive

Disconnect WhatsApp Business account

Disconnects every attached WhatsApp sender, then unsubscribes our app and removes the project's business account connection. Photon VoIP lines and the numbers in Meta remain. Requires Idempotency-Key. Poll the returned operation. Meta's answers do not fail it: each sender is released as `DELETE /platforms/resources/:resourceId` does, and our app's unsubscribe is a best effort, tried up to three times, a second or two apart, only while the failure is temporary. New signups are blocked while disconnecting, and existing provisions must finish before this request can be accepted. If the operation fails, its `error` is the problem of one of these codes: `WHATSAPP_ACCOUNT_DISCONNECT_FAILED`.

API reference: https://photon.codes/docs/beta/api-reference/whatsapp-business/disconnect-whatsapp-business-account

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_releaseimessagededicatedline`

Release dedicated iMessage line · Destructive

Release dedicated iMessage line

Removes only iMessage from one dedicated line. Shared Voice is removed only when WhatsApp is absent; if WhatsApp remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open iMessage charge period identifies this product tenure. If the operation fails, its `error` is the problem of one of these codes: `RESOURCE_NOT_FOUND`.

API reference: https://photon.codes/docs/beta/api-reference/dedicated-imessage-lines/release-dedicated-imessage-line

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_releaseresource`

Release resource · Destructive

Release resource

Gives one resource back, whatever it is. What that means is the resource's own business: an SMS number goes back to the provider and is retired, a dedicated iMessage line goes back to the shared pool and stays in existence for someone else to claim. Either way the provider is contacted first where there is one, then a single transaction disables every ability, ends the project's hold and closes the charge period — so a provider that refuses leaves the resource exactly as it was, still owned and still billed. A WhatsApp Business sender is the exception: Meta never holds its release. A number on a Photon VoIP line is deregistered as a best effort, tried up to three times, a second or two apart, only while the failure is temporary; a number the customer brought is not sent to Meta at all; the sender is retired either way, and the number stays in the customer's WhatsApp Business Account. Usually finishes inside this request and answers 200; if the provider is slow it answers 202 and the Location points at the operation to poll. The decrement runs behind the answer either way, so the resource is gone when you are told it is. Takes no Idempotency-Key — releasing the same resource twice is the same request. Releasing one that is already gone answers 404. Requires the platforms:write permission bound to the project resource in the path. If the operation fails, its `error` is the problem of one of these codes: `EMAIL_DOMAIN_RELEASE_FAILED`, `NUMBER_RELEASE_FAILED`, `RESOURCE_NOT_FOUND`, `TELEGRAM_RELEASE_FAILED`, `WHATSAPP_SENDER_RELEASE_FAILED`.

API reference: https://photon.codes/docs/beta/api-reference/resources/release-resource

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_releasesharedlineassignment`

Release shared line assignment · Destructive

Release shared line assignment

Releases a shared line assignment, freeing both its seat and its handle for reassignment. The row is retained for audit and returned with releasedAt set, so repeating the call is safe. Requires the platforms:write permission bound to the project resource in the path.

API reference: https://photon.codes/docs/beta/api-reference/shared-line-assignments/release-shared-line-assignment

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_releasewhatsappdedicatedline`

Release dedicated WhatsApp line · Destructive

Release dedicated WhatsApp line

Removes only WhatsApp from one dedicated line. Shared Voice is removed only when iMessage is absent; if iMessage remains, Voice, the resource, ownership, and phone number are preserved. Usually finishes inside this request and answers 200; a slow workflow answers 202 with an operation to poll. Takes no Idempotency-Key because the open WhatsApp charge period identifies this product tenure. If the operation fails, its `error` is the problem of one of these codes: `RESOURCE_NOT_FOUND`.

API reference: https://photon.codes/docs/beta/api-reference/dedicated-whatsapp-lines/release-dedicated-whatsapp-line

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_releasewhatsappsharedlineassignment`

Release WhatsApp shared line assignment · Destructive

Release WhatsApp shared line assignment

Releases a WhatsApp shared line assignment, freeing its seat for reassignment. The row is retained for audit and returned with releasedAt set, so repeating the call is safe. Requires the platforms:write permission bound to the project resource in the path.

API reference: https://photon.codes/docs/beta/api-reference/whatsapp-shared-line-assignments/release-whatsapp-shared-line-assignment

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_resetaccountprofilepicture`

Remove profile picture · Destructive

Remove profile picture

Removes the authenticated account's custom profile picture and returns the account using its default picture. This operation does not upload a replacement; use the upload-and-commit operations when setting a new custom picture. Supply the required Idempotency-Key header.

API reference: https://photon.codes/docs/beta/api-reference/account/remove-profile-picture

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

Inputs: none.

Example input: `{}`

### `photonmcp_resetagentprofileavatar`

Reset agent avatar · Destructive

Reset agent avatar

Replaces the selected project's agent avatar with the project's default avatar, a generated planet image derived from the project ID, and returns the updated agent profile. The reset does not restore an earlier avatar: a custom avatar it replaces is discarded and must be uploaded and committed again to use it. When the default avatar is already in use, the profile is returned unchanged. This does not change the account's personal profile picture. Supply the required Idempotency-Key header.

API reference: https://photon.codes/docs/beta/api-reference/agent-profile/reset-agent-avatar

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_revokeaccountservicekey`

Revoke Account Service Key · Destructive

Revoke Account Service Key

Revokes the account-owned service key identified by serviceKeyId and returns its revoked metadata. Repeating the revocation is stable. Revocation changes the credential's validity; it does not create a replacement key. Supply the required Idempotency-Key header.

API reference: https://photon.codes/docs/beta/api-reference/account-service-keys/revoke-account-service-key

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

Inputs:

- `path` (`object`, required): No description.

Example input: `{"path":{}}`

### `photonmcp_unassignsmslinecampaign`

Unassign SMS line campaign · Destructive

Unassign SMS line campaign

Any project writer, including a scoped API key, may detach the campaign. The number and campaign remain owned. Requires a permanent Idempotency-Key and expectedVersion. Local eligibility is blocked immediately; provider detachment runs asynchronously. If the operation fails, its `error` is the problem of one of these codes: `SMS_CAMPAIGN_PROVIDER_REJECTED`, `SMS_CAMPAIGN_RECONCILIATION_REQUIRED`, `SMS_CAMPAIGN_REVOKED`.

API reference: https://photon.codes/docs/beta/api-reference/sms-campaigns/unassign-sms-line-campaign

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, required): No description.

Example input: `{"path":{},"query":{}}`

### `photonmcp_unassignvoicelineprofile`

Unassign Voice line profile · Destructive

Unassign Voice line profile

Removes a line's explicit override when the resource version matches so the line follows the project default. Profiles and the pstn_voice ability are unchanged. Requires platforms:write bound to the path project.

API reference: https://photon.codes/docs/beta/api-reference/voice/unassign-voice-line-profile

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

Inputs:

- `path` (`object`, required): No description.
- `query` (`object`, required): No description.

Example input: `{"path":{},"query":{}}`

## Related

Other AI connectors ([all 153](/agentkit/connectors/?category=ai)):

- [Chorus](/agentkit/connectors/chorus/): Scalekit connector, Username and password, 9 tools
- [Gong](/agentkit/connectors/gong/): Scalekit connector, OAuth, 69 tools
- [Jiminny](/agentkit/connectors/jiminny/): Scalekit connector, Access token, 27 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 |
