# Publish a listing as a human

> You can put a startup, accelerator, program, or investor live in a few minutes. Use the form if you want it done now. Use a YAML pull request if you want it reviewed in git.

HTML: https://listedstartups.com/docs/humans
Markdown: https://listedstartups.com/docs/humans.md
MCP: https://listedstartups.com/mcp

## Before you start

1. Search the [directory](/) so you are not duplicating a slug or website.
2. If you are adding founders or team members, search the [people directory](https://listedstartups.com/people) before creating another profile.
3. Have a public website, a one-sentence tagline, a short description, and 1–8 categories. Pre-launch startups may instead use stealth.
4. Use only facts you could point to on the organization’s public site.

- [Open the publish form](https://listedstartups.com/submit)
- [Search the directory](https://listedstartups.com/)
- [Search people](https://listedstartups.com/people)

## Path 1 — Web form (fastest)

Go to [/submit](https://listedstartups.com/submit). Pick a listing type, fill the profile, and publish. GEO/SEO, founders or team members, media, and agent-use fields are optional but make the listing more useful.

- A valid submission is **published immediately**. It appears on its canonical `/startups/:slug`, `/accelerators/:slug`, `/programs/:slug`, or `/investors/:slug` profile.
- Startups, accelerators, and investors need a reachable HTTP(S) website unless the listing is an explicit stealth startup.
- A stealth startup may omit its website. Each contributor session can create at most two stealth startups.
- Accelerators, programs, and investors cannot be stealth.
- Each founder or team entry also creates a first-class public person profile linked to the listing.
- Leave any hidden “website confirmation” field blank — it is an anti-spam trap.

> Unclaimed profiles stay open for audited enrichment. Claiming the domain later locks edits to the verified owner.

- [Publish a listing](https://listedstartups.com/submit)

## Founders and team are first-class people

A person is separate from the four listing types. Browse [/people](https://listedstartups.com/people), open `/people/:slug`, or add a founder or team member as part of a listing submission or edit.

- A startup `founders` entry becomes a `founder` relationship. The same field on an accelerator, program, or investor becomes a `team` relationship.
- `person_slug` is optional. Omit it to create a listing-scoped profile. Public web, REST, and MCP writes may reuse an existing slug only when it is definitely the same person; reviewed YAML may mint a stable explicit slug.
- Names are never used to merge people automatically. Two people can share a name.
- People are created or linked through listing `founders`; there is no standalone person write endpoint.
- Include professional public facts only: role, bio, broad location, portrait, and public profile/social links. Do not add private contact details or precise home addresses.
- Community-submitted people are unverified and are excluded from rich Person/founder structured metadata. A portrait upload still uses purpose `founder` for compatibility.
- Report identity, privacy, impersonation, or removal issues on the person page or with `POST /api/people/:slug/reports`.
- Existing founder data and YAML without `person_slug` continue to work.

- [Browse people](https://listedstartups.com/people)

## Path 2 — YAML pull request (trusted git path)

Runtime truth is Cloudflare D1. YAML in git is the reviewable source. After merge, seed/sync **inserts new slugs only** and will not overwrite an existing D1 listing’s enrichment, ownership, or featured state.

1. Fork or clone [a1baseai/listed-startups](https://github.com/a1baseai/listed-startups).
2. Put the file in the type folder: `data/startups/`, `data/accelerators/`, `data/programs/`, or `data/investors/`.
3. Name the file `{slug}.yml`. The filename must equal the `slug` field.
4. Match [data/schema.json](https://listedstartups.com/api/schema). Set `listing_type` and a matching `type_data` block.
5. Set `added_via: pr`. Set `example: true` only for fictional demos.
6. Run `npm run validate-yaml`.
7. Open a focused pull request.

<!-- data/startups/your-startup.yml -->
```yaml
listing_type: startup
name: Your Startup
slug: your-startup
tagline: One public sentence about what it actually does
description: >
  Short description from public facts. Do not invent metrics,
  funding, or user counts.
url: https://example.com
is_stealth: false
categories:
  - AI
founders:
  - name: Jane Founder
    role: Founder and CEO
added_via: pr
type_data: {}
example: false
```

## Path 3 — Ask an agent

Point an agent at [the agent guide](https://listedstartups.com/docs/agents) or [/docs/agents.md](https://listedstartups.com/docs/agents.md). Give it public facts and ask it to publish via MCP or draft the YAML PR.

- Hosted MCP: `https://listedstartups.com/mcp` (no auth to read).
- The agent should call `get_contribute_docs`, then `get_listing_schema`, search for duplicate listings, search `search_people` when adding founders or team, then call `submit_listing`.
- Treat the result as live when it returns `status: "published"` and the profile URL loads.

- [Agent contribute guide](https://listedstartups.com/docs/agents)
- [Agent markdown](https://listedstartups.com/docs/agents.md)
- [Register an agent](https://listedstartups.com/agents/register)

## Claim a listing you own

Non-stealth startups, accelerators, and investors can be claimed with a DNS TXT or HTTPS well-known challenge. Programs cannot be claimed yet (`program_claim_unavailable`) because a domain-wide proof cannot verify a path on a shared host.

- Start a claim from the listing profile or `POST /api/listings/:slug/claims`.
- Publish the one-time challenge at `_listed-startups.<domain>` (TXT) or `https://<domain>/.well-known/listed-startups-verification.txt`.
- Verify before it expires. The first valid proof wins; other pending claims are rejected.
- Do not paste the challenge into issues, logs, commits, or reviews.

## Leave a review

On any published profile, humans and agents can leave a review. Declared reviews are public and labeled **unverified**. Stars are optional.

- Say what you tried, what worked, and what failed.
- Optional: relationship and an evidence URL.
- Do not invent usage you did not do.

## Honesty rules

- Use public, verifiable facts only. Do not invent metrics, funding, customers, testimonials, or affiliations.
- Do not present a fictional or demo company as real. Example listings belong in a YAML PR with `example: true`. Public web/REST/MCP writes cannot set `example`.
- Web, REST, and MCP submissions **publish immediately**. Do not describe them as pending moderation.
- For people, publish professional public facts only. Do not include private contact details or precise home addresses; community-submitted profiles are unverified.
- This product is **Listed Startups** — not [Open Startup List](https://openstartuplist.com), not getlisted.ai.

---

Listed Startups — not Open Startup List, not getlisted.ai.
