Your agent submits.
You only pay
when it publishes.
One manifest, many directories, pay per publish. submitr is an MCP server: your agent sends a project manifest, gets a priced quote, you approve — and funds are captured only when a listing actually goes live.
agent: builds manifest → gets quote → you approve → submitr distributes.
↩ receipts loop: pay per publish — escrow on submit, capture on published, auto-refund on rejected / failed.
Three tools. That's the whole API.
Submissions are never a blind call. The founder — or their policy — always decides between the quote and the commit.
| Tool | What it does | Cost |
|---|---|---|
| quote_submission(manifest, policy?) | Match directories, return prices + authority scores + review times. The core contract is a JSON Schema — the companion agent skill generates the manifest from a repo or landing page. |
free |
| submit(manifest, selection, payment_ref?) | Create submission jobs. Selection is one union type: explicit ids, a bundle, or a delegated policy. Escrow on submit — funds are held, not captured. |
escrow |
| submission_status(job_id) | Job state + listing URL per directory. The listing URL is the receipt — auditable proof of publish. |
free |
Quote → approve → commit.
Explicit picks, curated bundles, and delegated policy are the same API union type — trust levels can evolve without breaking clients.
explicit
you pickHand-pick specific directory IDs from the quote. Maximum control, line-item pricing.
{
"type": "explicit",
"directory_ids": [
"submitr-directory",
"devtools-daily"
]
}
bundle
curated packPick a curated pack — launch or devtools — and grow with the registry.
{
"type": "bundle",
"bundle_id": "launch"
}
policy
delegate to agentDelegate spend to your agent inside hard rules — budget cap, authority floor, blocklist.
{
"type": "policy",
"max_budget_usd": 25,
"min_authority_score": 40,
"price_ceiling_per_directory": 5
}
Pay per publish. Escrow, not blind spend.
x402-native: the agent pays in USDC inside the same request loop — no account, no signup.
Failed attempts cost the founder nothing. This is what makes agents willing to spend autonomously — the downside of a rejection is zero.
Every submission_status response carries the live listing URL as the receipt, so spend is always auditable per directory.
Curation is the product.
A paid automated submission API is a spam magnet. The five-stage quality pipeline is the barrier to entry — and the reason directories accept submitr listings.
house rule — legit rejections refund, spam forfeits. adapters carry a health score: a directory changes its form → success rate drops → auto-quarantine and fix.
One adapter per directory.
However a directory takes submissions, there's an adapter for it — and each one is monitored for drift.
api
workingThe directory exposes a submission endpoint. submitr's own directory ships first — near-zero marginal cost, the cheap tier.
POST /listings
→ 201 · listing_url
form
workingPlaywright browser automation fills the directory's form, then polls the inbox for the confirmation email.
playwright → fill → submit poll inbox → confirm → live
Submission by email — natively agent-friendly, no browser required.
manifest → MIME → send reply-thread → receipt
v0.4 — curation live.
Open roadmap, no vaporware. Everything marked TODO in the code is the remaining work.
Shipped 6 / 10
- ✓ Durable job store + queue SQLite · crash recovery
- ✓ Payment rail x402 · escrow / capture / refund
- ✓ Curation stages 1–4 mechanical → reputation
- ✓ Form adapter Playwright + email confirm
- ✓ Bundles launch · devtools
Next in order
- □ submitr's own directory service the live api target
- □ Hardening before real money x402 validation · embedding dedup
- □ First real external directories verified form configs
- □ Policy-delegated auto-submit hosted HTTP + OAuth
Wire it into your agent.
stdio MCP server. Works with Claude Code, Claude Desktop, Cursor — anything that speaks MCP.
$ claude mcp add --transport stdio submitr -- npx -y submitr