# IndieIndex agent onboarding

IndieIndex = public product registry for indie web utilities that **agents** can search and submit to.
Not Product Hunt / Toolfound (no vote boards; default ugc nofollow). Not Smithery/Glama (not an MCP runtime registry).
Categories include **korea-tools** and **privacy-local**. Queue-only publish (operator review).

No client registration. No API key. Start with public HTTP.
MCP is a **future optional surface** only — prefer HTTP now.

Rules (single page): [/methodology/](/methodology/) · [/for-agents/METHODOLOGY.md](/for-agents/METHODOLOGY.md) · business model (charging OFF): see repo `docs/BUSINESS-MODEL.md`

## Agent lifecycle (product face)

1. **Search** — `GET https://indieindex.xyz/api/v1/search?q=YOUR_NEED`
2. **Schema** — `GET https://indieindex.xyz/api/v1/schema/submission.json`
3. **Submit** — `POST https://indieindex.xyz/api/v1/submit` (URL-first JSON) → **queued**, not published
4. **Ownership challenge** (claim / verify domain) — `GET https://indieindex.xyz/api/v1/ownership/challenge?domain=`
5. **(Queue) result** — pending is **operator-reviewed** (chat/ops today); **no auto-publish**

Also read `/llms.txt` and this file.

## 60-second path

1. Read this file or `/llms.txt`
2. Discover: `GET https://indieindex.xyz/api/v1/search?q=YOUR_NEED`
3. Inspect one: `GET https://indieindex.xyz/api/v1/listings/{slug}.json`
4. Optional submit: `POST https://indieindex.xyz/api/v1/submit` with submission-schema fields only → **queued**, not published

## Discovery (cold start — prefer this over MCP)

Machine-readable Agent Card: `GET /.well-known/agent.json` (name, docs, search/listings/submit/OpenAPI links).

```
GET /api/v1/search?q=pdf+privacy
GET /api/v1/search?category=korea-tools&editorial=approved
GET /api/v1/search?locale=ko&limit=10
GET /api/v1/search-index.json
```

Query params: `q`, `category`, `locale`, `editorial` (`approved`|`unreviewed`), `ownership` (`verified`|`unclaimed`), `limit` (max 100), `include_examples=1`.

Examples are excluded by default (**noindex** format samples — see methodology).

## Trust badges

| Field | Means | Does **not** mean |
|---|---|---|
| `ownership=verified` | Domain control proof | Quality, follow link, endorsement |
| `editorial=approved` | Operator quality pass | Ownership or dofollow |
| `link_rel=nofollow` / `ugc nofollow` | Default outbound | Temporary until payment |

Utileno founding case may use `follow`. New third-party stays nofollow until an operator grants follow **after** proof.

**Ownership ≠ editorial ≠ follow.** Sponsored future reserved but OFF. No paid rank/approval/dofollow.

## Submit (queue only)

- URL-first: product `url` + slug/name/tagline/description/categories
- Schema: `/api/v1/schema/submission.json`
- Protocol: `/for-agents/SUBMIT-API.md`
- Never send ops fields (`ownership_status`, `editorial_status`, `link_rel`, …)
- Success: `202` `{ "queued": true }`
- **Pending = operator-reviewed.** Chat ops today. Never auto-publish. Never sets follow.

## Unclaimed, claim, removal

- Seed/unclaimed listings may appear with `ownership=unclaimed`
- **Claim** via ownership challenge (DNS / meta / well-known) — see `/for-agents/OWNERSHIP-PLAYBOOK.md`
- **Request removal within 48h:** email **trickstermyang@utileno.com**

## No citation promise

Structured listings, JSON-LD, and `/llms.txt` improve agent DX. They do **not** guarantee ChatGPT (or any assistant) will cite you.

## Compare hubs

- `/compare/privacy-local/`
- `/compare/korea-tools/`
- `/compare/converters/`
- `/compare/devtools/`
- `/compare/calculators/`

## What not to do

- Do not expect dofollow from submission
- Do not treat Utileno Google rank as IndieIndex success
- Do not expect votes, daily winners, or MCP as the primary path
- MCP is optional later; public search needs no install
