# com.submitmap/directory (remote · submitmap.com)

A directory of product launch platforms: where your product qualifies and how each form is filled.

- Trust score: 60/100 (medium)
- Change this week: +12
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-21

## Components

- remote · `submitmap.com`: 60/100 (this document), [markdown](https://verifymcp.io/servers/com-submitmap-directory/api-mcp.md), [page](https://verifymcp.io/servers/com-submitmap-directory/api-mcp)

## Channel facts

- Endpoint: `https://submitmap.com/api/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-21.

- **Endpoint Security**: 57/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 11 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 61/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 2596 tokens (~236/item across 11 items; 11 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 83/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 49% of tool parameters carry a description.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http com-submitmap-directory https://submitmap.com/api/mcp
```

### Codex

```toml
[mcp_servers.com-submitmap-directory]
url = "https://submitmap.com/api/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-submitmap-directory": {
      "type": "remote",
      "url": "https://submitmap.com/api/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-submitmap-directory --url https://submitmap.com/api/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-submitmap-directory:
    url: "https://submitmap.com/api/mcp"
```

### Other

```json
{
  "mcpServers": {
    "com-submitmap-directory": {
      "type": "http",
      "url": "https://submitmap.com/api/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-21 (score 60, 0)

- [functional] Schema quality: excellent → good
- [cosmetic] “create_project” reworded the description of “facts”

### 2026-08-20 (score 60, 0)

- [security] Tool “create_project” rewrote its description, which is the text the model reads
- [security] Tool “whoami” rewrote its description, which is the text the model reads
- [cosmetic] “search_platforms” reworded the description of “maxApprovalDays”
- [cosmetic] “search_platforms” reworded the description of “sort”

### 2026-08-19 (score 60, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-17 (score 59, +1)

- [security] The server rewrote its instructions, which are the text every model session reads
- [functional] Schema quality: good → excellent

### 2026-08-16 (score 58, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “plan_submissions” rewrote its description, which is the text the model reads
- [security] Tool “qualify_project” rewrote its description, which is the text the model reads
- [security] Tool “record_submission” rewrote its description, which is the text the model reads
- [security] Tool “search_platforms” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 176 → 217
- [functional improvement] Tool coverage: 41% → 49%
- [cosmetic] “search_platforms” added an optional parameter “excludeTracked”
- [cosmetic] “search_platforms” added an optional parameter “limit”
- [cosmetic] “search_platforms” added an optional parameter “maxDomainRating”
- [cosmetic] “search_platforms” added an optional parameter “minDomainRating”
- [cosmetic] “search_platforms” added an optional parameter “projectId”
- [cosmetic] “search_platforms” added an optional parameter “sort”
- [cosmetic] “record_submission” reworded the description of “status”

### 2026-08-15 (score 58, +10)

- [security] Tool “list_projects” rewrote its description, which is the text the model reads
- [security] Tool “list_submissions” rewrote its description, which is the text the model reads
- [functional improvement] Schema quality: unverified → good

### 2026-08-14 (score 48, −9)

- [security] Tool “get_platform” rewrote its description, which is the text the model reads
- [security] Tool “submission_playbook” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 150 → 167
- [functional regression] Schema quality: good → unverified
- [functional improvement] Stability: unverified → 0.03
- [cosmetic] “submission_playbook” added an optional parameter “signInAs”
- [cosmetic] “qualify_project” reworded the description of “categories”

### 2026-08-13 (score 57)

First indexed and scored.

## MCP tools (11)

### `search_platforms` (~401 tokens)

Search the SubmitMap directory of startup launch platforms and directories. Filter by free-text query, category, pricing, link type, backlink requirement, approval speed or domain rating, and with a token leave out the ones this project has already been sent to. This is the tool behind "find me a small directory I can submit to right now": it is the whole directory, so answer from it rather than from what you remember of the web. Returns summaries; call get_platform for the full record including the submission steps.

Input parameters:

- `category` (string): e.g. "AI tools", "Dev tools", "Web apps".
- `dofollow` (boolean): Only platforms giving a dofollow backlink.
- `excludeTracked` (boolean): Leave out every platform this project has already been submitted to or planned for. Needs a token, and is what makes "one I have not done yet" answerable.
- `limit` (number): Return at most this many. The count is unaffected.
- `maxApprovalDays` (number): Only platforms approving within this many days. Leaves out every platform that publishes no approval time, the same way a rating bound leaves out the unrated.
- `maxDomainRating` (number): Only platforms up to this domain rating. The small, quick, unglamorous end of the directory, which is where a first submission usually belongs.
- `minDomainRating` (number): Only platforms with at least this domain rating.
- `pricing` (string)
- `projectId` (string): Omit it when the account has one project, which is the free tier.
- `query` (string): Free text matched against name, tagline and categories.
- `requiresBacklink` (boolean): Filter on whether they demand a badge/link back.
- `sort` (string): Fastest approval first (the default), or strongest domain first. Either way, a platform that publishes no approval time comes last rather than reading as instant.

### `get_platform` (~130 tokens)

Full record for one platform: eligibility, disqualifiers, step-by-step submission instructions, requirements, gotchas and expected outcome. With a token it also carries agentPrompt, the brief for that platform's form, and agentGotchas, the traps that only bite something filling it (a placeholder that contradicts its label, a second email input belonging to a newsletter, a honeypot); without a token both are null. For a stored project, submission_playbook returns the same brief with the values already filled in.

Input parameters:

- `slug` (string, required): Platform slug, e.g. "product-hunt".

### `qualify_project` (~432 tokens)

Given a product, work out which platforms it qualifies for right now, which it could qualify for after supplying something (with the exact list of what is missing), and which are structurally out of reach. It also hands back `recommended`: a run in the order it should be worked, already cut to what a connected account can still track, so the plan comes out of the directory rather than out of what you remember of the web. Needs no account: describe the product inline. Every field is optional and an unanswered field becomes a gap to fill rather than a rejection.

Input parameters:

- `acceptsBacklink` (boolean)
- `categories` (array): Every audience and form factor this product belongs to, not just the main one. A product is often several at once, and one missing tag is one directory it never hears about: a repository holding a br…
- `coverImage` (boolean)
- `demoVideo` (boolean)
- `docs` (boolean)
- `domainRating` (number)
- `livePublicUrl` (boolean)
- `logoSquare` (boolean)
- `monthlyTraffic` (number)
- `name` (string)
- `openSignup` (boolean)
- `payingCustomers` (boolean)
- `pricingModel` (string)
- `pricingPage` (boolean)
- `privacyPolicy` (boolean)
- `publicRepo` (boolean)
- `stage` (string)
- `url` (string)

### `whoami` (~77 tokens)

Which SubmitMap account this token belongs to, named by its email address, which plan it is on, and how much of the free tier is left. Call it first if you are unsure whether the maker is connected, and tell them the address it reports: it is the only way either of you can tell one of their accounts from another.

### `list_projects` (~84 tokens)

The projects on this account, each with its facts (eligibility answers) and its pack (what a submission form asks for), plus what is still missing from the pack. Call it whenever the maker says "my product" or "my project" without naming one: it is how you find out which project they mean, and every other account tool takes the id it returns.

### `create_project` (~280 tokens)

Store a product on the account. Before asking the maker anything, use what you can already see: a README, package metadata, the site's own copy and title, an assets or public folder. A maker working in their product's repository should be able to say 'add my product to SubmitMap' and get a filled-in project back, with questions only about what is genuinely not there. Fill in as much as you can, leave the rest, and come back with update_project. Facts drive what it qualifies for; the pack is what you will paste into forms later. Ask about images early: most platforms want a square logo and many want a cover, and every asset in the pack is two fields, the public address (logoUrl) and the file on the maker's machine (logoFile), because a form uploads the file and only the address can be shown back to them.

Input parameters:

- `facts` (object): Same shape qualify_project takes: stage, pricingModel, categories, and the booleans. Leave domainRating out: the url is measured against Ahrefs on the way in and the measured number is what gets stor…
- `name` (string, required)
- `pack` (object)
- `pitch` (string): One paragraph in the maker's own words.
- `url` (string)

### `update_project` (~98 tokens)

Fill in or correct a stored project. Facts and pack are merged into what is there, so you can add one field at a time as the maker answers.

Input parameters:

- `facts` (object)
- `name` (string)
- `pack` (object)
- `pitch` (string)
- `projectId` (string): Omit it when the account has one project, which is the free tier.
- `url` (string)

### `submission_playbook` (~259 tokens)

Everything needed to submit a stored project to one platform, yourself, in the maker's browser: a preflight of what is still missing, the sign-in plan (on the first submission it carries a question for the maker: hand every login back to them, or use the Google address they write out, which you then pass back as signInAs), the pack values mapped onto the fields the form asks for, the steps, the gotchas, the agentGotchas (traps in the form itself), and the call to make afterwards. Read the preflight before opening a tab.

Input parameters:

- `platformSlug` (string, required)
- `projectId` (string): Omit it when the account has one project, which is the free tier.
- `signInAs` (string): The Google address the maker wrote out when they agreed you could sign in for them on this project. Pass it on every call after they say it, so the answer travels with the work instead of living in y…

### `record_submission` (~280 tokens)

Log what happened to the dashboard: the listing URL, when it was sent, when it goes live. Call it as soon as a submission lands, including when it is only queued for review, and including when you are not sure it landed: that is what `attempted` is for. Planning costs nothing; this is the call that spends a tracked platform on the free plan, and it spends it once, for good, so an unrecorded submission is the expensive mistake here, not a recorded uncertainty.

Input parameters:

- `launchAt` (string): ISO 8601, if it is scheduled.
- `listingUrl` (string): The product's URL on that platform.
- `note` (string)
- `platformSlug` (string, required)
- `projectId` (string): Omit it when the account has one project, which is the free tier.
- `status` (string, required): Use `attempted` when the form was sent and you cannot prove it arrived: the tab died, the connection dropped, the page never came back. It is not a lesser `submitted`, it is the honest one, and it ca…
- `submittedAt` (string): ISO 8601.

### `plan_submissions` (~292 tokens)

Write the run order for a project: which platforms, in what sequence, and why each one is where it is. Pass the platforms in the order they should be worked, with a short reason on each, plus a summary of the strategy. The plan appears on the maker's dashboard as a checklist that ticks itself off as submissions land. Anything already tracked is reordered rather than reset. Call it after qualify_project, using the `recommended` list it hands back. A plan costs nothing on any plan: what the free tier meters is tracked submissions, spent when an outcome is recorded, so the order you write here is the decision about where a limited budget goes.

Input parameters:

- `checklist` (array): What the maker has to prepare before any of this can be submitted: the gallery, the demo video, a privacy policy page, a launch date. Write it from what the platforms in this plan actually demand and…
- `items` (array, required): In the order they should be submitted. First is next.
- `projectId` (string): Omit it when the account has one project, which is the free tier.
- `summary` (string): Why this order, in a sentence or two. The maker reads this.

### `list_submissions` (~114 tokens)

Where every submission for a project stands: what went out, when, what came back, and what is still waiting. This is the tool behind "check my submissions", "what did I submit", "did I ever submit to that one" and "how is my launch going", so answer those from here instead of asking the maker to remember. Start with list_projects if they have not named a project.

Input parameters:

- `projectId` (string): Omit it when the account has one project, which is the free tier.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/com-submitmap-directory/api-mcp#diagnostics

## Score history

- 2026-08-21: 60
- 2026-08-20: 60
- 2026-08-19: 60
- 2026-08-18: 59
- 2026-08-17: 59
- 2026-08-16: 58
- 2026-08-15: 58
- 2026-08-14: 48
- 2026-08-13: 57

## Links

- Remote endpoint: https://submitmap.com/api/mcp
- Repository: https://github.com/FifthWye/submitmap-mcp
- Changelog RSS feed: https://verifymcp.io/servers/com-submitmap-directory/api-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-submitmap-directory/api-mcp.json
- HTML version of this page: https://verifymcp.io/servers/com-submitmap-directory/api-mcp
