{
  "markdown": "# Arcmira MCP: search YouTube and podcast transcripts from Claude, Cursor, ChatGPT, and Codex\n\nArcmira is an SF-based AI company and the search engine for the spoken web.\n\nThe official Arcmira MCP server. Eight read-only tools over indexed YouTube and podcast transcripts: the full transcript of one video, what a show said, who was mentioned where, momentum, sponsors, and coverage. One remote URL, sign in through your host or send a key, or mint a free trial key with no account.\n\nIt is a stateless facade over the public HTTP API at `https://api.arcmira.com/v1`; every gate the API raises is forwarded untouched with the link that lifts it.\n\n- Endpoint: `https://mcp.arcmira.com/mcp` (Streamable HTTP)\n- Registry name: `io.github.arcmira/arcmira`\n- Install guide: https://arcmira.com/docs/mcp\n- Server card: https://mcp.arcmira.com/.well-known/mcp/server-card.json\n- HTTP API the tools front: https://api.arcmira.com/v1/openapi.json\n\n## Connect\n\nTwo ways in. Hosts that speak the MCP authorization spec sign you in; everything else sends a key.\n\n**Sign in through the host.** Add `https://mcp.arcmira.com/mcp` with no key. The server answers 401 with an OAuth challenge, the host registers itself against `api.arcmira.com`, opens arcmira.com for sign-in and consent, and connects with a token that carries the permissions you allowed. Tokens refresh on their own; revoke a host under Settings, Connected apps.\n\n```bash\nclaude mcp add --transport http arcmira https://mcp.arcmira.com/mcp\n```\n\n```bash\ncodex mcp add arcmira --url https://mcp.arcmira.com/mcp\n```\n\nClaude Desktop, claude.ai, ChatGPT, and Cursor: add the URL as a custom connector or MCP server with no headers and follow the sign-in prompt. Per-host steps are on https://arcmira.com/docs/mcp.\n\n**Send a key.** Any client that cannot do the sign-in sends a bearer token instead, and the server skips OAuth:\n\n- An account key (`arc_sk_...`) from https://arcmira.com. Plan and scopes decide what each tool returns.\n- A trial key (`arc_tk_...`), minted with no login. It reads exactly what a free account reads, with a smaller row allotment and a 7 day expiry:\n\n```bash\ncurl -X POST \"https://api.arcmira.com/v1/trial-keys?src=mcp-tool\"\n```\n\n```bash\nclaude mcp add --transport http arcmira https://mcp.arcmira.com/mcp --header \"Authorization: Bearer $ARCMIRA_API_KEY\"\n```\n\n```json\n{\n  \"mcpServers\": {\n    \"arcmira\": {\n      \"url\": \"https://mcp.arcmira.com/mcp\",\n      \"headers\": { \"Authorization\": \"Bearer arc_tk_...\" }\n    }\n  }\n}\n```\n\nThe 401 body carries the same mint call under `error.data.unlock.action`, so an agent that cannot sign in can get its own trial key and reconnect. Discovery: `https://mcp.arcmira.com/.well-known/oauth-protected-resource` names the authorization server; `https://api.arcmira.com/.well-known/oauth-authorization-server` lists its endpoints.\n\n## Tools\n\n| Tool | Use it for | Fronts |\n|---|---|---|\n| `resolve_entities` | Turn a name, `@handle`, YouTube URL, or `UC` id into typed `ent_` rows | `GET /v1/entities/search` |\n| `search_transcripts` | Short spoken slices for one topic, with watch links and dates | `GET /v1/transcripts/search` |\n| `list_mentions` | Has X mentioned Y yet, first seen, last seen | `GET /v1/mentions` |\n| `entity_momentum` | Mentions in the last 7 and 30 days against the prior 30, with a verdict | `GET /v1/entities/{id}/momentum` |\n| `count_occurrences` | What a set of shows talks about, and what they share | `GET /v1/mentions/counts` |\n| `list_sponsors` | Recurring sponsors of a channel from the ad-read rollup | `GET /v1/channels/{id}/sponsors` |\n| `index_status` | What the index holds for a channel, or one transcription job | `GET /v1/channels/{id}/coverage`, `GET /v1/transcriptions/{id}` |\n| `get_transcript` | Full transcript of one video from its URL or id, with `start` on every line | `GET /v1/transcripts/{video_id}`, `GET /v1/videos/{video_id}/captions` |\n\nEvery tool declares `readOnlyHint: true`, `destructiveHint: false`, `idempotentHint: true`, `openWorldHint: false`. Every result carries `as_of` where a date applies and a one-sentence `note`.\n\nGood first calls: TBPN is channel `UC-DRzaGnL_vtBUpCFH5M0tg`, Moment of Truth is `UClWkDGXEzsh77GAhs90wpXw`, Ramp is `ent_14`.\n\n## Gates\n\nA gate is an MCP tool result with `isError: true` whose content is the API's error envelope:\n\n```json\n{\n  \"error\": {\n    \"type\": \"permission_error\",\n    \"code\": \"filter_requires_paid\",\n    \"message\": \"The source filter needs Hobby.\",\n    \"param\": \"source\",\n    \"gate\": \"plan\",\n    \"unlock\": { \"tier\": \"hobby\", \"url\": \"https://arcmira.com/pricing?src=mcp-tool\", \"offer\": null },\n    \"doc_url\": \"https://arcmira.com/docs/errors#filter_requires_paid\",\n    \"request_id\": \"req_...\"\n  }\n}\n```\n\nSwitch on `error.code`, relay `error.unlock.url` to the human, and honor `retry_after_seconds` on `rate_limited`. A 200 that withheld something (Premium transcript text, the paid-versus-organic split, sponsors past the free slice) is a normal result carrying the same body under `access`. The full catalog is at https://arcmira.com/docs/errors.\n\n## Develop\n\n```bash\npnpm install\npnpm dev            # wrangler dev on :8790, API base from .dev.vars\npnpm test           # node:test\npnpm typecheck\npnpm manifest:check # every tool call matches the live OpenAPI document\nARCMIRA_KEY=arc_tk_... node --experimental-strip-types scripts/smoke.ts http://localhost:8790/mcp\n```\n\nThe tool descriptions are loaded context and are the steering surface. They are maintained in Arcmira's manifest spec first and copied here verbatim; revise there before here.\n\nCopyright Arcmira. All rights reserved. See `LICENSE`.\n",
  "bytes": 5620,
  "sha": "ff791f44af907c0bca31261e219c95b14de43408f8b5b9c06ec14666f9392bdb",
  "repo_slug": "arcmira/mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_arcmira_arcmira_f0250305/readme"
}