Arcmira
Pesquise transcrições do YouTube e de podcasts: menções, momentum, patrocinadores, recomendações orgânicas e transcrições completas.
Servidor MCP hospedado
npx add-mcp 'https://mcp.arcmira.com/mcp'Instala no Claude Code, Codex, Cursor e outros
Documentação
Arcmira: Pesquisa de Transcrições do YouTube
Dê à sua IA a capacidade de descobrir quem disse o quê com timestamps, identificar o que está sendo discutido em vídeos e transmissões ao vivo, e distinguir recomendações orgânicas de leituras de anúncios patrocinados.
Conecte sua IA
Copie isto no seu agente de codificação:
Fetch and execute the appropriate instructions to set me up for Arcmira from https://arcmira.com/agent-setup/prompt.md
Para Claude, ChatGPT, Cursor e outros clientes MCP, use https://mcp.arcmira.com/mcp e faça login no Arcmira. Configuração por host · Documentação · Site · Plugin e habilidades
Experimente: "Quais marcas patrocinam tanto o TBPN quanto o All-In Podcast?" ou "Encontre o que Sam Altman disse sobre agentes de IA, com links com timestamp."
Os resultados cobrem vídeos indexados. A identificação de falantes e as classificações patrocinado-versus-orgânico podem estar incompletas ou incorretas; verifique a fonte vinculada. Limites do plano se aplicam.
Compartilhar feedback do plugin · Atualizar habilidades instaladas
Conectar
Duas formas de entrada. Hosts que falam o spec de autorização MCP fazem seu login; todo o resto envia uma chave.
Entre pelo host. Adicione https://mcp.arcmira.com/mcp sem chave. O servidor responde 401 com um desafio OAuth, o host se registra contra api.arcmira.com, abre arcmira.com para login e consentimento, e conecta com um token que carrega as permissões que você permitiu. Tokens se renovam sozinhos; revogue um host em Configurações, Aplicativos conectados.
claude mcp add --transport http --scope user arcmira https://mcp.arcmira.com/mcp
codex mcp add arcmira --url https://mcp.arcmira.com/mcp
Claude Desktop, claude.ai, ChatGPT e Cursor: adicione a URL como um conector personalizado ou servidor MCP sem cabeçalhos e siga o prompt de login. Passos por host estão em https://arcmira.com/agent-setup.
Envie uma chave. Qualquer cliente que não possa fazer o login envia um token bearer, e o servidor pula OAuth.
Uma chave de conta (arc_sk_...) vem de https://arcmira.com. Plano e escopos decidem o que cada ferramenta retorna. Sem conta e sem navegador, cadastre-se pela API. Envie um endereço de e-mail, depois envie o código de seis dígitos dessa caixa de entrada de volta.
curl -X POST "https://api.arcmira.com/v1/signups?src=mcp-tool" \
-H 'Content-Type: application/json' \
-d '{"email":"agent@example.com"}'
curl -X POST "https://api.arcmira.com/v1/signups/verify" \
-H 'Content-Type: application/json' \
-d '{"email":"agent@example.com","code":"482913"}'
claude mcp add --transport http --scope user arcmira https://mcp.arcmira.com/mcp --header "Authorization: Bearer $ARCMIRA_API_KEY"
{
"mcpServers": {
"arcmira": {
"url": "https://mcp.arcmira.com/mcp",
"headers": { "Authorization": "Bearer arc_sk_..." }
}
}
}
O corpo do 401 carrega essa chamada de cadastro sob error.data.unlock.action, então um agente que não pode entrar pode criar uma conta e reconectar. Descoberta: https://mcp.arcmira.com/.well-known/oauth-protected-resource nomeia o servidor de autorização; https://api.arcmira.com/.well-known/oauth-authorization-server lista seus endpoints.
Ferramentas
| Ferramenta | Entrada | Retorna |
|---|---|---|
describe | topic? | A referência do cliente arcmira: a regra de id, qual método responde qual pergunta, dez métodos com argumentos e campos de retorno, oito programas de exemplo trabalhados, as peculiaridades que custam respostas, códigos de erro e links de documentação. Cerca de 2.800 tokens; topic reduz para um método e seus exemplos. Nunca cobra. |
execute | code | O que o programa imprimiu mais seu valor de retorno. O código é o corpo de uma função assíncrona com arcmira e ArcmiraError no escopo. Limites: 30 segundos, 40 chamadas de API, 20.000 caracteres de saída. |
Ambas as ferramentas declaram readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false. Duas ferramentas custam cerca de 1.500 tokens de definições por conversa; as dez ferramentas que elas substituem custam 8.163.
Os métodos do cliente são os comandos da CLI do arcmira, com os mesmos nomes e as flags como opções, então o MCP, a CLI e o SDK ensinam um vocabulário:
| Método | Frente | Use para |
|---|---|---|
arcmira.resolve(q, { type?, context?, limit? }) | GET /v1/entities/resolve | Um nome, @handle, URL ou id UC para uma de três respostas: best, suggested (com reason e evidence), ou ask com opções |
arcmira.search({ query, channelIds?, about?, speakerIds?, kind?, entityIds?, after?, before?, source?, limit? }) | GET /v1/transcripts/search | Fatias faladas para um tópico, ou sobre uma entidade, ou faladas por uma pessoa, com links de visualização e datas |
arcmira.mentions({ entityId, channelId?, after?, before?, limit?, cursor? }) | GET /v1/mentions | X mencionou Y, primeira vez visto, última vez visto |
arcmira.momentum(entityId) | GET /v1/entities/{id}/momentum | Últimos 30 dias contra os 30 anteriores, com um veredito |
arcmira.sponsors(channelId, { minAdReads?, status?, limit? }) | GET /v1/channels/{id}/sponsors | Patrocinadores recorrentes de um programa |
arcmira.recommendations(entityId, { kind?, channelId?, after?, before?, limit?, cursor? }) | GET /v1/entities/{id}/recommendations | Quem recomenda uma entidade, patrocinado ou orgânico, com a citação |
arcmira.episodes(channelId, { limit?, after?, before? }) | GET /v1/channels/{id}/videos | Episódios indexados mais recentes, com o video_id que os outros levam |
arcmira.transcript(videoIdOrUrl, { quality?, language?, timestamps?, start?, end? }) | GET /v1/transcripts/{video_id} | A transcrição de um vídeo, legendas ou Premium, inteira ou uma janela |
arcmira.occurrences({ channelIds?, entityIds?, videoIds?, types?, mode?, after?, before?, limit? }) | GET /v1/mentions/counts | Sobre o que os programas falam, o que compartilham, o que um episódio menciona |
arcmira.status({ channelId?, jobId? }) | GET /v1/channels/{id}/coverage, GET /v1/transcriptions/{id}, GET /v1/me | Cobertura e a data do índice, um trabalho de transcrição, ou a chave |
arcmira.today() e arcmira.daysAgo(n) dão datas ISO do relógio do servidor para janelas de data.
Filtros aceitam apenas ids verbatim. Um nome onde um id pertence lança id_required antes de qualquer chamada de rede, e a mensagem nomeia a correção. Resolva primeiro, depois consulte. resolve responde best (o nome significa uma linha), suggested (uma linha se destaca; diga que você assumiu e por quê), ou ask (várias se encaixam; deixe o usuário escolher):
const r = await arcmira.resolve("Linear");
const e = r.best ?? r.suggested;
if (!e) return { ask: r.ask };
const m = await arcmira.momentum(e.id);
return { entity: e.name, id: e.id, assumed: Boolean(r.suggested), why: r.suggested?.evidence ?? null, verdict: m.verdict, last30: m.volume.mentions_30d, prior30: m.volume.mentions_prior_30d, as_of: m.as_of };
Exemplos de prompts uma vez que o servidor está conectado:
- Quais marcas patrocinam tanto o TBPN quanto o All-In Podcast?
- Quão quente está o Linear, a ferramenta de gerenciamento de projetos, na web falada agora?
- Encontre um momento no TBPN dos últimos 90 dias onde alguém fala sobre stablecoins, e cite-o.
- Quem está falando no primeiro minuto do último episódio do TBPN, de acordo com a transcrição Premium?
- No TBPN, quantos episódios mencionaram Cursor em julho versus agosto?
Bons primeiros ids: TBPN é o canal UC-DRzaGnL_vtBUpCFH5M0tg, All-In Podcast é UCESLZhusAkFfsNsApnjF_Cg, Ramp é ent_14.
A sandbox
execute executa o programa em um isolado Dynamic Worker fresco. A única rede do isolado é o proxy de saída do pai, que recusa qualquer coisa que não seja GET https://api.arcmira.com/v1/* com outbound_refused e adiciona a credencial do chamador ao que encaminha, então o programa nunca segura a chave. O isolado recebe 5 segundos de CPU, execute espera 30 segundos de tempo de parede, o cliente para em 40 chamadas de API com call_budget, e a saída renderizada é cortada em 20.000 caracteres com uma linha que diz como encolhê-la. Um erro de sintaxe volta como syntax_error com a regra do corpo da função; um erro lançado como program_error com sua mensagem.
O resultado é um bloco de texto: as linhas console.log, depois RETURN: <json> ou ERROR: <json>. Não há structuredContent, então todo host lê a mesma coisa. _meta["arcmira.com/execution"] carrega a contagem de chamadas e a build da API.
Gates
Um gate dentro de um programa lança um ArcmiraError com os campos de erro da API, e execute o retorna como ERROR com isError: true:
ERROR: {"name":"ArcmiraError","code":"recommendations_not_enabled","message":"Sponsor recommendations require Pro.","unlock":{"tier":"pro","url":"https://arcmira.com/pricing?src=mcp-tool","offer":null},"gate":"plan","status":403,...}
Ligue code, retransmita unlock.url ao humano, e honre retry_after_seconds em rate_limited. Um 200 que reteve algo (texto de transcrição Premium, a divisão pago-versus-orgânico, patrocinadores além da fatia gratuita) é um resultado normal carregando o mesmo corpo sob access. O catálogo completo está em https://arcmira.com/docs/errors.
Todo resultado, gates incluídos, carrega o orçamento da chave após a chamada sob _meta["arcmira.com/rate_limit"] como { "limit": 20, "remaining": 17, "reset": 1788819360 }, lido dos cabeçalhos RateLimit da API, e _meta["arcmira.com/build"]: server, deploy, api (a build da API que respondeu) e client (o nome do host do seu handshake, encaminhado à API como x-arcmira-client).
Atualizando da 0.6.0
As dez ferramentas (resolve_entities, search_transcripts, list_mentions, entity_momentum, count_occurrences, list_episodes, list_sponsors, list_recommendations, index_status, get_transcript) sumiram de tools/list. Um host que armazenou em cache a lista antiga e chama uma recebe tool_retired, que nomeia describe. Cada ferramenta antiga é um método do cliente: resolve_entities é arcmira.resolve, search_transcripts é arcmira.search, list_mentions é arcmira.mentions, entity_momentum é arcmira.momentum, count_occurrences é arcmira.occurrences, list_episodes é arcmira.episodes, list_sponsors é arcmira.sponsors, list_recommendations é arcmira.recommendations, index_status é arcmira.status, get_transcript é arcmira.transcript. A abreviação recency virou arcmira.daysAgo(n).
Plugin
plugins/arcmira empacota a URL do MCP e seis habilidades para Claude Code, Codex, Cursor, hosts de Agent Plugins e Gemini CLI:
| Habilidade | Para |
|---|---|
arcmira | A referência do cliente: a regra de id, todo método, programas trabalhados |
sponsor-research | Quem patrocina um programa, ou quais programas uma marca patrocina, com que frequência, desde quando |
company-watch | O que os programas disseram sobre uma empresa esta semana: programas, contagens, momentum, citações |
find-quotes | Citações faladas exatas com falante, data, um link com timestamp, início e fim do clipe |
person-research | Preparação de entrevista ou reunião: aparições, as próprias palavras de uma pessoa, quem discute sobre ela |
compare-shows | Dois programas lado a lado: tamanho, tópicos, sobreposição, patrocinadores compartilhados |
Toda habilidade começa de nomes, nunca de ids: cada programa resolve o nome, retorna opções ask quando várias entidades se encaixam e nenhuma se destaca, diz quando assumiu uma, e nomeia a entidade que usou. As habilidades são geradas de src/reference.ts e src/skills.ts por scripts/build-skill.ts; CI falha quando um arquivo deriva ou um programa chama um método que a referência não documenta, e pnpm examples:check executa todo programa contra produção.
claude plugin marketplace add arcmira/mcp
claude plugin install arcmira@arcmira
Mantenha-se atualizado
Arcmira envia mudanças semanalmente. Mantenha a atualização automática ligada.
-
O servidor MCP não precisa de nada. Ele é remoto: hosts buscam suas ferramentas e instruções na conexão, e
describeretorna a referência do servidor em toda chamada, abrindo com uma linha de versão. O servidor MCP sozinho está sempre atualizado. -
Plugin Claude Code. A atualização automática está desligada por padrão para um marketplace de terceiros. Ligue-a: execute
/plugin, abra Marketplaces, escolhaarcmira, e selecione Enable auto-update. Ou defina em~/.claude/settings.json:{ "extraKnownMarketplaces": { "arcmira": { "source": { "source": "github", "repo": "arcmira/mcp" }, "autoUpdate": true } } }Atualizar agora:
claude plugin update arcmira@arcmira. -
Plugin Codex.
codex plugin marketplace upgrade arcmira, depois reinicie o Codex. -
Habilidades instaladas com
npx skills add arcmira/mcp.npx skills update.
Cada lançamento aumenta a versão em todo manifesto de plugin (um teste impõe isso), porque Claude Code só atualiza um plugin cuja versão mudou.
Desenvolver
pnpm install
pnpm dev # wrangler dev on :8790 with a local Worker Loader
pnpm test # node:test, sandbox programs run under a fake loader
pnpm typecheck
pnpm manifest:check # every client call matches the live OpenAPI document
pnpm skill:check # every plugins/arcmira/skills/*/SKILL.md matches src/reference.ts and src/skills.ts
ARCMIRA_KEY=arc_sk_... pnpm examples:check # every worked program and task-skill program runs against production
pnpm sandbox:check # src/sandbox/client-source.ts matches src/sandbox/client.js
ARCMIRA_KEY=arc_sk_... node --experimental-strip-types scripts/smoke.ts http://localhost:8790/mcp
src/reference.ts é a superfície de direção: o texto describe, as instruções do servidor e a habilidade do plugin vêm todos dela.
Copyright Arcmira. Todos os direitos reservados para o servidor (veja LICENSE); plugins/arcmira é Apache-2.0.