Model Context Protocol (MCP)

Connect your AI tools to Pinnacle using MCP

The Model Context Protocol (MCP) is an open standard for connecting Large Language Models (LLMs) to platforms like Pinnacle. Once connected, your AI assistant can send SMS, MMS, and RCS messages, manage contacts, audiences, brands, and campaigns, purchase phone numbers, configure webhooks, and more — all on your behalf.

MCP Installation

Step 1: Configure your AI tool

Get your API key from the Pinnacle Dashboard, enter it below, and copy the configuration for your client.

Step 2: Verify the connection

  1. Restart your AI client — some clients require a restart to detect new MCP servers.
  2. Test the connection by asking:

    “What phone numbers do I have available? Use MCP tools.”

  3. Your AI assistant should call the Pinnacle MCP tools and return results from your account.
Troubleshooting

If tools aren’t detected after restarting, double-check your API key and ensure the server URL is correct.

Available Tools

The Pinnacle MCP server exposes 71 tools organized by feature group.

Messaging

ToolDescription
send_smsSend an SMS message with optional scheduling
send_mmsSend an MMS message with text and/or media files
send_rcsSend a rich RCS message with cards, buttons, and quick replies
get_messageRetrieve details of a previously sent message by ID
send_typing_indicatorShow a typing indicator from an RCS agent
cancel_scheduled_messageCancel a previously scheduled message before it is sent
react_to_messageAdd or remove an emoji reaction on a message
validate_smsValidate an SMS message — returns segment count, encoding, and estimated cost
validate_mmsValidate an MMS message — returns segment count, unsupported files, and estimated cost
validate_rcsValidate an RCS message — returns segment count, unsupported files, and estimated cost

Conversations

ToolDescription
list_conversationsList conversations with optional filtering by brand, campaign, sender, or receiver
get_conversationGet a specific conversation by ID or phone numbers
list_conversation_messagesGet paginated messages within a conversation with filtering
update_conversationUpdate notes on a conversation

Contacts

ToolDescription
get_contactLook up a contact by ID or phone number
create_contactCreate a new contact with phone number and optional metadata
update_contactUpdate an existing contact’s name, email, tags, or description

Audiences

ToolDescription
get_audienceGet an audience by ID with optional contact pagination
create_audienceCreate a new audience with optional initial contacts
update_audienceUpdate an audience’s name or description
delete_audienceDelete an audience (does not delete its contacts)
add_audience_contactsAdd contacts to an existing audience
remove_audience_contactsRemove contacts from an audience

Bulk Messaging

ToolDescription
blast_smsSend an SMS to all contacts in an audience with optional scheduling
blast_mmsSend an MMS to all contacts in an audience with optional scheduling
blast_rcsSend an RCS message to all contacts in an audience with optional scheduling

Phone Numbers

ToolDescription
search_phone_numbersSearch available phone numbers to purchase by type, area code, and country
get_phone_number_detailsGet carrier, location, and contact info for any number
buy_phone_numbersPurchase one or more phone numbers
attach_webhook_to_phoneAttach a webhook to a phone number for inbound messages and status updates
detach_webhook_from_phoneDetach a webhook from a phone number
attach_campaign_to_phonesAttach a messaging campaign (10DLC or toll-free) to phone numbers
detach_campaign_from_phonesDetach a messaging campaign from phone numbers

RCS

ToolDescription
get_rcs_capabilitiesCheck if phone numbers support RCS and which features
whitelist_rcs_numberWhitelist a phone number for RCS testing with an agent
generate_rcs_linkGenerate a deep link that opens an RCS conversation with your agent

Brands

ToolDescription
autofill_brandAuto-fill brand registration details using AI from a name or website
upsert_brandCreate or update a brand for messaging campaign registration
get_brandRetrieve a brand’s full details by ID
submit_brandSubmit a brand for carrier review
validate_brandValidate brand information before submission
vet_brandRequest external third-party vetting for a brand via Aegis

Campaigns

10DLC

ToolDescription
autofill_dlc_campaignAuto-fill 10DLC campaign details using AI
upsert_dlc_campaignCreate or update a 10DLC campaign
get_dlc_campaignRetrieve a 10DLC campaign’s full details
submit_dlc_campaignSubmit a 10DLC campaign for carrier review
validate_dlc_campaignValidate a 10DLC campaign before submission

Toll-Free

ToolDescription
autofill_toll_free_campaignAuto-fill toll-free campaign details using AI
upsert_toll_free_campaignCreate or update a toll-free campaign
get_toll_free_campaignRetrieve a toll-free campaign’s full details
submit_toll_free_campaignSubmit a toll-free campaign for carrier review
validate_toll_free_campaignValidate a toll-free campaign before submission

RCS

ToolDescription
autofill_rcs_campaignAuto-fill RCS campaign details using AI
upsert_rcs_campaignCreate or update an RCS campaign with agent configuration
get_rcs_campaignRetrieve an RCS campaign’s full details
submit_rcs_campaignSubmit an RCS campaign for carrier review
validate_rcs_campaignValidate an RCS campaign before submission

Status

ToolDescription
get_brand_statusCheck brand registration status
get_dlc_campaign_statusCheck 10DLC campaign status
get_toll_free_campaign_statusCheck toll-free campaign status
get_rcs_campaign_statusCheck RCS campaign status
get_phone_number_statusCheck if a phone number is active and ready to send

Utility

ToolDescription
create_shortened_urlCreate a tracked short URL (pncl.to)
get_shortened_urlGet details and click analytics for a shortened URL
update_shortened_urlUpdate the destination or expiration of a shortened URL
upload_fileGenerate presigned upload/download URLs for file storage
refresh_file_urlsRefresh expired presigned file URLs
get_contact_cardRetrieve a contact card (vCard) by ID
upsert_contact_cardCreate or update a contact card (vCard)
get_webhooksRetrieve webhooks attached to phone numbers or URLs

Documentation

ToolDescription
search_pinnacle_docsSearch Pinnacle docs for guides, API references, and examples

Configuration Options

OptionDescriptionExample
Remote URLHosted Streamable HTTP serverhttps://mcp.pinnacle.sh/mcp
npm packageLocal stdio via npxnpx @pinnacle-rcs/mcp
API key (remote)Passed as HTTP headerPINNACLE-API-KEY: pnclk_...
API key (local)Passed as environment variablePINNACLE_API_KEY=pnclk_...

Example Prompts

Here are some things you can ask your AI assistant once connected:

  • “Send an SMS to +14155551234 from my number saying ‘Meeting at 3pm’”
  • “Check if +14155551234 supports RCS”
  • “Show me my recent conversations”
  • “Create a new audience called ‘Beta Testers’ with these numbers: +14155551234, +14155556789”
  • “Blast an SMS to my VIP audience saying ‘Flash sale today!’”
  • “Register my brand ‘Acme Corp’ with website acme.com — auto-fill the details”
  • “Create a 10DLC campaign for customer care notifications”
  • “Search for toll-free numbers and buy one”
  • “Generate an RCS deep link for my agent”
  • “Search the Pinnacle docs for how to set up RCS”
  • “What’s the status of my brand registration?”

Source Code

The MCP server is open source: github.com/pinnacle-dev/pinnacle-mcp