SMS for developers: send and receive texts, verify phones, and buy US and Canada numbers.
Connect Remote server
claude mcp add --transport http textkit https://mcp.jointextkit.com
{
"mcpServers": {
"textkit": {
"url": "https://mcp.jointextkit.com"
}
}
}
{
"servers": {
"textkit": {
"type": "http",
"url": "https://mcp.jointextkit.com"
}
}
}
Settings > Connectors > Add custom connector
URL: https://mcp.jointextkit.com
Tools 80 found in our last check
send_messageSend one SMS from one of your numbers. Set category "marketing" for promotions (the opt-in check applies) and scheduled_at to send later. Quiet hours apply to every message: outside 8am-9pm (narrower in some states) in the recipient's local time a marketing message is refused an…
get_messageRetrieve a message by its msg_... id, with its delivery timeline.
delete_messageDelete a finished message (delivered, failed or received) and every copy of its text, for a privacy request. Opt-out records and billing are kept. Cannot be undone.
redact_messageEmpty a finished message's text and media everywhere it is kept, keeping its status, price and timeline (redacted_at is set). Cannot be undone.
list_messagesList your messages, newest first. Filter by number, direction, status, failure reason, date, batch schedule or customer.
send_verificationSend a one-time verification code (OTP) to a phone number by text, or to an email address with channel "email". TextKit generates the code, handles expiry (10 min) and attempt limits (5), and blocks SMS-pumping and email-bombing abuse.
check_verificationCheck a verification code submitted by a user, by the phone or email it went to. Returns {verified, status, channel, charged}. Billed only when verified is true.
fallback_verificationThe text did not arrive: email a new code for the same pending verification (one id, one charge). The emailed code replaces the texted one and is checked by the email address, which it proves (not the phone). Once per verification.
list_numbersList the phone numbers on your account.
request_short_codeAsk our team for a short code (or a toll-free number they set up). Provisions nothing by itself; carriers take 8-12 weeks to approve a short code.
list_number_requestsOpen short-code and toll-free requests.
search_available_numbersSearch purchasable numbers by area code (default 415).
purchase_numberBuy a phone number for your account (free sandbox numbers with test keys). Live numbers are billed monthly.
release_numberRelease a number you own. It cannot be got back.
lookup_phoneLook up line type (mobile, landline, VoIP) and carrier for any US/Canada number.
simulate_inboundSandbox only: simulate an inbound SMS to one of your test numbers (emits message.received; STOP, START and HELP act as for real).
list_eventsList recent events (message.sent/delivered/failed/received, number.purchased/released, ...), newest first.
get_verificationRetrieve a verification by id: its status and attempts (never the code).
get_numberRetrieve one of your numbers: status, sender registration, tags, pools, customer.
bulk_purchase_numbersBuy several numbers in one area code at once (e.g. for a sender pool). Live numbers are billed monthly each.
link_number_to_registrationAttach a number to an approved 10DLC registration so it can send that registration's traffic.
assign_number_to_customerPlatforms: attribute a number (and its messages and usage) to one of your customers, or clear it with customer_id null.
bulk_update_numbersAct on many numbers at once: tag, untag, label, add to or remove from a pool, or release. Releasing cannot be undone.
export_numbersYour numbers as CSV text.
list_number_poolsList sender pools.
create_number_poolCreate a sender pool from numbers you own.
get_number_poolRetrieve a sender pool and its numbers.
update_number_poolRename a sender pool or change its numbers.
delete_number_poolDelete a sender pool. Its numbers are kept.
clone_number_poolCopy a sender pool under a new name.
import_contactsCreate or update up to 500 contacts per call, matched by phone_number. Attributes go in fields (up to 20 strings, e.g. plan) for segments and {{field:name}} merge tags; tags group contacts. opt_in carries consent evidence (status: false records an opt-out). import_id from the fi…
plan_importFind out where an audience is and the ways to bring it in. Without source: questions to ask the person (where their people are, which group, what they can sign in to, whether consent was recorded, once or kept in sync) and the kinds of source known. With source (their words, e.g…
upsert_contactCreate a contact, or update the existing one with the same phone_number.
list_contactsList contacts, newest first. Filter by tag, segment_id, list_id, exact phone_number, or a free-text q (name, email, company).
get_contactRetrieve a contact.
update_contactUpdate a contact. Only the inputs you pass change; tags and fields replace the whole list or map.
delete_contactDelete a contact. Messages, consent records, and topic preferences for the number are kept.
bulk_update_contactsAdd tags to, remove tags from, or delete many contacts by id.
set_contact_topicSubscribe a contact to a topic, or unsubscribe them (e.g. "promotions" vs "order updates").
create_listCreate a list: a fixed group of contacts (Audience → Lists). Membership is set by hand, unlike a segment, which follows rules.
list_listsList contact lists with their contact counts.
get_listRetrieve a list and its contact count.
update_listRename a list or change its description.
delete_listDelete a list (its contacts stay).
list_list_contactsPage through a list's contacts, most recently added first.
add_to_listAdd contacts to a list by contact_ids and/or phone_numbers (up to 1,000; numbers must already be contacts).
remove_from_listRemove contacts from a list (they stay contacts).
create_segmentSave an audience (a segment, a cohort): it appears in the console under Audience → Segments, and broadcasts can be sent to it. Everyone who can be texted: one rule, status is subscribed. Contacts matching all (or any) of up to 10 rules. Attributes: tags, contact fields, custom f…
list_segmentsList saved segments.
get_segmentRetrieve a segment and its rules.
update_segmentRename a segment or replace its rules.
delete_segmentDelete a segment. Contacts are not touched.
query_audienceCount a cohort without saving anything (nothing appears in the console): run up to 10 segment rules now and get the counts (matched, opted out, eligible to text) and the first contacts. Examples: replied in the last 7 days (last_reply_at after 7d); got a batch and did not reply…
preview_segmentCount the contacts a segment matches right now and how many a broadcast would reach (opted-out contacts removed, and with topic_id those unsubscribed from it). `notes` says when an event rule names an event never tracked.
list_topicsList subscription topics.
create_topicCreate a subscription topic, so people can opt out of one kind of message (e.g. promotions) and keep others.
create_templateSave a message template. Merge tags: {{first_name}}, {{name}}, {{phone}}, {{field:<custom>}}, and per-recipient variables.
list_templatesList message templates.
get_templateRetrieve a template.
update_templateRename or edit a template.
delete_templateDelete a template.
recommend_messageWhich text should we send? Ranked SMS copy for a goal (abandoned_cart, welcome, winback, failed_payment, trial, promo, ... or any) by expected revenue per message, each with its evidence: the factors that moved its score, the closest published SMS-only case studies with source l…
send_batchSend one message to many people (a broadcast or campaign): pick recipients by segment_id, tags, contact_ids, or an explicit recipients list. Opted-out numbers, numbers without marketing consent, and people unsubscribed from topic_id are removed before sending. dry_run: true send…
list_batchesList batches (broadcasts), newest first.
get_batchRetrieve a batch with its progress counts.
get_batch_resultsResults of a batch: delivered, failed, pending, replies, opt-outs (stops), spend, and failures grouped by reason.
list_batch_recipientsList a batch's recipients with each one's status.
pause_batchPause a sending or scheduled batch.
resume_batchResume a paused batch.
cancel_batchCancel a batch. Messages already sent stay sent.
retry_batchRetry a batch's failed recipients.
track_eventRecord something a customer did (e.g. signed_up, cart_abandoned, trial_ending), by user_id and/or phone. It starts or advances any active automation listening for that event. external_id (their Mixpanel distinct_id, when not user_id) puts the texts it starts on their Mixpanel pr…
plan_taskThe questions behind anything a person does here, with this account's options for each: send a text, buy or release a number, register for 10DLC, verify a toll-free number, request a short code, verification codes, a recurring text, a segment, template, list, topic, connecting a…
plan_campaignEvery input a send needs, as questions to ask the person, with this account's options for each. kind automation: the event that starts it (tracked events with their properties, and the Mixpanel events mapped to them), filters, how long after the event to text, right away or opti…
create_automationCreate a triggered text flow (as a draft): when trigger.event is tracked, run steps such as send_sms, wait, wait_for_event, and condition branches. Example: on cart_abandoned, wait 3600s, then if checkout_completed was not received send a reminder. A send_sms step with send_time…
list_automationsList automations.
get_automationRetrieve an automation with its trigger and steps.
update_automationEdit an automation (name, sender or `category`, trigger incl. trigger.cooldown_seconds, or steps). `steps` replaces every step; `step` replaces just the one with its id. Pass `if_updated_at` (the updated_at you read): an edit made by someone else since then answers 409 instead o…
delete_automationDelete an automation.
activate_automationTurn an automation on, so tracked events start runs. With a live number it texts real people. With no `from`, a number approved for its `category` must exist or `issues` says what is missing; `sender` shows the numbers it will use.
Details
| Endpoint | https://mcp.jointextkit.com (Streamable HTTP) |
| First published | 30 Oct 2026 |
| Last updated | 30 Oct 2026 |
| Registry name | com.jointextkit/textkit |
More communication servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
