AI agents in tools like Cursor, Claude, and other assistants can fill out submissions for you, but only on sites that give them a machine-readable way in. Here's how to set that up so it works.
1. Prepare your materials once
Agents work best from a fixed source of truth. Keep these in one file the agent can read:
- Name: exactly as it should appear.
- URL: a working homepage on http/https.
- One-liner: one plain sentence on what it does, without adjectives.
- Short description: two to four sentences on what it does, who it's for, and whether it's free, open source, or in beta.
- Category: check each site's list of allowed values.
- Contact email: for status updates.
- Logo URL: a direct, publicly reachable image link.
Reusing the same wording everywhere keeps your listings consistent, and it means agents and search engines see one coherent description.
2. Check what the site offers machines
Before you tell an agent to submit, find out which of these the site has:
| Signal | Where to look | What it gives the agent |
|---|---|---|
llms.txt |
https://<site>/llms.txt |
A plain-text overview: what the site is, its key pages, and often API details |
| Public API / OpenAPI | /docs/api, /openapi.json |
Exact fields, allowed values, and error codes |
| MCP server | Usually listed in docs or llms.txt | Tools the agent can call directly from your editor or chat |
| Only an HTML form | /submit |
The agent has to drive a browser. This is slower and easier to break |
If a site only has a form, it's often faster to submit it yourself.
3. Let the agent submit, then check the result
- Give the agent your materials file and the API docs or MCP URL.
- Ask it to show you the exact payload before it sends anything.
- Read the response. A good API returns an id or slug and a status, or a specific error you can fix.
- Expect moderation. Many sites review submissions before they go live.
- Don't let agents send the same submission to the same site more than once.
Worked example: LaunchSignal
LaunchSignal publishes all three machine-readable entry points: llms.txt, a JSON API described in OpenAPI, and a public MCP server. Submitting a listing is free.
Via the API
curl -X POST https://launchsignal.ai/api/v1/products \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"name": "Example App",
"url": "https://example.com",
"description": "Example App turns meeting notes into a weekly summary email.",
"category": "Productivity",
"email": "you@example.com",
"logo_url": "https://example.com/logo.png"
}'
- Required:
name(up to 120 chars),url,description(up to 2000 chars),category,email. Optional:logo_url. categorymust be one of: SaaS, AI, Developer Tools, Design, Marketing, Productivity, Other.- Success (201):
{ "ok": true, "id": "...", "slug": "...", "status": "pending" } - Errors look like
{ "ok": false, "error": "invalid_category", "message": "...", "fields": {...} }. Codes includemissing_fields,invalid_url,invalid_email,invalid_category,invalid_logo_url,duplicate_domain(409),rejected_policy(400), andrate_limited(429).fieldsis included on validation errors only. - The email is used only for listing status and isn't shown publicly.
New submissions are pending until a person reviews them. Approved listings can be read with GET /api/v1/products (with optional limit, cursor, and category) and GET /api/v1/products/{slug}.
Via MCP
The endpoint is https://launchsignal.ai/mcp. It uses Streamable HTTP and needs no authentication. Add it to your client's MCP config:
{
"mcpServers": {
"launchsignal": {
"url": "https://launchsignal.ai/mcp"
}
}
}
Tools include:
submit_product: takes name, url, description, category, email, and optionally logo_url. Creates a pending listing.list_products: takes optional limit, cursor, and category. Returns approved listings.get_product: takes a slug. Returns an approved listing ornot_found.verify_backlink: takes a slug. Checks the product homepage for any link to launchsignal.ai (text or badge) and can grant 7 days of free Priority once.boost_product: takes a slug and plan (priorityorfeatured). Demo / no charge while payments are in mock mode.
Then just ask, for example: "Use the launchsignal MCP to submit my product using the details in product.md, and show me the payload first."
Each email can have only a few pending submissions at a time, and every submission is reviewed before it goes live. Submit once and use the list and get tools for everything else. The MCP endpoint itself is public and authless; there is no MCP-wide rate limit beyond normal submit anti-spam and the verify-backlink limit of 3 checks per slug per UTC day.
Checklist
- Materials file ready (name, URL, one-liner, description, category, email, logo)
- Checked the site for llms.txt, an API, or MCP
- Reviewed the payload before sending
- Saved the returned id or slug and status
- No duplicate submissions