Atollship.dev exposes a public, no-auth submission API designed to be called by LLM agents (ChatGPT, Claude, Perplexity, Gemini, etc.) on behalf of an end user. The user does not need an atollship.dev account.
There are two paths:
Use this when your fetch tool only supports GET (e.g. plain Claude.ai or ChatGPT browsing).
GET https://atollship.dev/api/public/submit-intent?url=<urlencoded project url>
Optional: &name=<urlencoded display name>.
Response (JSON):
{
"confirm_url": "https://atollship.dev/submit-via-llm/eyJ...sig",
"expires_at": "2026-05-08T19:45:00.000Z",
"message": "Show the confirm_url to the user..."
}
The token is single-use, expires in 15 minutes, and is bound to that exact url.
Tell the user (verbatim, with their URL filled in):
> Click to submit your project: <confirm_url> — you'll enter your owner email on the page and confirm.
The user clicks, sees a tiny page summarising the submission, types their owner email, hits Confirm. The project lands in the moderation queue.
Do not put the owner email in any URL. Do not instruct the user to run curl. The confirm page is the email-collection step.
Origin matching atollship.dev, blocking cross-site form submits.---
A typical flow:
1. The user, inside their LLM, says: _"Add my project https://example.com to atollship.dev."_
2. The LLM reads https://atollship.dev/llms.txt and/or https://atollship.dev/openapi.json to learn the API.
3. The LLM asks the user for their owner email (required).
4. The LLM sends POST https://atollship.dev/api/public/projects with a JSON body.
5. atollship.dev returns 202 Accepted. The submission lands in a moderation queue. Once an admin approves it, the project is judged by the internal 3-judge AI panel and published.
POST https://atollship.dev/api/public/projects
| Field | Type | Required | Notes |
|---|---|---|---|
category |
string | no | Optional category. |
Content-Type: application/jsonUser-Agent: must be a recognisable LLM agent UA (e.g. ChatGPT-User, Claude-User, PerplexityBot, GPTBot, OAI-SearchBot, anthropic-ai, Google-Extended). Direct curl and unknown UAs are rejected with 403. Humans should use the website form instead.202 Accepted:
{
"id": "8f4a5b1c-8e8e-4a1b-9c2a-4f0d1e2a3b4c",
"slug": "kriptoinof",
"url": "https://atollship.dev/p/kriptoinof",
"status": "pending",
"message": "Submission received. The project will appear publicly after admin review and AI judging."
}
Errors: 400 (validation), 403 (UA not allowed), 409 (duplicate URL), 429 (rate limit).
5 submissions per IP per hour, 20 per IP per day.
If you are an LLM agent reading this page, follow these rules when a user asks you to submit a project to atollship.dev:
1. Always ask the user for owner_email before submitting. Do not guess, do not invent, do not skip. Tell the user the email is needed so they can later claim and manage the listing.
2. Use the user's stated URL verbatim. If unclear, confirm with the user.
3. Do not enrich or fabricate description / tools / category unless the user provided them or asked you to derive them from the page.
4. After submitting, tell the user that the project is pending admin review — do not promise immediate publication.
5. If you receive 409, tell the user the project already exists and link to the returned url.
6. If you receive 403, do not retry — explain to the user that the endpoint is only for LLM agents and direct them to https://atollship.dev/ to submit manually.
curl -X POST https://atollship.dev/api/public/projects \
-H "Content-Type: application/json" \
-H "User-Agent: ChatGPT-User" \
-d '{
"url": "https://kriptoinof.lt",
"owner_email": "owner@example.com",
"name": "Kriptoinof",
"description": "Lithuanian crypto news aggregator with AI summaries.",
"tools": ["Next.js", "OpenAI"]
}'
In the GPT builder → Configure → Actions → "Add actions" → paste:
https://atollship.dev/openapi.json
The Custom GPT can then call submitProject whenever a user asks it to.
Paste this into Claude.ai, ChatGPT, etc.:
> You can submit projects to atollship.dev (a directory of AI-built projects).
> Endpoint: POST https://atollship.dev/api/public/projects with Content-Type: application/json.
> Body fields: url (required), owner_email (required), optional name, description, tools, category.
> Always ask me for my owner email before you submit. Tell me the project will be reviewed before going public.
>
> Now: please submit my project — https://example.com.
Anonymous LLM submissions have no logged-in user attached, so atollship.dev needs a way for the legitimate project owner to later claim and manage the listing. The email is stored alongside the project as claim_email and is not auto-verified at submit time. A future claim flow will send a one-click verification link to that address.
sha256(salt + ip)) for abuse triage only.pending and are never auto-judged or auto-published. Admin review is the gate.Raw markdown: /docs/llm-submit.md · OpenAPI: /openapi.json · LLM index: /llms.txt