The open wire between AI agents and social growth.

OpenSMM is a provider-neutral order protocol. An agent searches a catalog, locks a quote, pays the provider directly in USDC on Base, and tracks execution — through MCP tools or plain HTTP.

Read the spec
git clone https://github.com/opensmm-protocol/mcp-server && npm install && npm test

MIT licensed. Ten MCP tools. One rule: the same call over REST and MCP returns the same order. Browse the live catalog — 4,000+ services, refreshed from supply nodes.

How an order moves

  1. 1

    Search

    search_services finds offers by platform and objective across every connected node, with per-1000 rates.

  2. 2

    Quote

    get_quote locks service, quantity, price and expiry. Quotes are consumed exactly once.

  3. 3

    Order

    create_order is idempotent on clientReference and answers 402 with payment requirements.

  4. 4

    Pay

    The agent sends USDC on Base to the provider's own address — x402 style. The gateway never holds funds.

  5. 5

    Track

    get_order_status polls two independent statuses — payment and execution — to COMPLETED.

Ten tools, one contract

MCP is one inbound adapter; REST under /v0 is the canonical binding. Same call, same domain objects, any transport.

get_capabilities

Protocol version, commands, payment methods, catalog version.

search_services

Search the catalog by text, platform and objective.

get_service

Rate, rate basis, min/max, parameters, refill and cancel support.

get_quote

A priced, expiring offer. Mandatory before ordering.

create_order

Idempotent order creation; returns payment requirements.

get_order_status

Payment and execution status, polled safely.

cancel_order

Cancel where the service supports it.

request_refill

Restore drops on completed or partial orders.

list_providers

Pseudonymous nodes with gateway-measured quality metrics.

register_provider

Permissionless supply-node onboarding. No emails, no forms.

Money never transits the gateway

Direct settlement is the canonical topology. The payment requirement of an order names the provider's own payout address; the agent pays it on Base in USDC. OpenSMM routes, quotes and measures — it is software, not a counterparty.

No balances, no custody, no merchant of record. A gateway that only routes has nothing to steal and nothing to freeze.

Reputation is measured, not claimed

Providers are pseudonymous (provider-alpha, provider-beta, …) and every quality number is observed by the gateway from its own orders. Self-reported rates are forbidden; a metric appears only when the sample justifies it.

qualityScore = deliveredRatio1.5 × retentionD72 × e−startP50 / 300
TierRequirements (all measured)
Ssample ≥ 50, delivered ≥ 0.98, retention D7 ≥ 0.95, start p50 ≤ 60s
Asample ≥ 20, delivered ≥ 0.95, retention D7 ≥ 0.85
Bsample ≥ 5, delivered ≥ 0.80
Unrankedinsufficient data — the node is volume-capped until it proves itself

Supervision is built in: catalogs re-sync on an interval, three consecutive sync failures suspend a node, one success brings it back. New nodes start UNVERIFIED with a per-order volume cap — an exit scam cannot take more than the cap allows.

Run a supply node

If your API speaks the classic SMM panel dialect (key + action) or a reseller REST shape, registration is one call. The gateway validates the endpoint, healthchecks it by listing your offers, and syncs them into the catalog.

register_provider
{
  "adapter": "smm-v2",
  "endpoint": "https://your-panel.example/api/v2",
  "apiKey": "pk_live_…",
  "payoutAddress": "0x…",
  "publiclyListed": false
}

Your key is never returned, logged or listed. Add a payout address and every order on your services pays you directly. Or skip the JSON entirely: paste a prompt into your AI assistant and let it do the call.