Skip to content

asms

ai.asms/asmsasms.aistreamable-httpv1.1.0Scanned

Phone numbers for AI agents: SMS verification codes and rented numbers that receive SMS.

12 tools: 4 can delete or cancel things, 1 change things and 7 only read.

Tools: 4 delete, 0 irreversible, 1 write, 7 read.
  • Reads private data · 0
  • Reads text others write · 4
  • Can send data out · 0
  • No findings

Anlyon alternative

5 of these tools change something. Run those as governed actions.

Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.

Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.

Import an OpenAPI spec →

Tools

Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.

12 tools

Deletes or cancels 4Claude Code: deny
  • cancel_orderRarely needed.Reads text others writeNo findings

    Why it is in this group

    • The name "cancel_order" says "cancel": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Rarely needed. To retry a verification do NOT cancel: just call create_otp_order again, because every unfilled order auto-refunds within 10 minutes on its own, and cancel is blocked for the first 10 minutes anyway. Only use this to release an order you are certain you no longer need once its 10-minute hold has passed.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • cancel_rentalCancel a rented number and refund it.Reads text others writeNo findings

    Why it is in this group

    • The name "cancel_rental" says "cancel": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Cancel a rented number and refund it. Only possible between 5 and 120 minutes after renting, and only if the number has received no SMS; after that the rental runs to its end date.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • create_otp_orderBuy a number to receive an OTP: allocates a number, debits the wallet, and returns an orderId + phoneNumber.Reads text others writeNo findings

    Why it is in this group

    • The name "create_otp_order" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Buy a number to receive an OTP: allocates a number, debits the wallet, and returns an orderId + phoneNumber. Then poll with poll_sms. If no code arrives, do NOT cancel to retry: simply call create_otp_order again for a fresh number and keep polling that one. Unfilled orders auto-refund within 10 minutes, so you only pay for codes that actually land and there is no penalty for ordering repeatedly. When a service keeps rejecting codes, order on the "us1" (Non-VoIP AT&T) pool, which has the highest delivery rate. WARNING: this spends real wallet balance.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
  • rent_numberRent a phone number in a country for a period (get the periods and prices from get_rental_offers first).Reads text others writeNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it destructive (destructiveHint: true).

    What it can reach

    • untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
    Description, as the server wrote it
    Rent a phone number in a country for a period (get the periods and prices from get_rental_offers first). Debits the wallet and returns the number and when the rental ends. Read its SMS with read_rental_sms. WARNING: this spends real wallet balance; confirm the country, period and price with the user first.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: false
    • openWorldHint: true
Changes things 1Claude Code: ask
  • poll_smsCheck for the SMS / OTP code on an order.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Check for the SMS / OTP code on an order. Returns the code once it has arrived, otherwise an empty result: poll again after a few seconds. If nothing lands after a minute or two, the fastest path is to order a fresh number with create_otp_order (prefer the "us1" Non-VoIP pool) and leave the original: it auto-refunds within 10 minutes. Never cancel just to retry, and there is no charge for ordering again, you only pay for codes that arrive.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
Only reads 7Show 7 read-only tools
  • get_balanceGet the current wallet balance for the authenticated account.No findings

    Why it is in this group

    • The name "get_balance" says "get": a word for reading.
    Description, as the server wrote it
    Get the current wallet balance for the authenticated account.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • get_inventoryGet how many numbers are in stock for a service in a country.No findings

    Why it is in this group

    • The name "get_inventory" says "get": a word for reading.
    Description, as the server wrote it
    Get how many numbers are in stock for a service in a country. Omit `service` to list stock for every available service.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • get_pricingGet the retail price per OTP activation for a service in a country.No findings

    Why it is in this group

    • The name "get_pricing" says "get": a word for reading.
    Description, as the server wrote it
    Get the retail price per OTP activation for a service in a country. Omit `service` to list prices for every available service.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • get_rental_offersList the rental periods and prices for a country (1 day to 12 months).No findings

    Why it is in this group

    • The name "get_rental_offers" says "get": a word for reading.
    Description, as the server wrote it
    List the rental periods and prices for a country (1 day to 12 months). A rented number is yours for the whole period and receives every SMS sent to it, unlike an OTP order, which is for one code. Omit `country` to list the countries numbers can be rented in.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • list_active_ordersList recent OTP orders for the account (awaiting a code or already received).No findings

    Why it is in this group

    • The name "list_active_orders" says "list": a word for reading.
    Description, as the server wrote it
    List recent OTP orders for the account (awaiting a code or already received).

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • list_rentalsList the account's rented numbers with their country, period and end date.No findings

    Why it is in this group

    • The name "list_rentals" says "list": a word for reading.
    Description, as the server wrote it
    List the account's rented numbers with their country, period and end date. Ended rentals are left out unless `includeEnded` is true.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • read_rental_smsRead the SMS a rented number has received during this rental, newest first.No findings

    Why it is in this group

    • The name "read_rental_sms" says "read": a word for reading.
    Description, as the server wrote it
    Read the SMS a rented number has received during this rental, newest first. Poll again every few seconds while waiting for a message.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

No private-data, untrusted-input, outbound path in this server alone: no tool is tagged private-data or outbound.

Reads private data0
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write4
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out0
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Findings

Matches of fixed checks, with the text they matched.

No check matched anything in these tool definitions. That is not a safety guarantee.

History

Changes to its tool definitions and to its remote endpoint, newest first.

No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.

Install

Pinned to version 1.1.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http asms https://asms.ai/mcp
claude mcp add --transport http asms https://asms.ai/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__asms__get_balance",
      "mcp__asms__get_pricing",
      "mcp__asms__get_inventory",
      "mcp__asms__list_active_orders",
      "mcp__asms__get_rental_offers",
      "mcp__asms__list_rentals",
      "mcp__asms__read_rental_sms"
    ],
    "ask": [
      "mcp__asms__poll_sms"
    ],
    "deny": [
      "mcp__asms__create_otp_order",
      "mcp__asms__cancel_order",
      "mcp__asms__rent_number",
      "mcp__asms__cancel_rental"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as asms. Review it before you use it.

Capability tags behind 4 rules
  • mcp__asms__create_otp_order untrusted-input
  • mcp__asms__cancel_order untrusted-input
  • mcp__asms__rent_number untrusted-input
  • mcp__asms__cancel_rental untrusted-input

Pin

Keep the decision: fail CI when the tools change, follow every change, or show a badge.

Pin in CI

Fail a build when the tools you reviewed are not the tools the server serves today.

curl -s "https://anlyon.dev/api/v1/servers/ai.asms/asms/verify?hash=c14fe88848d151b4f03264eabbc420739f3a4e23d736b067bd7191779330e166" | jq -e '.changed == false'

Pinned hash c14fe88848d1, from Oct 29, 2026, 18:24 UTC.

Watch

Get told when its tools change: a new tool, a new description, a new class.

https://anlyon.dev/servers/ai.asms/asms/changes.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for ai.asms/asms
[![anlyon.dev](https://anlyon.dev/badge/ai.asms/asms.svg)](https://anlyon.dev/servers/ai.asms/asms)

Source: MCP Registry · repository. Synced Oct 29, 2026, 18:24 UTC.