_ registry / mcp streamable-http · checked 1h ago

sendforai

https://sendforai.com

Registry code: 8d150cb40d894733

api record

Transactional and broadcast email at cost. Your agent signs up, tests and sends; no API key.

from a public catalogue that lists it, not from the operator

endpoint
https://sendforai.com/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 sendforai live?
Yes — it answered the hub's last check (checked 1h ago). It answered 100% of checks over the last 30 days.
Is sendforai free to use?
Not anonymously — it asks for a key or a login before it will serve. Whether that key costs anything is the operator's plan to say: the hub measured the door, not the pricing.
What tools does sendforai have?
23 tools: import_contacts, get_account, get_capacity, list_domains, get_usage, get_broadcast, get_domain_status, get_pricing, ….
Is sendforai 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
197ms

last good check

priced tools
0

of 23 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

_ what it can do 23 tools
23 auth-required 23 of 23 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.

  • import_contacts auth-required never probed

    Bulk import up to 10,000 contacts per call, deduplicated by email. Available in a sending month; on the free build tier the error explains what to do.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "contacts"
      ],
      "properties": {
        "contacts": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "email"
            ],
            "properties": {
              "data": {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              },
              "email": {
                "type": "string"
              },
              "subscribed": {
                "type": "boolean"
              }
            }
          },
          "maxItems": 10000,
          "minItems": 1
        }
      }
    }
    arguments 35 lines
  • get_account auth-required 1h ago

    Balance, whether this month's $5 sending fee is paid, auto top-up, the monthly usage budget (used and remaining), emails used and included remaining, and every sending domain. Check this before a large send.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • get_capacity auth-required 1h ago

    How many emails can be sent right now: daily cap, sent today, remaining, warmup stage, and when the window resets.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • list_domains auth-required never probed

    Every domain this account can send from, with role (identity or delegated), status, SES status, warmup stage and daily cap.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • get_usage auth-required never probed

    Emails sent this period, SES cost, what has been billed, included allowance remaining, and a projection to period end.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • get_broadcast auth-required never probed

    Status, cost, approval_url (while awaiting approval), and progress (sent, queued, failed, cancelled, resumes_at) once sending starts.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string"
        }
      }
    }
    arguments 12 lines
  • get_domain_status auth-required 1h ago

    Identity, SES verification status, DNS records still needed, and current sending capacity for the configured domain.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • get_pricing auth-required never probed

    Public, machine-readable pricing. Use it to compute cost before committing to a send.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • verify_domain auth-required never probed

    Create the SES identity for a domain on this account (default: the configured identity domain) and return the DKIM and MAIL FROM records to publish. Idempotent; call again to re-check.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "domain": {
          "type": "string"
        }
      }
    }
    arguments 9 lines
  • add_domain auth-required never probed

    Let this account send from another domain with the same key. First publish DNS TXT _sendforai.<domain> = "v=sfa1; delegate=<identity domain>" (if you have DNS access) or hand that record to your operator, then call this. If the record is not visible yet the response says exactly what to publish. Up to 50 domains, no fee; each keeps its own reputation and warmup.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "domain"
      ],
      "properties": {
        "domain": {
          "type": "string"
        }
      }
    }
    arguments 12 lines
  • plan_email auth-required never probed

    Everything send_email does except sending. Returns cost, capacity after send, suppression hits, and lint warnings with fixes. Call this before send_email when cost or deliverability matters.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "from",
        "to",
        "subject"
      ],
      "properties": {
        "to": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              },
              "maxItems": 50
            }
          ],
          "description": "Recipient address or list (max 50)"
        },
        "from": {
          "type": "string",
          "description": "Sender address on the configured domain, e.g. [email protected] or 'Name <[email protected]>'"
        },
        "html": {
          "type": "string"
        },
        "text": {
          "type": "string"
        },
        "stream": {
          "enum": [
            "transactional",
            "broadcast"
          ],
          "type": "string"
        },
        "subject": {
          "type": "string"
        },
        "markdown": {
          "type": "string",
          "description": "Markdown body. Rendered to responsive HTML plus a text part. Preferred."
        },
        "reply_to": {
          "type": "string"
        },
        "max_cost_usd": {
          "type": "number",
          "description": "Refuse if the billed cost would exceed this"
        },
        "idempotency_key": {
          "type": "string",
          "description": "Safe retries: same key returns the original result"
        }
      }
    }
    arguments 61 lines
  • send_email auth-required never probed

    Send a transactional email from the configured domain. Response includes id, cost, capacity, lint, and a signed receipt.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "from",
        "to",
        "subject"
      ],
      "properties": {
        "to": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {
                "type": "string"
              },
              "maxItems": 50
            }
          ],
          "description": "Recipient address or list (max 50)"
        },
        "from": {
          "type": "string",
          "description": "Sender address on the configured domain, e.g. [email protected] or 'Name <[email protected]>'"
        },
        "html": {
          "type": "string"
        },
        "text": {
          "type": "string"
        },
        "stream": {
          "enum": [
            "transactional",
            "broadcast"
          ],
          "type": "string"
        },
        "subject": {
          "type": "string"
        },
        "markdown": {
          "type": "string",
          "description": "Markdown body. Rendered to responsive HTML plus a text part. Preferred."
        },
        "reply_to": {
          "type": "string"
        },
        "max_cost_usd": {
          "type": "number",
          "description": "Refuse if the billed cost would exceed this"
        },
        "idempotency_key": {
          "type": "string",
          "description": "Safe retries: same key returns the original result"
        }
      }
    }
    arguments 61 lines
  • upsert_contact auth-required never probed

    Store a contact for broadcasts. Contacts are unlimited on every plan. Data is arbitrary JSON you can filter on later.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "email"
      ],
      "properties": {
        "data": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        "email": {
          "type": "string"
        },
        "subscribed": {
          "type": "boolean"
        }
      }
    }
    arguments 22 lines
  • list_contacts auth-required never probed

    Page through contacts.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 1000,
          "minimum": 1
        },
        "cursor": {
          "type": "string"
        }
      }
    }
    arguments 14 lines
  • create_broadcast auth-required never probed

    Create a broadcast to subscribed contacts (optionally filtered by contact data). By default it waits for a human: the response includes approval_url. Hand that link to your operator; clicking it sends. Use dry_run to see recipients, cost, and lint first.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "from",
        "subject"
      ],
      "properties": {
        "from": {
          "type": "string"
        },
        "html": {
          "type": "string"
        },
        "text": {
          "type": "string"
        },
        "filter": {
          "type": "object",
          "description": "Match contacts whose data contains these keys, e.g. { plan: 'pro' }",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "type": [
              "string",
              "number",
              "boolean"
            ]
          }
        },
        "dry_run": {
          "type": "boolean"
        },
        "subject": {
          "type": "string"
        },
        "markdown": {
          "type": "string"
        },
        "max_cost_usd": {
          "type": "number"
        },
        "require_approval": {
          "type": "boolean",
          "description": "Default true. Set false only if your operator has already approved."
        }
      }
    }
    arguments 49 lines
  • send_broadcast auth-required never probed

    Starts sending an approved broadcast in the background (status: sending). Poll get_broadcast for progress. Large Member broadcasts continue after the daily cap resets. Returns a 409 with the approval_url if a human has not approved it yet.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string"
        }
      }
    }
    arguments 12 lines
  • cancel_broadcast auth-required never probed

    Cancel a broadcast before or during sending. Emails already sent stay sent; the unsent remainder is cancelled.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string"
        }
      }
    }
    arguments 12 lines
  • add_credit auth-required never probed

    Returns a checkout_url for your human operator to add prepaid credit (minimum $10). Use it when a send returns balance_required. $5 is taken only in months you send to anyone outside your own domains (10,000 emails included), then $0.11/1k at cost. Pass auto_topup: true to let their saved card refill the balance automatically, always within the budget they set. Never pay it yourself; hand the link over. account.topped_up appears in list_events when they finish.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "amount_usd": {
          "type": "number",
          "minimum": 10
        },
        "auto_topup": {
          "type": "boolean"
        }
      }
    }
    arguments 13 lines
  • set_budget auth-required never probed

    Lowering the budget applies immediately. Raising it returns an approval_url that only your human operator can approve; hand it over. Use when a send returns budget_exceeded.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "monthly_usd"
      ],
      "properties": {
        "monthly_usd": {
          "type": "number",
          "minimum": 0
        }
      }
    }
    arguments 13 lines
  • set_auto_topup auth-required never probed

    Turn auto top-up off, or change its amount. Turning it on requires a saved card from a human-completed add_credit.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "enabled"
      ],
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "amount_usd": {
          "type": "number",
          "minimum": 10
        }
      }
    }
    arguments 16 lines
  • billing_portal auth-required never probed

    A Stripe billing portal link for your operator: update the saved card and download receipts.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • list_events auth-required never probed

    Pull delivery, bounce, complaint, broadcast, and unsubscribe events by cursor. No webhook endpoint needed. Keep next_cursor between calls.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "type": {
          "type": "string"
        },
        "limit": {
          "type": "integer",
          "maximum": 1000,
          "minimum": 1
        },
        "cursor": {
          "type": "string"
        }
      }
    }
    arguments 17 lines
  • whoami auth-required never probed

    The identity this server acts as, how it authenticates, and whether it is a sandbox.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 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 8d150cb40d894733.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/8d150cb40d894733/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/8d150cb40d894733/badge.svg)](https://brick.blue/agent/8d150cb40d894733?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
100%

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.