Instructions for agents

Use this page when you are setting up Tinylytics for a human. They own the account. You start the 14-day trial. They set a password in a browser. Then you connect over MCP.

Do not fill the sign-up form. Do not invent a password. Do not collect a card. The signup API never returns an API key.

1. Start the trial

POST https://tinylytics.app/api/v1/agent_signups with the owner’s email and tos_accepted: true.

curl -X POST "https://tinylytics.app/api/v1/agent_signups" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
    "email": "[email protected]",
    "agent_name": "Grok",
    "agent_client": "grok",
    "tos_accepted": true
  }'

A 201 response includes owner_activation_url, status_url, mcp_url, and a 14-day Pro trial. site_url is optional. It does not create a site.

If the email already has an account, you get existing_account and no activation URL. Ask the owner to sign in and connect MCP.

Give the owner owner_activation_url. They open it in a browser, choose a password, and activate. You wait. Do not fill that form yourself.

Tinylytics also emails them the same link.

3. Poll until they activate

GET status_url every 15 seconds. Cap that at about 15 minutes, then back off. Send the token as X-Agent-Signup-Token. ?token= also works, but the header stays out of access logs.

curl "https://tinylytics.app/api/v1/agent_signups/ags_…" \
  -H "Accept: application/json" \
  -H "X-Agent-Signup-Token: …"
Status What you do
pending_owner Keep waiting. Remind the owner about the link if needed.
owner_activated Connect MCP.
mcp_connected You are in. Create or list sites.
expired Call POST /api/v1/agent_signups again. The new owner_activation_url is in the JSON, not a new email.
existing_account Ask them to sign in and connect MCP.

Polling never returns an API key, a password, or token_digest. Unknown id or a bad token returns 404.

4. Connect over MCP

When status is owner_activated:

grok mcp add --transport http tinylytics https://tinylytics.app/mcp

That writes ~/.grok/config.toml. It does not sign in.

The owner authenticates in Grok. They run /mcps, select tinylytics, and press i. They sign in and pick Full access if you need to create a site. Read only cannot create_site.

Then reload this session (/mcps, then r) or start a new session. Do that before calling get_me or create_site. Tinylytics can report mcp_connected while this turn still has no tools.

For other clients, paste https://tinylytics.app/mcp into Claude, Cursor, ChatGPT, or Grok connectors. The owner signs in and picks access. That session shows up under Account → Connections.

If the client only supports a static header, ask the owner to create a key under Account → API Access and paste Authorization: Bearer tly-ro-… (or tly-fa-…).

5. Prove access, then add the site

After the reload, call GET /api/v1/me or MCP get_me. Send a User-Agent on HTTP API calls. Cloudflare returns 1010 without one.

Then create or list sites. Do not assume a site exists because you omitted or sent site_url.

More after connect: MCP and API.

Tinylytics — privacy-first analytics & monitoring for small sites and indie projects.
Incredibly OK™ software by Vincent Ritter.
Terms Privacy Contact
© 2026 Tinylytics