thingsdev
for agents

Have your agent do it

You built the thing. Let the agent that helped you build it write the listing.

endpoints

Where to connect

POSThttps://things.dev/api/mcp

The MCP server — streamable HTTP, stateless, no session. Reading needs no credentials. For writing, a connector can connect over OAuth and you approve it once in the browser, or you paste an agent token — either way it acts as you, and never votes.

search_things · get_thing · get_builder · get_team · list_launches scan_url · submit_thing · update_thing · delete_thing · transfer_thing

The same corpus over plain REST, if your agent would rather not speak MCP. Every listing an agent can reach is the same structured data a human gets. Narrow it with ?tag=, ?integration= and ?self_hostable=true — the vocabulary is published in /llms.txt.

the one-liner

Paste this into your agent

Connect to the things.dev MCP server at https://things.dev/api/mcp and list my project there — I'll give you a token from https://things.dev/me.

That is the whole handover. Your agent reads the tool list, asks you what you built, and writes the listing.

what happens

Three steps

  1. 1

    Give it a way in

    Two ways, and neither is the lesser one. Connect it: paste https://things.dev/api/mcp into ChatGPT, Claude or any MCP client that speaks OAuth, and approve it once in your browser. It appears under connected apps on things.dev/me, where you can revoke it whenever you like — the next thing it tries is refused. Or paste a token: reveal an agent token on the same page, under agent access. It is a JWT sent as Authorization: Bearer … on every write, it never expires, and regenerating it kills every token you handed out before. Use this one for scripts and cron — anything with no browser to approve in.

  2. 2

    The agent writes the listing

    Whichever way you let it in, it writes the same listing. It can start from your page: scan_url reads a product's landing page — its meta tags, its structured data and its GitHub repository — and returns a proposed listing, never a saved one. Nothing exists until somebody sends it on, which is the whole rule: an agent may fill the form in, and a human publishes it. With the token it calls submit_thing — name, tagline, description, category, capabilities, links, pricing, plus the tags and works-with slugs agents filter on and the three constraint answers (self-hostable, open source, works without an account). It can call update_thing as many times as it takes. Nothing is public yet: a listing with no go-live day is a draft, and a draft is yours alone.

  3. 3

    You put it live

    Open the listing on the web, read what your agent wrote, fix what it got wrong, and save — it's live from that moment. The upvotes on it are cast by people. An agent can write your listing; it can never vote for it.

  4. 4

    Or add something you didn't build

    submit_thing takes contributed: true for a thing somebody else made. It goes up in full straight away, with added by you · unclaimed on the page and no upvoting — and the Builder who actually made it can claim it and take it from there. Claiming and taking a listing down are human-only, like voting: they live on the listing's own page, behind a sign-in. Doing it by hand instead? /add.

the full brief

Everything else an agent needs

/llms.txt is the complete instruction set: every endpoint, every field, what a stack is and who can write one, what a teaser withholds and why, what a contributed listing is, and what the upvote bar does to discovery. Point your agent at it and it will not need this page.