MCP HeartbeatTHE MCP OBSERVATORY
Public workspace

Explore

Evidence for your next connection.

Independent measurements of remote MCP servers. Every observation has a timestamp.

Read-only probes

MCP server · Communication & messaging

TextKit

SMS for developers: send and receive texts, verify phones, and buy US and Canada numbers.

Checks passed
13 / 22

2 failed · 7 not measured

Median response
689 ms

Median of successful probes over 7 days

30-day uptime
Not measured

Share of countable probes over 30 days, including daily rollups. Auth challenges are excluded.

Discovered tools
161

Tool definitions returned by this server

Independent monitoring

Health & checks

Status history

Responded

The server completed its last measured handshake. This is an observation, not a guarantee.

Last checked
Check summary by test group
Test areaPassedFailedUnmeasured
ConnectionCan a client connect and discover tools?
410
Reliability & speedDoes it respond consistently and quickly?
103
Access & authenticationWhat is required to use this server?
102
Tool qualityAre the tool definitions usable by an agent?
310
Publisher identityCan the publisher be traced to its source?
402

Unmeasured means there is not enough evidence to decide. How these checks work

Inspect individual checks 22 recorded

Core

  • Pass
    Reachable

    Latest probe returned HTTP 200 in 715 ms.

  • Pass
    Valid handshake

    protocolVersion 2025-03-26, serverInfo.name textkit.

  • Pass
    Lists tools

    tools/list returned 161 tools.

  • Fail
    Current protocol

    Negotiated 2025-03-26. The bar is 2025-06-18 or newer.

  • Pass
    HTTPS

    The endpoint URL is https.

Performance

  • Not measured
    Fast (p50)

    Median latency 689 ms over 2 samples in 7 days. The bar is 1000 ms. Need at least 5 samples.

  • Not measured
    Consistent (p95)

    95th percentile 712 ms over 2 samples in 7 days. The bar is 3000 ms. Need at least 20 samples.

  • Not measured
    Reliable (uptime)

    2 of 2 attempts returned a tool list in 30 days (100%). The bar is 99%. Need at least 30 samples.

  • Pass
    Stable tool list

    No tool was removed and no required parameter was added in the last 30 days.

Access

  • Pass
    Open access

    tools/list succeeded with no credential, and the record declares none.

  • Not measured
    Standard auth

    Auth is not required, so the OAuth metadata check does not apply.

  • Not measured
    Free tier cited

    No publisher quote has been checked.

Tools

  • Fail
    Tools described

    6 tools have a description shorter than 20 characters.

  • Pass
    Valid input schemas

    Every inputSchema is a JSON Schema object.

  • Pass
    Parameters documented

    644 of 644 parameters have a description (100%). The bar is 80%.

  • Pass
    Safety hints

    Every tool sets readOnlyHint or destructiveHint.

Publisher

  • Pass
    Verified namespace

    Listed in the Official MCP Registry.

  • Pass
    Website matches publisher

    The website host matches the reverse-domain namespace.

  • Pass
    Source repo linked

    A repository URL is on file.

  • Not measured
    Repo owner matches

    This namespace is not an io.github login, so the owner comparison does not apply.

  • Pass
    Recently updated

    Updated 2026-10-30T13:00:05.224204Z, within 180 days.

  • Not measured
    Open-source licence

    The GitHub licence lookup has not returned an OSI result yet.

Start using TextKit

Connect to this server

Choose your client, copy the configuration, then enable the server in your client’s MCP settings.

Run this command in your terminal, then restart Claude Code.

Claude Code

claude mcp add --transport http textkit https://mcp.jointextkit.com

Capabilities

Tools 161

Showing 100 of 161 tools.

activate_automation

Turn 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.

Discovered
add_to_list

Add contacts to a list by contact_ids and/or phone_numbers (up to 1,000; numbers must already be contacts).

Discovered
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.

Discovered
bulk_purchase_numbers

Buy several numbers in one area code at once (e.g. for a sender pool). Live numbers are billed monthly each.

Discovered
bulk_update_contacts

Add tags to, remove tags from, or delete many contacts by id.

Discovered
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.

Discovered
cancel_automation_run

Cancel a run in progress.

Discovered
cancel_batch

Cancel a batch. Messages already sent stay sent.

Discovered
cancel_scheduled_message

Cancel a scheduled message before it sends.

Discovered
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.

Discovered
clone_number_pool

Copy a sender pool under a new name.

Discovered
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, sourceId), HubSpot (accessToken), Shopify (shopDomain, accessToken), Salesforce, or a webhook. Takes the event or property that shows people agreed to texts (consentEvent / consentField) and the property that holds their phone (phoneField). Credentials are proved with one read, sealed, and never returned. Mixpanel also takes eventTriggers, which turn Mixpanel events into TextKit events that start, end or branch automations; `warnings` names mapped events with no volume in 7 days.

Discovered
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; optional scopes limit it. The secret is returned once; the account owner is emailed.

Discovered
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 checkout_completed was not received send a reminder. A send_sms step with send_time: "optimal_user_time" and max_wait_seconds (60 to 86400, required) waits for the hour that person usually replies or clicks, 10am their time with no history, inside quiet hours: recommend it for marketing and lifecycle texts, leave it off anything time-sensitive, and it is refused for one-time codes and order or shipping texts. For events that repeat, trigger.cooldown_seconds stops the same person starting it again for that long. Merge fields like {{plan}} fill from the trigger event's properties; `issues` names any no tracked event carries. Leave out `from` and TextKit picks a number approved for `category` (marketing, transactional for alerts, otp for codes) when it sends; `sender` shows the numbers, and `issues` says so when none is approved yet. Pass `from` only to pin a number. Drafts send nothing until activated.

Discovered
create_customer

Platforms sending for other businesses: create a customer to attribute numbers, messages and usage to.

Discovered
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 clicked or leads to sales. A link inside a text needs only shorten_links: true on the send.

Discovered
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 links use our domain.

Discovered
create_list

Create a list: a fixed group of contacts (Audience → Lists). Membership is set by hand, unlike a segment, which follows rules.

Discovered
create_number_pool

Create a sender pool from numbers you own.

Discovered
create_registration

Create a 10DLC registration (the carrier registration local numbers need to text the public) and check it: the website, privacy policy, terms, opt-in page and example texts against carrier rules. Returns ready or checks_failed, with each finding, its fix and copy to paste. Nothing goes to the carriers and nothing is billed. Business details come from the person, not from guesses.

Discovered
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.

Discovered
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 matching all (or any) of up to 10 rules. Attributes: tags, contact fields, custom fields (field = "field", key = the name), opt-in status, topic, import, created_at. Behaviour: last_message_at, last_reply_at, batch (key = batch id; value included, sent, failed, skipped or replied) and event (key = a tracked event name). Times take an ISO date or a window like 7d. It is evaluated live each time it is used, so a batch or list sent to it reaches whoever matches then.

Discovered
create_template

Save a message template. Merge tags: {{first_name}}, {{name}}, {{phone}}, {{field:<custom>}}, and per-recipient variables.

Discovered
create_toll_free_verification

Start the carriers' toll-free verification for live toll-free numbers, filled in from the account, its registration, hosted opt-in page and website; any field sent replaces what was filled in. Returns a draft with problems: what the carriers would reject. Nothing goes to the carriers and there is no fee.

Discovered
create_topic

Create a subscription topic, so people can opt out of one kind of message (e.g. promotions) and keep others.

Discovered
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.

Discovered
delete_automation

Delete an automation.

Discovered
delete_contact

Delete a contact. Messages, consent records, and topic preferences for the number are kept.

Discovered
delete_customer

Delete a customer.

Discovered
delete_link_domain

Remove a branded link domain. Every short link already sent on it stops working.

Discovered
delete_list

Delete a list (its contacts stay).

Discovered
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.

Discovered
delete_number_pool

Delete a sender pool. Its numbers are kept.

Discovered
delete_schedule

Delete a recurring schedule.

Discovered
delete_segment

Delete a segment. Contacts are not touched.

Discovered
delete_template

Delete a template.

Discovered
delete_topic

Delete a topic you created (built-in topics stay).

Discovered
delete_webhook

Delete a webhook endpoint.

Discovered
disconnect_integration

Disconnect a tool: its credentials and its list are deleted; the contacts stay with their consent.

Discovered
enter_registration_phone_code

A sole proprietor's registration: the code texted to their mobile after submitting (it lasts 24 hours). The right code sends the campaign to carrier review. The person reads it from their phone.

Discovered
export_consent

The suppression list, or the full consent ledger with opt-in proof, as CSV text.

Discovered
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 to.

Discovered
export_numbers

Your numbers as CSV text.

Discovered
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 phone). Once per verification.

Discovered
forget_identity

Privacy erasure: forget the phone number linked to a user_id, so its tracked events stop reaching automations.

Discovered
get_automation

Retrieve an automation with its trigger and steps.

Discovered
get_automation_run

Retrieve one run with its step-by-step timeline.

Discovered
get_balance

Prepaid credit balance and auto-recharge setting.

Discovered
get_batch

Retrieve a batch with its progress counts.

Discovered
get_batch_results

Results of a batch: delivered, failed, pending, replies, opt-outs (stops), spend, and failures grouped by reason.

Discovered
get_consent

Whether a number is opted in or out, per registration, with its full consent history and proof.

Discovered
get_contact

Retrieve a contact.

Discovered
get_contact_topics

A contact's subscription to each topic.

Discovered
get_customer

Retrieve a customer.

Discovered
get_customer_usage

A customer's messages, verifications and spend for a period.

Discovered
get_deliverability

Delivery rates by day, destination carrier, or sending number.

Discovered
get_integration

One connected tool and its last sync.

Discovered
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 automations start on, wait for or check it. `missing` names events automations rely on that nothing sends. project_events: true also lists every Mixpanel event name with its 7-day volume, to choose what to map.

Discovered
get_link_domain

One short-link domain, with the DNS records it needs.

Discovered
get_list

Retrieve a list and its contact count.

Discovered
get_message

Retrieve a message by its msg_... id, with its delivery timeline.

Discovered
get_number

Retrieve one of your numbers: status, sender registration, tags, pools, customer.

Discovered
get_number_pool

Retrieve a sender pool and its numbers.

Discovered
get_registration

A registration with its checks, status, and linked numbers.

Discovered
get_schedule

Retrieve a recurring schedule with its recent occurrences.

Discovered
get_scheduled_message

Retrieve a pending scheduled message.

Discovered
get_segment

Retrieve a segment and its rules.

Discovered
get_spend_limit

The monthly spend limit and this month's estimated spend.

Discovered
get_template

Retrieve a template.

Discovered
get_toll_free_verification

A toll-free verification: status, numbers, the form, what is missing (problems), and the carriers' reason when it was rejected.

Discovered
get_topic

Retrieve a topic.

Discovered
get_usage

Usage by month, today's counters, and plan limits.

Discovered
get_verification

Retrieve a verification by id: its status and attempts (never the code).

Discovered
get_webhook

Retrieve a webhook endpoint.

Discovered
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 carries consent evidence (status: false records an opt-out). import_id from the first response groups several calls; dry_run: true returns what would change and writes nothing.

Discovered
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.

Discovered
link_number_to_registration

Attach a number to an approved 10DLC registration so it can send that registration's traffic.

Discovered
list_api_keys

List the active API keys of this mode (never the secrets).

Discovered
list_audit_logs

Who changed what on the account (keys, team, webhooks, spend limit, numbers, consent, settings), newest first.

Discovered
list_automation_runs

List an automation's runs, newest first.

Discovered
list_automations

List automations.

Discovered
list_batch_recipients

List a batch's recipients with each one's status.

Discovered
list_batches

List batches (broadcasts), newest first.

Discovered
list_contacts

List contacts, newest first. Filter by tag, segment_id, list_id, exact phone_number, or a free-text q (name, email, company).

Discovered
list_conversions

The latest 100 conversions, newest first.

Discovered
list_customers

List your customers.

Discovered
list_events

List recent events (message.sent/delivered/failed/received, number.purchased/released, ...), newest first.

Discovered
list_integrations

The connected tools: status, settings, last sync (found, added, opted out), and their list. No credentials.

Discovered
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 is verified, or txtkto.com before that.

Discovered
list_links

Every tracked destination with its texts, clicks, conversions and value. The answer to "which link worked?".

Discovered
list_list_contacts

Page through a list's contacts, most recently added first.

Discovered
list_lists

List contact lists with their contact counts.

Discovered
list_messages

List your messages, newest first. Filter by number, direction, status, failure reason, date, batch schedule or customer.

Discovered
list_number_pools

List sender pools.

Discovered
list_number_requests

Open short-code and toll-free requests.

Discovered
list_numbers

List the phone numbers on your account.

Discovered
list_opt_outs

List opted-out numbers (the suppression list).

Discovered
list_registration_submissions

The filed copies of a 10DLC registration, newest first.

Discovered
list_registrations

List 10DLC brand and campaign registrations and their status. Marketing from a local number needs an approved one.

Discovered
list_scheduled_messages

List single messages scheduled for later and not yet sent.

Discovered

Recent measurements

Probe history

View status
Latest stored probes. Raw probe rows are kept for 14 days.
CheckedResultResponseTools
Connected715 ms161
Connected662 ms152