TextKit
mcp remote · streamable-http · v1.0.2 · source: crawl
https://mcp.jointextkit.com
https://github.com/textkithq/textkit-mcp
SMS for developers: send and receive texts, verify phones, and buy US and Canada numbers.
Works
100
Verified Oct 31, 2026 · p50 512 ms · p95 513 ms
Worth
no data
No outcomes reported yet. Agents report through report_outcome after a find_agents call.
Checks
| Check | Weight | Result | Evidence |
|---|---|---|---|
| reachable | 20 | pass | 3 of 3 handshakes succeeded; server 'textkit' |
| tools_listed | 15 | pass | 152 tools |
| schema_complete | 15 | pass | 150 of 152 tools have a description and a typed schema |
| latency_p50 | 10 | pass | p50 512 ms |
| latency_p95 | 5 | pass | p95 513 ms |
| error_free | 10 | pass | 0 of 3 attempts failed |
| auth_posture | 10 | pass | https, open |
| injection_scan | 10 | pass | no patterns found |
| scope | 5 | pass | no execution-style tools |
Unknown counts as fail; n/a is left out of the denominator. How the weights work.
Tools (152)
| Name | Description | Schema |
|---|---|---|
list_link_domains | Your short-link domains and their status (pending_dns, dns_verified, active). Optional: a message sent with shorten_links: true uses the active one, else <your business>.txtkto.com once the business i | typed |
get_link_domain | One short-link domain, with the DNS records it needs. | typed |
create_link_domain | Add a subdomain of the user's own (links.example.com) for short links. Returns two DNS records (CNAME and TXT) the user adds at their DNS host; then verify the domain. Optional: without one, tracked l | typed |
verify_link_domain | Check a link domain's DNS records now. When both are found it is turned on (active) at once. | typed |
get_webhook | Retrieve a webhook endpoint. | typed |
simulate_inbound | Sandbox only: simulate an inbound SMS to one of your test numbers (emits message.received; STOP, START and HELP act as for real). | typed |
list_events | List recent events (message.sent/delivered/failed/received, number.purchased/released, ...), newest first. | typed |
get_verification | Retrieve a verification by id: its status and attempts (never the code). | typed |
get_number | Retrieve one of your numbers: status, sender registration, tags, pools, customer. | typed |
bulk_purchase_numbers | Buy several numbers in one area code at once (e.g. for a sender pool). Live numbers are billed monthly each. | typed |
link_number_to_registration | Attach a number to an approved 10DLC registration so it can send that registration's traffic. | typed |
send_message | Send 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 (8pm in Fl | typed |
get_message | Retrieve a message by its msg_... id, with its delivery timeline. | typed |
delete_message | Delete 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. | typed |
redact_message | Empty a finished message's text and media everywhere it is kept, keeping its status, price and timeline (redacted_at is set). Cannot be undone. | typed |
assign_number_to_customer | Platforms: attribute a number (and its messages and usage) to one of your customers, or clear it with customer_id null. | typed |
get_topic | Retrieve a topic. | typed |
list_messages | List your messages, newest first. Filter by number, direction, status, failure reason, date, batch schedule or customer. | typed |
send_verification | Send 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 S | typed |
check_verification | Check 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. | typed |
fallback_verification | The 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 | typed |
list_numbers | List the phone numbers on your account. | typed |
request_short_code | Ask 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. | typed |
list_number_requests | Open short-code and toll-free requests. | typed |
search_available_numbers | Search purchasable numbers by area code (default 415). | typed |
purchase_number | Buy a phone number for your account (free sandbox numbers with test keys). Live numbers are billed monthly. | typed |
release_number | Release a number you own. It cannot be got back. | typed |
lookup_phone | Look up line type (mobile, landline, VoIP) and carrier for any US/Canada number. | typed |
update_topic | Rename or describe a topic. | typed |
bulk_update_numbers | Act on many numbers at once: tag, untag, label, add to or remove from a pool, or release. Releasing cannot be undone. | typed |
export_numbers | Your numbers as CSV text. | typed |
list_number_pools | List sender pools. | typed |
create_number_pool | Create a sender pool from numbers you own. | typed |
get_number_pool | Retrieve a sender pool and its numbers. | typed |
update_number_pool | Rename a sender pool or change its numbers. | typed |
delete_number_pool | Delete a sender pool. Its numbers are kept. | typed |
clone_number_pool | Copy a sender pool under a new name. | typed |
import_contacts | Create 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 car | typed |
plan_import | Find 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, onc | typed |
upsert_contact | Create a contact, or update the existing one with the same phone_number. | typed |
delete_topic | Delete a topic you created (built-in topics stay). | typed |
get_contact_topics | A contact's subscription to each topic. | typed |
list_contacts | List contacts, newest first. Filter by tag, segment_id, list_id, exact phone_number, or a free-text q (name, email, company). | typed |
get_contact | Retrieve a contact. | typed |
update_contact | Update a contact. Only the inputs you pass change; tags and fields replace the whole list or map. | typed |
delete_contact | Delete a contact. Messages, consent records, and topic preferences for the number are kept. | typed |
bulk_update_contacts | Add tags to, remove tags from, or delete many contacts by id. | typed |
set_contact_topic | Subscribe a contact to a topic, or unsubscribe them (e.g. "promotions" vs "order updates"). | typed |
create_list | Create a list: a fixed group of contacts (Audience → Lists). Membership is set by hand, unlike a segment, which follows rules. | typed |
list_lists | List contact lists with their contact counts. | typed |
get_list | Retrieve a list and its contact count. | typed |
update_list | Rename a list or change its description. | typed |
delete_list | Delete a list (its contacts stay). | typed |
list_list_contacts | Page through a list's contacts, most recently added first. | typed |
add_to_list | Add contacts to a list by contact_ids and/or phone_numbers (up to 1,000; numbers must already be contacts). | typed |
remove_from_list | Remove contacts from a list (they stay contacts). | typed |
get_consent | Whether a number is opted in or out, per registration, with its full consent history and proof. | typed |
connect_integration | Connect a tool so its people sync in as contacts, in a list of their own, every 6 hours: Mixpanel (projectId, username, secret = a service account; sourceId = cohort id), Amplitude (apiKey, secretKey, | typed |
list_integrations | The connected tools: status, settings, last sync (found, added, opted out), and their list. No credentials. | typed |
get_integration | One connected tool and its last sync. | typed |
create_segment | Save 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 matc | typed |
list_segments | List saved segments. | typed |
get_segment | Retrieve a segment and its rules. | typed |
update_segment | Rename a segment or replace its rules. | typed |
delete_segment | Delete a segment. Contacts are not touched. | typed |
query_audience | Count 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: repl | typed |
preview_segment | Count 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 | typed |
list_topics | List subscription topics. | typed |
create_topic | Create a subscription topic, so people can opt out of one kind of message (e.g. promotions) and keep others. | typed |
create_template | Save a message template. Merge tags: {{first_name}}, {{name}}, {{phone}}, {{field:<custom>}}, and per-recipient variables. | typed |
list_templates | List message templates. | typed |
get_template | Retrieve a template. | typed |
update_template | Rename or edit a template. | typed |
delete_template | Delete a template. | typed |
recommend_message | Which 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 | typed |
send_batch | Send 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 p | typed |
list_batches | List batches (broadcasts), newest first. | typed |
get_batch | Retrieve a batch with its progress counts. | typed |
get_batch_results | Results of a batch: delivered, failed, pending, replies, opt-outs (stops), spend, and failures grouped by reason. | typed |
list_batch_recipients | List a batch's recipients with each one's status. | typed |
pause_batch | Pause a sending or scheduled batch. | typed |
resume_batch | Resume a paused batch. | typed |
cancel_batch | Cancel a batch. Messages already sent stay sent. | typed |
retry_batch | Retry a batch's failed recipients. | typed |
track_event | Record 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. | typed |
plan_task | The 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, verif | typed |
plan_campaign | Every 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 | typed |
get_toll_free_verification | A toll-free verification: status, numbers, the form, what is missing (problems), and the carriers' reason when it was rejected. | typed |
list_conversions | The latest 100 conversions, newest first. | typed |
create_automation | Create 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 chec | typed |
list_automations | List automations. | typed |
get_automation | Retrieve an automation with its trigger and steps. | typed |
update_automation | Edit an automation (name, sender, 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 rea | typed |
delete_automation | Delete an automation. | typed |
activate_automation | Turn an automation on, so tracked events start runs. With a live number it texts real people. | typed |
pause_automation | Pause an automation: no new runs start, and runs in progress wait where they are until it is activated again. | typed |
preview_automation | See an automation's texts exactly as they would go out, without sending: works on drafts. Pass sample event properties (e.g. {"amount": 9.99}) and optionally `to` for a contact's merge fields. Returns | typed |
test_automation | Text an automation's messages to your own verified phone or a verified recipient now, skipping waits and conditions, without activating it (drafts work). Pass sample event properties; `steps` sends on | typed |
list_automation_runs | List an automation's runs, newest first. | typed |
get_automation_run | Retrieve one run with its step-by-step timeline. | typed |
cancel_automation_run | Cancel a run in progress. | typed |
set_consent | Record an opt-in or opt-out from your own system (CRM, checkout, a form). An opt-in for a marketing registration needs proof (source, when, the page). | typed |
list_opt_outs | List opted-out numbers (the suppression list). | typed |
import_opt_outs | Bring a suppression list over from another provider or tool (up to 500 numbers per call), so people who opted out there are never texted here. | typed |
list_scheduled_messages | List single messages scheduled for later and not yet sent. | typed |
get_scheduled_message | Retrieve a pending scheduled message. | typed |
cancel_scheduled_message | Cancel a scheduled message before it sends. | typed |
create_schedule | Send the same text to one number every day, week or month at a local time (e.g. a weekly reminder). Every occurrence runs the usual send checks. | typed |
list_schedules | List recurring schedules. | typed |
get_schedule | Retrieve a recurring schedule with its recent occurrences. | typed |
update_schedule | Pause (active: false) or resume (active: true) a recurring schedule. | typed |
delete_schedule | Delete a recurring schedule. | typed |
get_balance | Prepaid credit balance and auto-recharge setting. | typed |
get_usage | Usage by month, today's counters, and plan limits. | typed |
get_spend_limit | The monthly spend limit and this month's estimated spend. | typed |
get_deliverability | Delivery rates by day, destination carrier, or sending number. | typed |
list_registrations | List 10DLC brand and campaign registrations and their status. Marketing from a local number needs an approved one. | typed |
get_registration | A registration with its checks, status, and linked numbers. | typed |
list_toll_free_verifications | List toll-free verifications and their status (draft, in_review with our team, submitted to the carriers, verified, rejected). A toll-free number texts the public only once verified. | typed |
update_integration | Rename, pause or resume (status), or change an integration's settings or credentials (left-out credentials keep the stored ones). eventTriggers (Mixpanel) maps Mixpanel events to TextKit events; chang | typed |
get_integration_events | Confirm the events behind automations: for a Mixpanel integration, each mapped event with its Mixpanel source events and their 7-day volume, how many reached TextKit and when the last did, and which a | typed |
sync_integration | Sync a connected tool now (up to 6 times an hour) and get what changed. | typed |
disconnect_integration | Disconnect a tool: its credentials and its list are deleted; the contacts stay with their consent. | typed |
create_webhook | Send events (message.received, message.delivered, message.opted_out, ...) to a URL: your app, a CRM, an automation tool. Returns the signing secret once. | incomplete |
list_webhooks | List webhook endpoints. | typed |
update_webhook | Change a webhook endpoint: URL, events, or turn it off (active: false). | incomplete |
delete_webhook | Delete a webhook endpoint. | typed |
rotate_webhook_secret | Replace a webhook endpoint's signing secret (returned once). expire_previous_in keeps the old one signing for that many seconds so the receiver can switch without dropping events. | typed |
test_webhook | Send a signed test.ping to a webhook endpoint and see what it answered. | typed |
replay_failed_webhooks | Re-send every event that failed to reach a webhook endpoint in a window (default the last 24 hours, up to 7 days), after fixing the receiver. | typed |
create_link | Make a tracked short link to copy into a text, ad, email or anywhere else: returns short_url. The same url again returns the same link. Suggest this whenever someone wants to know whether a link gets | typed |
list_links | Every tracked destination with its texts, clicks, conversions and value. The answer to "which link worked?". | typed |
record_conversion | Report a sale or sign-up from someone who came through a tracked link. click_id is the tk value on the landing page's URL; value_cents is what it was worth; external_id (an order id) stops a retry cou | typed |
list_webhook_deliveries | Delivery attempts to your webhook endpoints, with response status codes. | typed |
replay_event | Send an event again to one webhook endpoint (after fixing the receiver). | typed |
create_customer | Platforms sending for other businesses: create a customer to attribute numbers, messages and usage to. | typed |
list_customers | List your customers. | typed |
get_customer | Retrieve a customer. | typed |
update_customer | Rename a customer or change its external_id or metadata. | typed |
delete_customer | Delete a customer. | typed |
get_customer_usage | A customer's messages, verifications and spend for a period. | typed |
create_api_key | Create an API key for an app you are building, to store as a secret in its environment (for example TEXTKIT_API_KEY) so the app can send texts itself. Same mode (test or live) as this connection; opti | typed |
list_api_keys | List the active API keys of this mode (never the secrets). | typed |
revoke_api_key | Revoke an API key of this mode. Immediate and permanent: anything using it stops working. | typed |
export_csv | Export as CSV text for analysis: messages, deliveries, events, opt_outs, webhook_deliveries, usage, usage_monthly, audit_log or credit_history. At most 50,000 rows; narrow the date range with from and | typed |
export_consent | The suppression list, or the full consent ledger with opt-in proof, as CSV text. | typed |
list_audit_logs | Who changed what on the account (keys, team, webhooks, spend limit, numbers, consent, settings), newest first. | typed |
wait_for_events | Wait up to 25 seconds for the next events after a cursor (a reply, a delivery receipt), then return them. | typed |
list_registration_submissions | The filed copies of a 10DLC registration, newest first. | typed |
set_spend_limit | Set or remove the monthly spend cap and its alert thresholds. Live sends over the cap are refused. | typed |
delete_link_domain | Remove a branded link domain. Every short link already sent on it stops working. | typed |
forget_identity | Privacy erasure: forget the phone number linked to a user_id, so its tracked events stop reaching automations. | typed |
Badge
Paste into your README. It updates on every verification.
[](https://app.agent-xm.com/a/com-jointextkit-textkit)
Was this agent useful?
Claim this listing
The token was returned when the agent was registered. No token? Prove the domain or repository instead.