_ registry / mcp streamable-http · checked 51m ago

notify

https://api.n0t1fy.dev

Registry code: 8d3f00561904028b

api record

NOTIFY sends transactional SMS (verification, sign-in and password-reset codes) to Georgian mobile numbers (+9955XXXXXXXX), rendered from built-in templates in Georgian or English. Start with a test key: if no key is configured, call create_test_key, then send_message and get_message with it as api_key. Test keys never send a real SMS and never spend credits. These tools are for trying NOTIFY and checking messages; the application's own code should call the HTTP API (base URL https://api.n0t1fy.dev, reference https://n0t1fy.dev/api.md). NOTIFY sends codes but does not create or check them;…

endpoint
https://api.n0t1fy.dev/mcp
protocol
streamable-http ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is notify live?
Yes — it answered the hub's last check (checked 51m ago). It answered 100% of checks over the last 30 days.
Is notify free to use?
Yes — the hub reached it with no key and no payment.
What tools does notify have?
3 tools: get_message, create_test_key, send_message.
Is notify safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
100%

90 days 100%· all time 100%

latency
217ms

last good check

priced tools
0

of 3 tools

_ answered our checks, 90 days 1 checks · signed record
  • unknown → live
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

inferred, not observed

Access was read off the card rather than seen on the wire: inferred: the handshake, the tool list and a call without arguments went through with no key and no payment asked; no tool was run

_ what it can do 3 tools
3 never probed 0 of 3 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • get_message unknown 51m ago

    Read the current state of a message sent with a key of the same project. Poll only while `status` is `queued` or `submitted`: `delivered`, `undeliverable` and `failed` are final, and `unknown` never changes. Wait about 2 seconds before the first read and double the wait each time, up to 30 seconds. Always set a time limit (two minutes is generous for a test message); when it passes, treat the message as unconfirmed and do not send it again.

    mcp-tool

    {
      "type": "object",
      "required": [
        "message_id"
      ],
      "properties": {
        "api_key": {
          "type": "string",
          "description": "An sk_test_ key, for example from create_test_key. Leave it out to use the key in this MCP server's Authorization header. A live key (sk_live_) is refused here: tool arguments are kept in the conversation, so a live key belongs in the header."
        },
        "message_id": {
          "type": "string",
          "description": "The message `id` from send_message, such as msg_01J8…."
        }
      },
      "additionalProperties": false
    }
    arguments 17 lines
  • create_test_key unknown never probed

    Get an sk_test_ API key instantly, with no account and no human. A test key never sends a real SMS and never spends credits, so a whole integration can be built and verified with it. Pass it as `api_key` to send_message and get_message, and keep it in the application's configuration (for example NOTIFY_API_KEY), never in source code. The result also has a `claim_url` for a human: opening it lets them sign in and take over the project. Anyone who opens it, signs in and confirms becomes the owner: give it only to the person who will own the project, and do not paste it into shared logs or tickets. Real SMS need an sk_live_ key that the human creates on the dashboard (https://n0t1fy.dev/dashboard). Limited to a few keys per minute and per day for each address: reuse a key you already have.

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "additionalProperties": false
    }
    arguments 5 lines
  • send_message unknown never probed

    Send one transactional SMS to a Georgian mobile number. The text comes from a built-in template; there is no free text. With a test key (sk_test_) nothing is really sent: a simulator answers. These recipients simulate outcomes: +995500000001 rejected (status `failed`); +995500000002 provider unreachable (error `provider_unavailable`: nothing was sent, retry with the same idempotency_key); +995500000003 ambiguous (status `unknown`); +995500000004 accepted, then `undeliverable`. Any other valid number is accepted, then `delivered`, within about 30 seconds. With a live key it sends a real SMS and spends one credit per segment. Read `message.status` in the result. `submitted`: the provider accepted it, which is not yet delivery to the phone. `failed`: refused; `message.error` says why. `unknown`: it may or may not have been sent, so do not send it again automatically. `replayed: true`: this idempotency_key and request were already processed, and no second SMS was sent. Call get_message to learn the final outcome.

    mcp-tool

    {
      "type": "object",
      "required": [
        "to",
        "template",
        "variables",
        "idempotency_key"
      ],
      "properties": {
        "to": {
          "type": "string",
          "pattern": "^\\+9955[0-9]{8}$",
          "description": "Recipient in E.164 format: `+9955` followed by eight digits. No other country or format is accepted, and numbers are never normalized on your behalf."
        },
        "locale": {
          "enum": [
            "ka",
            "en"
          ],
          "type": "string",
          "default": "ka",
          "description": "Language of the message: `ka` (Georgian, the default) or `en`."
        },
        "api_key": {
          "type": "string",
          "description": "An sk_test_ key, for example from create_test_key. Leave it out to use the key in this MCP server's Authorization header. A live key (sk_live_) is refused here: tool arguments are kept in the conversation, so a live key belongs in the header."
        },
        "template": {
          "enum": [
            "verification_code",
            "login_code",
            "password_reset_code"
          ],
          "type": "string",
          "description": "Which message to send. Message text is never free-form: every message is rendered from one of these templates.\n\n- `verification_code` (`code`): Your verification code is {code}. Do not share it with anyone.\n- `login_code` (`code`): Your sign-in code is {code}. If you did not request it, ignore this message.\n- `password_reset_code` (`code`, `minutes`): Your password reset code is {code}. It expires in {minutes} minutes."
        },
        "variables": {
          "type": "object",
          "description": "Values for the template's placeholders, all as JSON strings. A `code` is 4 to 8 digits; `minutes` is 1 to 999. Values that look like a link, a web address, or a phone number are refused.",
          "additionalProperties": {
            "type": "string"
          }
        },
        "idempotency_key": {
          "type": "string",
          "maxLength": 200,
          "minLength": 1,
          "description": "A new unique value (a UUID) for each logical message. Reuse it only to retry the identical request: the retry then returns the original message instead of sending a second SMS."
        }
      },
      "additionalProperties": false
    }
    arguments 52 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id 8d3f00561904028b.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/8d3f00561904028b/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/8d3f00561904028b/badge.svg)](https://brick.blue/agent/8d3f00561904028b?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
70%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.