---
title: Authentication on agentkit.md
description: Every read on agentkit.md is public and keyless — no API keys, no OAuth, no accounts. This page documents the auth posture.
canonical: https://agentkit.md/auth.md
last-updated: 2026-09-22
---

# Authentication on agentkit.md

How an agent gets access to agentkit.md, and exactly which credentials exist. The short answer: none. Every read on agentkit.md is public and keyless. This file follows the auth.md convention (WorkOS spec: https://workos.com/auth-md/docs/auth-md) and documents what agentkit.md implements and what it deliberately does not.

## Discover

- All read endpoints are public and keyless: `GET /api/v1/plugins`, `GET /api/v1/cards/{key}`, `GET /api/v1/search`, `POST /api/v1/search`, `GET /api/v1/stats`, `GET /api/v1/harnesses`, and the MCP server at https://agentkit.md/mcp.
- Machine-readable discovery: OpenAPI spec at https://agentkit.md/openapi.json, RFC 9727 linkset at https://agentkit.md/.well-known/api-catalog, and the agent navigation index at https://agentkit.md/llms.txt.
- There is no `/.well-known/oauth-protected-resource` (RFC 9728) and no OAuth metadata of any kind, because no agentkit.md endpoint is OAuth-protected.

## Pick a method

- **No credential** — that is the only method. Every endpoint in the public API takes no Authorization header, no API key, and no session. Start calling immediately.
- There is no keyed tier. Rate limits are applied per IP automatically; you cannot raise them with a key because no key exists.

## Register

agentkit.md has no accounts and no registration flow. There is no signup, no email verification, and no dashboard. If you can reach the API, you already have full read access.

## Claim

There is no claim ceremony and no credential to claim. Nothing is issued, nothing expires.

## Use the API

Send plain GET requests (or POST for the body-form search). For example:

```
curl https://agentkit.md/api/v1/plugins?limit=5
curl https://agentkit.md/api/v1/search?q=mobile+relay
curl https://agentkit.md/api/v1/cards/0cv/herdr-mobile-relay
curl -X POST https://agentkit.md/api/v1/search -H "content-type: application/json" -d '{"q":"mobile relay"}'
```

Every API response carries RateLimit headers: ratelimit-limit (120), ratelimit-remaining, and ratelimit-reset (seconds until the current window rolls over). Limits are applied per IP over a 60-second window. When you exceed the limit the endpoint returns 429 with a Retry-After header and a problem+json body (code RATE_LIMIT_EXCEEDED); back off for the stated seconds and retry. Because the deployment is edge-distributed, the counters are a per-node approximation: treat the headers as guidance, not a contract.

## Errors

- `400` with code `INVALID_QUERY` (or `EMPTY_QUERY` / `INVALID_BODY` on search) — a parameter failed validation; the problem body carries zod `issues`.
- `404` with code `CARD_NOT_FOUND` — unknown card key; `detail` names the key you asked for.
- `429` with code `RATE_LIMIT_EXCEEDED` and a `Retry-After` header — rate-limited; back off for the stated seconds and retry.
- No `401` or `403` exists anywhere in the public API: there is nothing to authenticate.

## Revocation

There is nothing to revoke. No credential is ever issued, so no credential can be rotated, invalidated, or leaked. If a future version introduces keyed write access, that will ship with a new `/api/v2` and an updated auth.md.

## What is *not* part of the public API

`POST /cards` is an internal generation endpoint used by the registry's build pipeline to create cards from repository readmes. It is not part of the public API, is subject to change or removal without notice, and requires an internal secret. No state-changing public write operations exist in v1 — the API is read-only by design; POST /api/v1/search is a read and the Idempotency-Key header only caches its response.
