Docs

SubmitFleet has four ways in: the web app, a CLI, an MCP server for agents, and an HTTP API. They all share the same account, products and campaigns.

How a submission works

Every destination is submitted one of two ways:

Either way, nothing is submitted until you approve the exact list, listing fees are always $0 (paid routes are excluded), and a product is never submitted twice to the same place.

CLI

curl -fsSL https://submitfleet.com/install.sh | sh
submitfleet login                    # opens your browser, signs the CLI in (OAuth 2.1 + PKCE)
submitfleet whoami
submitfleet products list
submitfleet catalog search ai --json
submitfleet campaign status CAMPAIGN_ID --json
submitfleet report export CAMPAIGN_ID --format markdown
submitfleet mcp --stdio              # MCP over stdio, signed in as you

Without login, the CLI runs fully local against its own database (self-hosted mode). submitfleet help lists every command.

MCP

Create an agent key in Settings, then add the server to your client:

claude mcp add --transport http submitfleet https://submitfleet.com/mcp \
  --header "Authorization: Bearer sf_agt_..."

Tools are prefixed submitfleet_: products, catalog search, campaign plan, preview, status, reports, the human-action queue and more. An agent can plan a campaign and request approval. There is no tool that grants approval: you approve in the app.

HTTP API

Base URL https://submitfleet.com/api/v1, bearer API key in the Authorization header. JSON in and out; errors carry an error code and a message.

GET  /products                      POST /products
POST /products/extract   {url}      PUT  /products/:id/logo  (image body)
POST /products/:id/approve-facts    (owner)
GET  /catalog?q=&channel=&pricing=  GET  /catalog-stats
POST /campaigns  {product_id, destinations?, channels?, mode?}
POST /campaigns/:id/approval-request
POST /campaigns/:id/approve  {scope_hash}   (owner)
POST /campaigns/:id/run      GET  /campaigns/:id/queue
GET  /submissions/:id/kit    POST /submissions/:id/mark {action, listing_url?, note?}
GET  /reports/:id?format=markdown|json|csv

Self-hosting

SubmitFleet is MIT-licensed. npm i -g @profullstack/submitfleet, then submitfleet serve runs the app, API, MCP and workers in one process on SQLite (or Turso). Source and issues: github.com/profullstack/submitfleet.