{
  "markdown": "# contactapi\n\nAn open-source API to save contacts. Send a `POST` with an email and any other\nJSON fields you want, and they get saved as-is. Manage them with simple CRUD.\n\nBuilt with [Hono](https://hono.dev) and deployed on [Vercel](https://vercel.com).\n\n- **Landing page & docs** — [`/`](src/pages/home.ts)\n- **Log in** — [`/login`](src/pages/login.ts)\n- **Sign up** — [`/signup`](src/pages/signup.ts)\n- **LLM-friendly docs** — [`/llms.txt`](src/content/llms.ts)\n\n## API overview\n\nThe base URL is `https://contactapi.dev` and every request carries your API key\nas a Bearer token:\n\n```\nAuthorization: Bearer YOUR_KEY\n```\n\n| Method   | Path                | Key                   | Description                          |\n| -------- | ------------------- | --------------------- | ------------------------------------ |\n| `POST`   | `/v1/contacts`      | secret or publishable | Create (or upsert) a contact by email |\n| `GET`    | `/v1/contacts`      | secret                | List contacts, paginated              |\n| `GET`    | `/v1/contacts/:id`  | secret                | Fetch a single contact                |\n| `PATCH`  | `/v1/contacts/:id`  | secret                | Update a contact                      |\n| `DELETE` | `/v1/contacts/:id`  | secret                | Delete a contact                      |\n\nContacts are keyed by email — creating one whose email already exists updates it\nin place rather than duplicating it. Full reference lives on the landing page and\nin [`/llms.txt`](src/content/llms.ts).\n\nThere are two kinds of key:\n\n- `ck_secret_…` — secret key, for your backend. Full access to every endpoint.\n- `ck_pub_…` — publishable key, for the browser. Can only create contacts and is\n  locked to your domains.\n\n## MCP server\n\nAI clients (Claude Desktop, claude.ai custom connectors, Cursor, the MCP\nInspector) can manage your contacts through an [MCP](https://modelcontextprotocol.io)\nserver at:\n\n```\nhttps://contactapi.dev/mcp\n```\n\nAuth is **OAuth 2.1 with dynamic client registration** — point a client at the\nURL and it discovers the authorization server, registers itself, and sends you to\nlog in and approve access; no API key to copy. The server exposes five tools that\nmirror the REST API: `list_contacts`, `get_contact`, `create_contact`\n(upsert-by-email), `update_contact`, and `delete_contact`. Everything is scoped to\nthe account you log in as.\n\nThe OAuth provider is [Better Auth](https://better-auth.com)'s `mcp` plugin\n([`src/auth.ts`](src/auth.ts)); the tools and endpoint wiring live in\n[`src/mcp/server.ts`](src/mcp/server.ts) and [`src/index.ts`](src/index.ts).\n\n## Development\n\nPrerequisites: [Vercel CLI](https://vercel.com/docs/cli) installed globally.\n\n```bash\nnpm install\nvc dev\nopen http://localhost:3000\n```\n\n## Build\n\n```bash\nnpm install\nvc build\n```\n\n## Deploy\n\n```bash\nnpm install\nvc deploy\n```\n\n## License\n\n[MIT](LICENSE.md)\n",
  "bytes": 2876,
  "sha": "6b526a1910f69f4ef2df9f15ecf60e6b7adbfdc90dbda97177b02022d71cf958",
  "repo_slug": "kozmos-tech/contactapi",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_kozmos_tech_contactapi_0cf28177/readme"
}