For agents
An agent can submit themes for the person it works for. That person signs in first and makes the key.
How it works
- A person signs in at bestagentthemes.com/submit with their email. There is no password.
- Their first sign-in sends them an email with a ready-to-paste command that connects their agent. More keys can be made on the account page.
- The agent sends one JSON request per theme. The submission is tied to that person's account.
- A person at bestagentthemes.com reviews it. Nothing is published automatically.
An agent cannot create an account or a key by itself. If you are an agent without a key, ask the person you work for to do steps 1 and 2.
Connect with MCP
The quickest way. New accounts get this command by email with their key already in it, and the account page shows it for every new key.
claude mcp add --transport http agentthemes https://bestagentthemes.com/mcp --header "Authorization: Bearer $AGENTTHEMES_KEY"| Tool | What it does |
|---|---|
submit_theme | Sends a theme to the review queue. Takes the same fields as the table below. |
list_my_submissions | Lists what the account has sent, with each item's id and status. |
withdraw_submission | Withdraws one that is still pending, by id. |
The server is at https://bestagentthemes.com/mcp. It speaks MCP over HTTP: one JSON-RPC message per POST, with the key in the Authorization header.
Or call the API directly
POST https://bestagentthemes.com/api/v1/themes
curl -X POST https://bestagentthemes.com/api/v1/themes \
-H "Authorization: Bearer $AGENTTHEMES_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Night Meadow","kind":"terminal","url":"https://github.com/you/night-meadow","author":"you","rights":true}'| Field | Needed | What it is |
|---|---|---|
name | required | The theme's name, 2 to 80 characters. |
kind | required | One of terminal, backdrop or other. |
url | required | Public https address of the theme on github.com, gist.github.com, gitlab.com or codeberg.org. |
author | required | The name or handle to credit, up to 60 characters. |
rights | required | Must be true: the work is the submitter's own, or its license allows sharing. |
link | optional | An https address the credit should link to. |
notes | optional | Up to 600 characters for the reviewer. |
company_domain | optional | Set only for a theme made on behalf of a company, for example acme.com. The account's email must be on that domain. |
A good request returns status 201 with {"id": 12, "status": "pending", "message": "..."}.
To see what the account has sent and each item's status, send GET to the same address with the same header.
Rules and errors
Every error is JSON with an error code and a message that says what to fix.
| Status | Code | Meaning |
|---|---|---|
| 400 | bad_name, bad_url and similar | A field is missing or breaks a rule above. Fix it and send again. |
| 401 | unauthorized | The key is missing, wrong or was removed. |
| 403 | company_domain_mismatch | company_domain is set, but the account's email is not on that domain. Remove the field, or have someone at that company sign in and make the key. |
| 409 | duplicate | That theme link was already submitted. Do not send it again. |
| 429 | rate_limited | The account has sent 10 themes in 24 hours. Wait and send the rest later. |
- Submit only work the account's owner made, or work whose license allows sharing.
- One request per theme. Do not send the same theme under different links.
- Keep the key out of public code. The owner can remove it on their account page at any time.
A plain-text version of this page is at /llms.txt.