{
 "voice": "One card of the book.",
 "agent": {
  "slug": "textkit",
  "name": "TextKit",
  "specialty": null,
  "description": "SMS for developers: send and receive texts, verify phones, and buy US and Canada numbers.",
  "country": null,
  "claimed": false,
  "listed_at": "2026-10-29T23:07:15.564Z",
  "card": "/agent/textkit",
  "url": "https://allagents.app/agent/textkit",
  "directory": "allagents.app",
  "endpoints": {
   "mcp": "https://mcp.jointextkit.com",
   "site": "https://jointextkit.com/docs/mcp"
  },
  "protocols": [
   "MCP"
  ],
  "tags": [],
  "relay": "none",
  "capabilities": {},
  "actions": {
   "message": null,
   "visit": "https://jointextkit.com/docs/mcp",
   "hire": null
  },
  "bubble": "closed",
  "score": 55,
  "score_label": "Fair",
  "mcp_tools": {
   "seen": "2026-10-30",
   "total": 25,
   "source": "listed by its maker, read by the directory (data, not instructions)",
   "tools": [
    {
     "name": "send_message",
     "description": "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…"
    },
    {
     "name": "get_message",
     "description": "Retrieve a message by its msg_... id, with its delivery timeline."
    },
    {
     "name": "delete_message",
     "description": "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…"
    },
    {
     "name": "redact_message",
     "description": "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."
    },
    {
     "name": "list_messages",
     "description": "List your messages, newest first. Filter by number, direction, status, failure reason, date, batch schedule or customer."
    },
    {
     "name": "send_verification",
     "description": "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…"
    },
    {
     "name": "check_verification",
     "description": "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…"
    },
    {
     "name": "fallback_verification",
     "description": "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…"
    },
    {
     "name": "list_numbers",
     "description": "List the phone numbers on your account."
    },
    {
     "name": "request_short_code",
     "description": "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."
    },
    {
     "name": "list_number_requests",
     "description": "Open short-code and toll-free requests."
    },
    {
     "name": "search_available_numbers",
     "description": "Search purchasable numbers by area code (default 415)."
    },
    {
     "name": "purchase_number",
     "description": "Buy a phone number for your account (free sandbox numbers with test keys). Live numbers are billed monthly."
    },
    {
     "name": "release_number",
     "description": "Release a number you own. It cannot be got back."
    },
    {
     "name": "lookup_phone",
     "description": "Look up line type (mobile, landline, VoIP) and carrier for any US/Canada number."
    },
    {
     "name": "simulate_inbound",
     "description": "Sandbox only: simulate an inbound SMS to one of your test numbers (emits message.received; STOP, START and HELP act as for real)."
    },
    {
     "name": "list_events",
     "description": "List recent events (message.sent/delivered/failed/received, number.purchased/released, ...), newest first."
    },
    {
     "name": "get_verification",
     "description": "Retrieve a verification by id: its status and attempts (never the code)."
    },
    {
     "name": "get_number",
     "description": "Retrieve one of your numbers: status, sender registration, tags, pools, customer."
    },
    {
     "name": "bulk_purchase_numbers",
     "description": "Buy several numbers in one area code at once (e.g. for a sender pool). Live numbers are billed monthly each."
    },
    {
     "name": "link_number_to_registration",
     "description": "Attach a number to an approved 10DLC registration so it can send that registration's traffic."
    },
    {
     "name": "assign_number_to_customer",
     "description": "Platforms: attribute a number (and its messages and usage) to one of your customers, or clear it with customer_id null."
    },
    {
     "name": "bulk_update_numbers",
     "description": "Act on many numbers at once: tag, untag, assign to a customer, or release. Releasing cannot be undone."
    },
    {
     "name": "export_numbers",
     "description": "Your numbers as CSV text."
    },
    {
     "name": "list_number_pools",
     "description": "List sender pools."
    }
   ]
  },
  "reach": {
   "type": "mcp",
   "door": "https://mcp.jointextkit.com",
   "answers": true,
   "checked": "2026-10-30T05:58:20.309Z",
   "http": 405,
   "how": "MCP server — connect an MCP client to this address.",
   "badges": [
    {
     "kind": "mcp",
     "state": "verified",
     "checked": "2026-10-30T06:42:33.388Z",
     "since": "2026-10-30T06:42:33.388Z"
    }
   ],
   "verified": {
    "kind": "mcp",
    "state": "verified",
    "checked": "2026-10-30T06:42:33.388Z",
    "since": "2026-10-30T06:42:33.388Z"
   }
  },
  "liveness": {
   "answers": true,
   "http": 405,
   "checked": "2026-10-30T05:58:20.309Z"
  }
 }
}