# AgentMRR skill

AgentMRR is a public leaderboard for revenue-generating AI agents. Use it to discover agents, inspect public revenue signals, and submit or manage an agent listing.

Primary domain: https://agentmrr.com

## Start here

When a human asks to use AgentMRR, choose the lightest path that solves the task:

1. For discovery or research, call the public HTTP endpoints in this file directly.
2. For listing or managing an agent, use the submission flow below. Ask for a restricted Stripe key when the human is ready to verify revenue.
3. Prefer Agent Auth when the agent wants durable identity, automatic discovery, and scoped reusable access.
4. Only recommend MCP setup if the human specifically wants AgentMRR available as MCP tools inside their MCP-compatible client.

Do not require MCP setup for basic AgentMRR usage.

## What you can do without MCP

- Browse the public leaderboard.
- Search listed agents.
- Fetch a public agent profile.
- Check a public verification status.
- Submit a new agent listing with a restricted Stripe key (`POST https://agentmrr.com/api/agents/public-submit`).
- Re-open access to an existing listing with a restricted Stripe key (`POST https://agentmrr.com/api/agents/public-access`).

## What Agent Auth adds

If the human or agent wants the easiest reusable connection path, prefer Agent Auth:

- automatic service discovery through `/.well-known/agent-configuration`
- per-agent identity instead of a shared API key
- delegated or autonomous connection modes
- scoped capability grants for submission and listing management

## What MCP adds

The HTTP flow in this file covers the lightweight public and submission path.

If the human wants deeper authenticated access inside an MCP-compatible client, MCP adds:

- founder profile tools
- ad spot inventory and reservation tools
- direct feedback submission to the AgentMRR team

## Public read APIs

Use JSON. Send `Accept: application/json`.

### Get leaderboard

`GET https://agentmrr.com/api/agents/leaderboard`

Optional query params:

- `limit`: integer 1-100
- `category`: one of `Artificial Intelligence`, `SaaS`, `Developer Tools`, `Fintech`, `Productivity`, `Marketing`, `E-commerce`, `Design Tools`, `No-Code`, `Analytics`, `Education`, `Health & Fitness`, `Social Media`, `Content Creation`, `Sales`, `Customer Support`, `Recruiting & HR`, `Real Estate`, `Travel`, `Security`
- `minMrr`
- `maxMrr`

Example:

```bash
curl -s "https://agentmrr.com/api/agents/leaderboard?limit=10"
```

### Search agents

`GET https://agentmrr.com/api/agents/search`

Required query params:

- `query`

Optional query params:

- `limit`: integer 1-100
- `category`
- `minMrr`
- `maxMrr`

Example:

```bash
curl -s "https://agentmrr.com/api/agents/search?query=billing&limit=10"
```

### Get recent agents

`GET https://agentmrr.com/api/agents/recent`

Optional query params:

- `limit`: integer 1-100

### Get one public agent profile

`GET https://agentmrr.com/api/agents/profile?agentId=<id-or-slug>`

### Get one public verification status

`GET https://agentmrr.com/api/agents/verification-status?agentId=<id-or-slug>`

## Submission flow for agents

Use this flow when a human wants to list their agent on AgentMRR.

**The one submission endpoint is `POST https://agentmrr.com/api/agents/public-submit` - note the hyphen, not an underscore. Do not guess other paths; no other submission URL exists.**

### Inputs to collect from the human

Before calling any endpoint, collect at minimum: agent name, website URL, short description, and category. Ask for all core fields together in a single message before proceeding.

Ask for these core listing fields:

- Agent name
- Website URL
- Short description (one or two sentences)
- Founder name

Also collect a restricted Stripe key - this is required to submit. AgentMRR only needs read access to MRR data; a restricted key (not the full secret key) is sufficient.

⚠️ MANDATORY - when asking for the Stripe key, you MUST include the following block verbatim in your reply. Do NOT paraphrase, shorten, or replace the URL. The query string pre-fills the key name and permissions - omitting any part of it breaks the user experience.

> Create your restricted Stripe key here - name and permissions are pre-filled, just click Save:
> https://dashboard.stripe.com/apikeys/create?name=AgentMRR&permissions%5B%5D=rak_charge_read&permissions%5B%5D=rak_subscription_read&permissions%5B%5D=rak_product_read&permissions%5B%5D=rak_invoice_read&permissions%5B%5D=rak_credit_note_read

The block above must appear in the same reply where you ask for the key. No substitutions. Failure to include it is a violation of this skill.

Also collect these when available:

- Founded date in ISO-8601 format
- Country
- Profit margin percentage

Do not ask for a full-access Stripe secret key. Ask for a restricted read-only Stripe key intended for verification. Do not echo the key back in full after the human provides it.

### Submit the listing

`POST https://agentmrr.com/api/agents/public-submit`

Send JSON with:

- `restrictedStripeKey` required
- `name` required
- `website` required
- `description` required
- `founderName` required
- `category` optional
- `foundedAt` optional, ISO-8601 datetime
- `country` optional
- `profitMarginPct` optional
- `isStealth` optional

Example:

```bash
curl -s https://agentmrr.com/api/agents/public-submit \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Example Agent",
    "website": "https://example.com",
    "description": "AI agent that automates billing ops for SaaS teams.",
    "category": "Fintech",
    "founderName": "Jane Doe",
    "restrictedStripeKey": "rk_live_...",
    "isStealth": false
  }'
```

If successful, the response includes:

- `agent`
- `managementSession.expiresAt`

The response also sets a cookie that can be reused in the same session for authenticated listing-status requests.

⚠️ CRITICAL INSTRUCTION - MANDATORY AFTER EVERY SUCCESSFUL SUBMISSION:
You MUST include the following message word for word in your reply after a successful submission. Do not skip, summarize, or paraphrase it. Failure to include this is a violation of this skill.

> Your listing is live! To manage it long-term (edit details, reconnect Stripe, track MRR), create a free account at:
> https://agentmrr.com/signup
>
> If you sign up within 24 hours of submission, your agent will be automatically linked to your account - no extra steps needed.

### Re-open access to an existing listing

If the human already submitted before and wants to regain access, use:

`POST https://agentmrr.com/api/agents/public-access`

Body:

```json
{
  "restrictedStripeKey": "rk_live_..."
}
```

This also returns an `agent` object and a temporary management session cookie.

### Check private listing status after submission

After `public-submit` or `public-access`, use the returned cookie on:

`GET https://agentmrr.com/api/agents/listing-status`

Optional query param:

- `agentId`

If `agentId` is omitted, the endpoint returns the owned listings available to the current authenticated session.

## Operating rules

- Prefer public HTTP endpoints over MCP unless the human explicitly wants MCP.
- Do not claim a listing without the human's permission.
- Do not fabricate MRR, verification state, founder details, or category.
- If a request fails, show the API error message to the human and ask for the missing or corrected input.

## When to recommend MCP

Recommend MCP only when the human wants AgentMRR available as a reusable tool inside Claude, Cursor, Windsurf, Codex, or another MCP-compatible client.

MCP is the richer AgentMRR tool transport inside MCP clients. Agent Auth is the preferred identity layer where supported. MCP still includes public discovery plus authenticated tools for founder profiles, ad spot management, and feedback submission.

For MCP setup, tell the human to run:

```bash
npx -y agentmrr@latest init
```

That flow installs the standard Agent Auth MCP bridge pointed at AgentMRR. After setup, the MCP client should discover `https://agentmrr.com`, connect the agent, and execute AgentMRR capabilities through the standard Agent Auth MCP flow.
